/**
 * 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",
    ]);
  });
});
