import { expect, test } from "bun:test"; import { createContext, withContextHeaders } from "../src/index.ts"; test("transaction cookies preserve policy when consumed and delete exactly once", () => { const firstRequest = new Request("https://example.test/oauth"); const first = createContext(firstRequest, new URL(firstRequest.url)); first.cookies.transaction<{ state: string }>("oauth").set({ state: "välue" }); const issued = withContextHeaders(first, new Response()).headers.get("set-cookie")!; expect(issued).toContain("HttpOnly"); expect(issued).toContain("SameSite=Lax"); expect(issued).toContain("Secure"); const pair = issued.split(";", 1)[0]!; const callbackRequest = new Request("https://example.test/callback", { headers: { cookie: pair }, }); const callback = createContext(callbackRequest, new URL(callbackRequest.url)); expect(callback.cookies.transaction<{ state: string }>("oauth").consume()).toEqual({ state: "välue", }); const consumed = withContextHeaders(callback, new Response()).headers.get("set-cookie")!; expect(consumed).toContain("Max-Age=0"); expect(consumed).toContain("Path=/"); });