const { test } = require("node:test"); const assert = require("node:assert"); const { verifyMasterKey, createSessionToken, createTempKey, verifySessionToken, buildSessionCookieHeader, parseCookies, SESSION_COOKIE_NAME } = require("../src/adminAuth"); test("verifyMasterKey returns true only for the exact configured key", () => { assert.strictEqual(verifyMasterKey("correct", "correct"), true); assert.strictEqual(verifyMasterKey("wrong", "correct"), false); }); test("createSessionToken then verifySessionToken succeeds within TTL", () => { const now = new Date("2026-08-24T00:00:00.000Z").getTime(); const token = createSessionToken("secret", now); assert.strictEqual(verifySessionToken(token, "secret", now + 1000), true); }); test("verifySessionToken fails after the session TTL has elapsed", () => { const now = new Date("2026-08-24T00:00:00.000Z").getTime(); const token = createSessionToken("secret", now); assert.strictEqual(verifySessionToken(token, "secret", now + 25 * 60 * 60 * 1000), false); }); test("createTempKey then verifySessionToken succeeds within the 60-minute temp TTL", () => { const now = new Date("2026-08-24T00:00:00.000Z").getTime(); const token = createTempKey("secret", now); assert.strictEqual(verifySessionToken(token, "secret", now + 59 * 60 * 1000), true); }); test("verifySessionToken rejects a temp key after 60 minutes have elapsed", () => { const now = new Date("2026-08-24T00:00:00.000Z").getTime(); const token = createTempKey("secret", now); assert.strictEqual(verifySessionToken(token, "secret", now + 61 * 60 * 1000), false); }); test("buildSessionCookieHeader scopes the cookie to /auth", () => { const header = buildSessionCookieHeader("tok"); assert.ok(header.includes("Path=/auth")); assert.ok(header.startsWith(`${SESSION_COOKIE_NAME}=`)); }); test("buildSessionCookieHeader supports a custom Max-Age (for temp keys)", () => { const header = buildSessionCookieHeader("tok", 3600 * 1000); assert.ok(header.includes("Max-Age=3600")); }); test("parseCookies parses a raw Cookie header into a key-value map", () => { assert.deepStrictEqual(parseCookies(`${SESSION_COOKIE_NAME}=abc; other=1`), { [SESSION_COOKIE_NAME]: "abc", other: "1" }); });