From 3acf783d948ebb1907da875ef87b0da9ef2309ff Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Sun, 1 Jan 2023 23:23:57 +0100 Subject: Began adding tests --- test/root.js | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 test/root.js (limited to 'test/root.js') diff --git a/test/root.js b/test/root.js new file mode 100644 index 0000000..d5af081 --- /dev/null +++ b/test/root.js @@ -0,0 +1,91 @@ +import test from "ava"; +import supertest from "supertest"; + +import app from "../main.js"; + +const request = supertest(app); + +test("get / when not logged should redirect to /login", async function(t) { + await request.get("/") + .expect("Content-Type", /text\/plain/) + .expect(302, /Redirecting to \/login$/); + t.pass(); +}); +test("get /login when not logged in should display the login page", async function(t) { + await request.get("/login") + .expect("Content-Type", /text\/html/) + .expect(200, /
/); + t.pass(); +}); +test("get /logout when not logged in should redirect to the root", async function(t) { + await request.get("/logout") + .expect("Content-Type", /text\/plain/) + .expect(302, /Redirecting to \/$/); + t.pass(); +}); +test("post /login with valid credentials should set a cookie and redirect to the games list", async function(t) { + await request.post("/login") + .send("username=Alice&password=Alice42!") + .expect("Content-Type", /text\/plain/) + .expect("set-cookie", /JDMSessionId=/) + .expect(302, /Redirecting to \/games$/); + t.pass(); +}); +test("get / when logged in should redirect to the /games page", async function(t) { + const authResponse = await request.post("/login") + .send("username=Alice&password=Alice42!") + .expect("Content-Type", /text\/plain/) + .expect("set-cookie", /JDMSessionId=/) + .expect(302, /Redirecting to \/games$/); + let cookie = authResponse.get("Set-Cookie"); + await request.get("/") + .set("Cookie", cookie) + .expect("Content-Type", /text\/plain/) + .expect(302, /Redirecting to \/games$/); + t.pass(); +}); +test("get /login when already logged in should redirect to the games page", async function(t) { + const authResponse = await request.post("/login") + .send("username=Alice&password=Alice42!") + .expect("Content-Type", /text\/plain/) + .expect("set-cookie", /JDMSessionId=/) + .expect(302, /Redirecting to \/games$/); + let cookie = authResponse.get("Set-Cookie"); + await request.get("/login") + .set("Cookie", cookie) + .expect("Content-Type", /text\/plain/) + .expect(302, /Redirecting to \/games$/); + t.pass(); +}); +test("get /logout when logged in should delog and redirect to the root", async function(t) { + const authResponse = await request.post("/login") + .send("username=Alice&password=Alice42!") + .expect("Content-Type", /text\/plain/) + .expect("set-cookie", /JDMSessionId=/) + .expect(302, /Redirecting to \/games$/); + let cookie = authResponse.get("Set-Cookie"); + await request.get("/logout") + .set("cookie", cookie) + .expect("content-type", /text\/plain/) + .expect("set-cookie", /JDMSessionId=;/) + .expect(302, /Redirecting to \/$/); + t.pass(); +}); +test("get / with an now invalid cookie should redirect to the /login page", async function(t) { + const authResponse = await request.post("/login") + .send("username=Alice&password=Alice42!") + .expect("Content-Type", /text\/plain/) + .expect("set-cookie", /JDMSessionId=/) + .expect(302, /Redirecting to \/games$/); + let cookie = authResponse.get("Set-Cookie"); + await request.get("/logout") + .set("cookie", cookie) + .expect("content-type", /text\/plain/) + .expect("set-cookie", /JDMSessionId=;/) + .expect(302, /Redirecting to \/$/); + await request.get("/") + .set("Cookie", cookie) + .expect("Content-Type", /text\/plain/) + .expect(302, /Redirecting to \/login$/); + t.pass(); +}); -- cgit v1.2.3