From e377e82c3a40bf0dd68a0d722d89ccd1248d1414 Mon Sep 17 00:00:00 2001 From: razzanYoni <13521087@mahasiswa.itb.ac.id> Date: Tue, 14 Nov 2023 10:17:01 +0700 Subject: [PATCH] add unit testing --- test/auth.test.ts | 2 + test/premium-album.test.ts | 79 ++++++++++++++++++++++++++++++-------- test/test-util.ts | 10 ++++- 3 files changed, 74 insertions(+), 17 deletions(-) diff --git a/test/auth.test.ts b/test/auth.test.ts index c4979ca..58d65f4 100644 --- a/test/auth.test.ts +++ b/test/auth.test.ts @@ -44,5 +44,7 @@ describe("POST /api/login", () => { }); expect(result.status).toEqual(200); + expect(result.body.accessToken).toBeDefined(); + expect(result.header["set-cookie"][0]).toBeDefined(); }); }); \ No newline at end of file diff --git a/test/premium-album.test.ts b/test/premium-album.test.ts index 1f8e693..dc6afe1 100644 --- a/test/premium-album.test.ts +++ b/test/premium-album.test.ts @@ -1,49 +1,96 @@ import supertest from "supertest"; import { app } from "../src/cores/app"; import { - addManyPremiumAlbumTest, - deleteAllPremiumAlbumTest, + addManyPremiumAlbumTest, + deleteAllPremiumAlbumTest, + deleteUsersTest, } from "./test-util"; +const signup = async () => { +await supertest(app) + .post("/api/signup") + .send({ + username: "test", + password: "test", + }); +} + describe("POST /api/premium-album", () => { + beforeEach(async () => { + await signup(); + }); + afterEach(async () => { await deleteAllPremiumAlbumTest(); + await deleteUsersTest(); }); it("Should be able to create a new premium album.", async () => { + // login first + const loginResult = await supertest(app) + .post("/api/login") + .send({ + username: "test", + password: "test", + }); + + const token = loginResult.body.accessToken; + const fingerprintCookie = loginResult.header["set-cookie"][0]; + + // create new premium album const result = await supertest(app) - .post("/api/premium-album") - .send({ - albumName: "test", - releaseDate: new Date("2021-01-01"), - genre: "test", - artist: "test", - coverFilename: "test", - }); + .post("/api/premium-album") + .set("Authorization", `Bearer ${token}`) + .set("Cookie", fingerprintCookie) + .send({ + albumName: "test", + releaseDate: new Date("2021-01-01"), + genre: "test", + artist: "test", + coverFilename: "test", + }); + expect(result.status).toEqual(200); - expect(result.body.data.albumName).toBe("test"); - expect(result.body.data.artist).toBe("test"); - expect(result.body.data.releaseDate.toString()).toBe( + expect(result.body.albumName).toBe("test"); + expect(result.body.artist).toBe("test"); + expect(result.body.releaseDate.toString()).toBe( "2021-01-01T00:00:00.000Z", ); - expect(result.body.data.genre).toBe("test"); - expect(result.body.data.coverFilename).toBe("test"); + expect(result.body.genre).toBe("test"); + expect(result.body.coverFilename).toBe("test"); }); }); describe("GET /api/premium-albums", () => { beforeEach(async () => { + await signup(); await deleteAllPremiumAlbumTest(); await addManyPremiumAlbumTest(); }); afterEach(async () => { await deleteAllPremiumAlbumTest(); + await deleteUsersTest(); }); it("Should be able to get all premium albums.", async () => { - const result = await supertest(app).get("/api/premium-albums").query({ + // login first + const loginResult = await supertest(app) + .post("/api/login") + .send({ + username: "test", + password: "test", + }); + + const token = loginResult.body.accessToken; + const fingerprintCookie = loginResult.header["set-cookie"][0]; + + const result = await supertest(app) + .get("/api/premium-albums") + .set("Authorization", `Bearer ${token}`) + .set("Cookie", fingerprintCookie) + .query({ size: 10, page: 1, searchQuery: "", diff --git a/test/test-util.ts b/test/test-util.ts index 70dda70..10cc73f 100644 --- a/test/test-util.ts +++ b/test/test-util.ts @@ -20,4 +20,12 @@ export const addManyPremiumAlbumTest = async () => { } }); } -}; \ No newline at end of file +}; + +export const deleteUsersTest = async () => { + await prismaClient.user.delete({ + where: { + username: "test", + } + }) +} -- GitLab