/**
* cookie 属性の固定。
* ★expires / maxAge が付いていないこと★は CLAUDE.md §7(トークン期限の実装禁止)の
* 唯一の機械的な歯止めなので、消さないこと。
*/
import { describe, expect, it } from "vitest";
import {
SESSION_COOKIE_NAME,
SESSION_COOKIE_OPTIONS,
} from "@/lib/auth/cookie";
describe("dwatch_session cookie", () => {
it("名前は dwatch_session(redact.ts のマスキング対象と一致すること)", () => {
expect(SESSION_COOKIE_NAME).toBe("dwatch_session");
});
it("httpOnly / secure / sameSite=lax / path=/", () => {
expect(SESSION_COOKIE_OPTIONS.httpOnly).toBe(true);
expect(SESSION_COOKIE_OPTIONS.secure).toBe(true);
expect(SESSION_COOKIE_OPTIONS.sameSite).toBe("lax");
expect(SESSION_COOKIE_OPTIONS.path).toBe("/");
});
it("★expires / maxAge を持たないこと(CLAUDE.md §7 でトークン期限は禁止)★", () => {
expect(SESSION_COOKIE_OPTIONS).not.toHaveProperty("expires");
expect(SESSION_COOKIE_OPTIONS).not.toHaveProperty("maxAge");
expect(Object.keys(SESSION_COOKIE_OPTIONS).sort()).toEqual([
"httpOnly",
"path",
"sameSite",
"secure",
]);
});
});