more tests

This commit is contained in:
subnub
2025-02-22 10:43:27 -05:00
parent b4cd0825d0
commit 4593acc6d6
2 changed files with 433 additions and 61 deletions
+197 -25
View File
@@ -11,8 +11,11 @@ const { ObjectId } = require("mongodb");
let mongoServer;
let authToken;
let authToken2;
let folder;
let folder2;
let user;
let user2;
describe("File Controller", () => {
beforeAll(async () => {
@@ -28,9 +31,21 @@ describe("File Controller", () => {
})
.set("uuid", 12314123123);
user2 = await request(app)
.post("/user-service/create")
.send({
email: "test@test2.com",
password: "test1234",
})
.set("uuid", 12314123124);
authToken = user.headers["set-cookie"]
.map((cookie) => cookie.split(";")[0])
.join("; ");
authToken2 = user2.headers["set-cookie"]
.map((cookie) => cookie.split(";")[0])
.join("; ");
});
beforeEach(async () => {
@@ -45,8 +60,19 @@ describe("File Controller", () => {
parent: "/",
});
const folderResponse2 = await request(app)
.post("/folder-service/create")
.set("Cookie", authToken2)
.send({
name: "test",
parent: "/",
});
expect(folderResponse.status).toBe(201);
folder = folderResponse.body;
expect(folderResponse2.status).toBe(201);
folder2 = folderResponse2.body;
});
afterAll(async () => {
@@ -63,6 +89,14 @@ describe("File Controller", () => {
expect(folderResponse.status).toBe(200);
expect(folderResponse.body.name).toBe(folder.name);
});
test("Should return user 2's folder info", async () => {
const folderResponse = await request(app)
.get(`/folder-service/info/${folder2._id}`)
.set("Cookie", authToken2);
expect(folderResponse.status).toBe(200);
expect(folderResponse.body.name).toBe(folder2.name);
});
test("Should return 404 if folder not found", async () => {
const folderResponse = await request(app)
.get(`/folder-service/info/5f7e5d8d1f962d5a0f5e8a9e`)
@@ -78,37 +112,14 @@ describe("File Controller", () => {
expect(folderResponse.status).toBe(401);
});
test("Should return 401/404 if not owner of folder", async () => {
const user2 = await request(app)
.post("/user-service/create")
.send({
email: "test4@test.com",
password: "test1234",
})
.set("uuid", 12314123123);
expect(user2.status).toBe(201);
const authToken2 = user2.headers["set-cookie"]
.map((cookie) => cookie.split(";")[0])
.join("; ");
const folderCreateResponse = await request(app)
.post(`/folder-service/create`)
.set("Cookie", authToken2)
.send({
name: "test",
parent: "/",
});
expect(folderCreateResponse.status).toBe(201);
const folderResponse = await request(app)
.get(`/folder-service/info/${folderCreateResponse.body._id}`)
.get(`/folder-service/info/${folder2._id}`)
.set("Cookie", authToken);
expect([401, 404]).toContain(folderResponse.status);
});
});
describe("Create folder: POST /folder-service/create", () => {
test("Should create folder", async () => {
const folderResponse = await request(app)
@@ -159,5 +170,166 @@ describe("File Controller", () => {
expect(folderResponse.status).toBe(400);
});
test("Should return 400 if title length is greater than 256", async () => {
const folderResponse = await request(app)
.post(`/folder-service/create`)
.set("Cookie", authToken)
.send({
name: "a" * 257,
parent: "/",
});
expect(folderResponse.status).toBe(400);
});
test("Should default parent to / if not provided", async () => {
const folderResponse = await request(app)
.post(`/folder-service/create`)
.set("Cookie", authToken)
.send({
name: "test",
});
expect(folderResponse.status).toBe(201);
const folderDbCheck = await mongoose.model("Folder").findOne({
_id: folderResponse.body._id,
});
expect(folderDbCheck.name).toBe(folderResponse.body.name);
expect(folderDbCheck.parent).toBe("/");
});
test("Should correctly create nested folder", async () => {
const folderResponse = await request(app)
.post(`/folder-service/create`)
.set("Cookie", authToken)
.send({
name: "test",
parent: folder._id,
});
expect(folderResponse.status).toBe(201);
const folderDbCheck = await mongoose.model("Folder").findOne({
_id: folderResponse.body._id,
});
expect(folderDbCheck.name).toBe(folderResponse.body.name);
expect(folderDbCheck.parent).toBe(folder._id);
expect(folderDbCheck.parentList.length).toBe(2);
expect(folderDbCheck.parentList[0]).toBe("/");
expect(folderDbCheck.parentList[1]).toBe(folder._id);
});
});
describe("Rename folder: PATCH /folder-service/rename", () => {
test("Should rename folder", async () => {
const folderResponse = await request(app)
.patch(`/folder-service/rename`)
.set("Cookie", authToken)
.send({
id: folder._id,
title: "newname.txt",
});
expect(folderResponse.status).toBe(200);
const folderDbCheck = await mongoose.model("Folder").findOne({
_id: folder._id,
});
expect(folderDbCheck.name).toBe("newname.txt");
});
test("Should rename user 2's folder", async () => {
const folderResponse = await request(app)
.patch(`/folder-service/rename`)
.set("Cookie", authToken2)
.send({
id: folder2._id,
title: "newname.txt",
});
expect(folderResponse.status).toBe(200);
const folderDbCheck = await mongoose.model("Folder").findOne({
_id: folder2._id,
});
expect(folderDbCheck.name).toBe("newname.txt");
});
test("Should return 404 if folder not found", async () => {
const folderResponse = await request(app)
.patch(`/folder-service/rename`)
.set("Cookie", authToken)
.send({
id: "5f7e5d8d1f962d5a0f5e8a9e",
title: "newname.txt",
});
expect(folderResponse.status).toBe(404);
});
test("Should return 401 if not authorized", async () => {
const folderResponse = await request(app)
.patch(`/folder-service/rename`)
.set("Cookie", "access-token=test")
.send({
id: folder._id,
title: "newname.txt",
});
expect(folderResponse.status).toBe(401);
});
test("Should return 401/404 if not owner of folder", async () => {
const folderResponse = await request(app)
.patch(`/folder-service/rename`)
.set("Cookie", authToken)
.send({
id: folder2._id,
title: "newname.txt",
});
expect([401, 404]).toContain(folderResponse.status);
});
test("Should return 400 if no title", async () => {
const folderResponse = await request(app)
.patch(`/folder-service/rename`)
.set("Cookie", authToken)
.send({
id: folder._id,
});
expect(folderResponse.status).toBe(400);
});
test("Should return 400 if title length is less than 1", async () => {
const folderResponse = await request(app)
.patch(`/folder-service/rename`)
.set("Cookie", authToken)
.send({
id: folder._id,
title: "",
});
expect(folderResponse.status).toBe(400);
});
test("Should return 400 if title length is greater than 256", async () => {
const folderResponse = await request(app)
.patch(`/folder-service/rename`)
.set("Cookie", authToken)
.send({
id: folder._id,
title: "a" * 257,
});
expect(folderResponse.status).toBe(400);
});
test("Should return 400 if no id", async () => {
const folderResponse = await request(app)
.patch(`/folder-service/rename`)
.set("Cookie", authToken)
.send({
title: "newname.txt",
});
expect(folderResponse.status).toBe(400);
});
});
});