|
|
@@ -1,6 +1,7 @@
|
|
|
/* @vitest-environment node */
|
|
|
|
|
|
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
|
+import { SignJWT } from "jose";
|
|
|
|
|
|
// Mock next/headers to provide a simple in-memory cookie store
|
|
|
vi.mock("next/headers", () => {
|
|
|
@@ -87,6 +88,7 @@ describe("auth session utilities", () => {
|
|
|
role: "admin",
|
|
|
branchId: null,
|
|
|
email: null,
|
|
|
+ mustChangePassword: false,
|
|
|
});
|
|
|
});
|
|
|
|
|
|
@@ -105,6 +107,61 @@ describe("auth session utilities", () => {
|
|
|
role: "branch",
|
|
|
branchId: "NL01",
|
|
|
email: "user@example.com",
|
|
|
+ mustChangePassword: false,
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ it("includes mustChangePassword=true only when explicitly set to true", async () => {
|
|
|
+ await createSession({
|
|
|
+ userId: "user-must",
|
|
|
+ role: "branch",
|
|
|
+ branchId: "NL01",
|
|
|
+ mustChangePassword: true,
|
|
|
+ });
|
|
|
+
|
|
|
+ const session = await getSession();
|
|
|
+
|
|
|
+ expect(session).toEqual({
|
|
|
+ userId: "user-must",
|
|
|
+ role: "branch",
|
|
|
+ branchId: "NL01",
|
|
|
+ email: null,
|
|
|
+ mustChangePassword: true,
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ it("defaults mustChangePassword=false for legacy payloads without the field", async () => {
|
|
|
+ const jwt = await new SignJWT({
|
|
|
+ userId: "legacy-user",
|
|
|
+ role: "admin",
|
|
|
+ branchId: null,
|
|
|
+ email: "legacy@example.com",
|
|
|
+ })
|
|
|
+ .setProtectedHeader({ alg: "HS256", typ: "JWT" })
|
|
|
+ .setIssuedAt()
|
|
|
+ .setExpirationTime(`${SESSION_MAX_AGE_SECONDS}s`)
|
|
|
+ .sign(new TextEncoder().encode(process.env.SESSION_SECRET));
|
|
|
+
|
|
|
+ const store = __cookieStore.dump();
|
|
|
+ store.set(SESSION_COOKIE_NAME, {
|
|
|
+ value: jwt,
|
|
|
+ options: {
|
|
|
+ httpOnly: true,
|
|
|
+ secure: false,
|
|
|
+ sameSite: "lax",
|
|
|
+ path: "/",
|
|
|
+ maxAge: SESSION_MAX_AGE_SECONDS,
|
|
|
+ },
|
|
|
+ });
|
|
|
+
|
|
|
+ const session = await getSession();
|
|
|
+
|
|
|
+ expect(session).toEqual({
|
|
|
+ userId: "legacy-user",
|
|
|
+ role: "admin",
|
|
|
+ branchId: null,
|
|
|
+ email: "legacy@example.com",
|
|
|
+ mustChangePassword: false,
|
|
|
});
|
|
|
});
|
|
|
|