21 lines
1.1 KiB
JavaScript
21 lines
1.1 KiB
JavaScript
import { test } from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { sessionCookie, sessionMaxAge, SESSION_IDLE_SECONDS } from "../src/lib/session-cookie.ts";
|
|
|
|
test("session cookies respect backend remaining lifetime and a 30-day maximum", () => {
|
|
assert.equal(SESSION_IDLE_SECONDS, 2592000);
|
|
assert.equal(sessionMaxAge(2592000), 2592000);
|
|
assert.equal(sessionMaxAge("3600"), 3600);
|
|
assert.equal(sessionMaxAge(90 * 86400), 2592000);
|
|
assert.equal(sessionMaxAge(0), 0);
|
|
assert.equal(sessionMaxAge(-1), 2592000);
|
|
for (const invalid of [Infinity, "garbage", "1.5", NaN, {}, null]) assert.equal(sessionMaxAge(invalid), 2592000);
|
|
});
|
|
|
|
test("renewed cookies retain HttpOnly/SameSite and use the backend-capped deadline", () => {
|
|
const cookie = sessionCookie("session-token", 42, true);
|
|
assert.match(cookie, /Max-Age=42;/); assert.match(cookie, /HttpOnly/); assert.match(cookie, /SameSite=Lax/); assert.match(cookie, /; Secure$/);
|
|
assert(!sessionCookie("session-token", 1000, false).includes("Secure"));
|
|
assert.match(sessionCookie("session-token", 0, true), /Max-Age=0/);
|
|
});
|