Skip to content

Commit

Permalink
Add in some more critical tests
Browse files Browse the repository at this point in the history
  • Loading branch information
confused-Techie committed Nov 9, 2023
1 parent cc95221 commit 5248970
Show file tree
Hide file tree
Showing 2 changed files with 214 additions and 4 deletions.
129 changes: 129 additions & 0 deletions tests/http/deletePackagesPackageNameVersionsVersionName.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
const endpoint = require("../../src/controllers/deletePackagesPackageNameVersionsVersionName.js");
const database = require("../../src/database.js");
const context = require("../../src/context.js");

describe("DELETE /api/packages/:packageName/versions/:versionName", () => {
test("Fails with bad auth", async () => {
const localContext = context;
localContext.auth.verifyAuth = () => {
return {
ok: false,
short: "unauthorized",
content: "Bad Auth Mock Return"
};
};

const sso = await endpoint.logic({ versionName: "" }, localContext);

expect(sso.ok).toBe(false);
expect(sso.content.short).toBe("unauthorized");
});
test("Fails with not found with bad package", async () => {
const localContext = context;
localContext.auth.verifyAuth = () => {
return {
ok: true,
content: {
token: "valid-token",
id: 9999,
node_id: "dlt-pkg-ver-user-node-id",
username: "dlt-pkg-ver-user-node-id",
avatar: "https://roadtonowhere.com"
}
};
};

const sso = await endpoint.logic({
auth: "valid-token",
packageName: "no-exist",
versionName: "1.0.0"
}, localContext);

expect(sso.ok).toBe(false);
expect(sso.content.short).toBe("not_found");
});
test("Successfully deletes a package version", async () => {
await database.insertNewPackage({
name: "dlt-pkg-ver-by-name-test",
repository: {
url: "https://github.com/confused-Techie/package-backend",
type: "git"
},
creation_method: "Test Package",
releases: {
latest: "1.0.1"
},
readme: "This is a readme!",
metadata: { name: "dlt-pkg-ver-by-name-test" },
versions: {
"1.0.1": {
dist: {
tarball: "download-url",
sha: "1234"
},
name: "dlt-pkg-ver-by-name-test"
},
"1.0.0": {
dist: {
tarball: "download-url",
sha: "1234"
},
name: "dlt-pkg-ver-by-name-test"
}
}
});

let addUser = await database.insertNewUser(
"dlt-pkg-ver-test-user-node-id",
"dlt-pkg-ver-test-user-node-id",
"https://roadotonowhere.com"
);

expect(addUser.ok).toBe(true);

const localContext = context;
localContext.auth.verifyAuth = () => {
return {
ok: true,
content: {
token: "valid-token",
// The user data must match whats in the db
id: addUser.content.id,
node_id: addUser.content.node_id,
username: addUser.content.username,
avatar: addUser.content.avatar
}
};
};
localContext.vcs.ownership = () => {
return {
ok: true,
content: "admin"
};
};

const sso = await endpoint.logic({
auth: "valid-token",
packageName: "dlt-pkg-ver-by-name-test",
versionName: "1.0.1"
}, localContext);

expect(sso.ok).toBe(true);
expect(sso.content).toBe(false);

let currentPackageData = await database.getPackageByName("dlt-pkg-ver-by-name-test");

expect(currentPackageData.ok).toBe(true);

currentPackageData = await context.utils.constructPackageObjectFull(currentPackageData.content);

expect(currentPackageData.name).toBe("dlt-pkg-ver-by-name-test");
// Does it modify the latest package version
expect(currentPackageData.releases.latest).toBe("1.0.0");
expect(currentPackageData.versions["1.0.0"]).toBeTruthy();
expect(currentPackageData.versions["1.0.1"]).toBeFalsy();

// cleanup
await database.removePackageByName("dlt-pkg-ver-by-name-test", true);
});
});
89 changes: 85 additions & 4 deletions tests/http/postPackages.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,89 @@ describe("POST /api/packages Behaves as expected", () => {
await database.removePackageByName("post-packages-test-package", true);
});

// This is the fully migrated test set that we previously had
// But with the changes made we should now be able to properly test
// everything here.
test.todo("post Packages test that actually modify data");
test("Successfully publishes a new package", async () => {
let addUser = await database.insertNewUser(
"post-pkg-test-user-node-id",
"post-pkg-test-user-node-id",
"https://roadtonowhere.com"
);

expect(addUser.ok).toBe(true);

const localContext = context;
localContext.auth.verifyAuth = () => {
return {
ok: true,
content: {
token: "valid-token",
// The user data must match whats in the db
id: addUser.content.id,
node_id: addUser.content.node_id,
username: addUser.content.username,
avatar: addUser.content.avatar
}
};
};
localContext.vcs.ownership = () => {
return {
ok: true,
content: "admin"
};
};
localContext.vcs.newPackageData = () => {
return {
ok: true,
content: {
name: "post-pkg-test-pkg-name",
repository: {
url: "https://github.com/confused-Techie/package-backend",
type: "git"
},
downloads: 0,
stargazers_count: 0,
creation_method: "Test Package",
releases: {
latest: "1.0.0"
},
readme: "This is a readme!",
metadata: { name: "post-pkg-test-pkg-name" },
versions: {
"1.0.0": {
dist: {
tarball: "download-url",
sha: "1234"
},
name: "post-pkg-test-pkg-name"
}
}
}
};
};

const sso = await endpoint.logic({
repository: "confused-Techie/post-pkg-test-pkg-name",
auth: "valid-token"
}, localContext);

expect(sso.ok).toBe(true);
expect(sso.content.name).toBe("post-pkg-test-pkg-name");
expect(sso.content.releases.latest).toBe("1.0.0");

// Can we get the package by a specific version
let packByVer = await database.getPackageVersionByNameAndVersion(
"post-pkg-test-pkg-name",
"1.0.0"
);

expect(packByVer.ok).toBe(true);

packByVer = await context.utils.constructPackageObjectJSON(packByVer.content);

expect(packByVer.name).toBe("post-pkg-test-pkg-name");
expect(packByVer.dist.tarball).toContain("/api/packages/post-pkg-test-pkg-name/versions/1.0.0");

// Cleanup
await database.removePackageByName("post-pkg-test-pkg-name", true);
});

});

0 comments on commit 5248970

Please sign in to comment.