import { afterEach, describe, expect, it } from "vitest"; import { getAuthenticatedCachedEntryPath, getCachedMarriageEntryPath, MARRIAGE_ENTRY_PATH_COOKIE, normalizeCachedMarriageEntryPath, setCachedMarriageEntryPath, } from "./entry-route-cache"; describe("entry route cache", () => { afterEach(() => { document.cookie = `${MARRIAGE_ENTRY_PATH_COOKIE}=; Path=/; Max-Age=0`; }); it("accepts only known authenticated routes", () => { expect(normalizeCachedMarriageEntryPath("/questions-list")).toBe( "/questions-list", ); expect(normalizeCachedMarriageEntryPath("%2Ffinding-match")).toBe( "/finding-match", ); expect(normalizeCachedMarriageEntryPath("https://example.com")).toBeNull(); expect(normalizeCachedMarriageEntryPath("//example.com")).toBeNull(); expect(normalizeCachedMarriageEntryPath("/intro")).toBe("/intro"); expect(normalizeCachedMarriageEntryPath("/invalid-path")).toBeNull(); }); it("requires a real token before trusting the cached route", () => { expect( getAuthenticatedCachedEntryPath("token", "/questions-list"), ).toBe("/questions-list"); expect( getAuthenticatedCachedEntryPath("NO_TOKEN", "/questions-list"), ).toBeNull(); expect( getAuthenticatedCachedEntryPath("", "/questions-list"), ).toBeNull(); }); it("persists and clears a safe client entry route", () => { setCachedMarriageEntryPath("/questions-list"); expect(getCachedMarriageEntryPath()).toBe("/questions-list"); setCachedMarriageEntryPath(null); expect(getCachedMarriageEntryPath()).toBeNull(); }); });