Newer
Older
client_dwatch / lib / auth / __tests__ / cookie.test.ts
/**
 * 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",
    ]);
  });
});