/* Unit tests for cloudflare workers covering its documented public contract and regression-sensitive edge cases. Not a contract source of truth — the module under test owns the authoritative behavior; fixtures are minimal scaffolding only. RFC-0595: initial verifyRedirectRoute and multi-hop tests. */ import { test, expect } from "vitest"; import { verifyRedirectRoute } from "./cloudflare-workers.ts"; import type { RouteFact } from "@warpgogol/werkstatt-engine/schemas"; test("verifyRedirectRoute: 307 with matching Location passes", () => { const route: RouteFact = { path: "/de", contentHash: null, redirectTarget: "/" }; const result = verifyRedirectRoute(307, "/", route); expect(result.passed).toBe(true); expect(result.detail).toBe("Redirect 307 → /"); }); test("verifyRedirectRoute: 308 with matching Location passes", () => { const route: RouteFact = { path: "/old", contentHash: null, redirectTarget: "/new" }; const result = verifyRedirectRoute(308, "/new", route); expect(result.passed).toBe(true); }); test("verifyRedirectRoute: 200 fails (expected redirect status)", () => { const route: RouteFact = { path: "/de", contentHash: null, redirectTarget: "/" }; const result = verifyRedirectRoute(200, "", route); expect(result.passed).toBe(false); expect(result.detail).toBe("Expected redirect status (307/308), got 200"); }); test("verifyRedirectRoute: 307 with mismatched Location fails", () => { const route: RouteFact = { path: "/de", contentHash: null, redirectTarget: "/" }; const result = verifyRedirectRoute(307, "/en", route); expect(result.passed).toBe(false); expect(result.detail).toContain("Location mismatch"); expect(result.detail).toContain("got /en"); expect(result.detail).toContain("expected /"); }); test("verifyRedirectRoute: 307 with unknown target passes (status-only check)", () => { const route: RouteFact = { path: "/de", contentHash: null, redirectTarget: "unknown" }; const result = verifyRedirectRoute(307, "/anywhere", route); expect(result.passed).toBe(true); }); test("verifyRedirectRoute: 307 with no redirectTarget passes (status-only check)", () => { const route: RouteFact = { path: "/de", contentHash: null }; const result = verifyRedirectRoute(308, "/somewhere", route); expect(result.passed).toBe(true); }); test("verifyRedirectRoute: 404 fails (not a redirect status)", () => { const route: RouteFact = { path: "/de", contentHash: null, redirectTarget: "/" }; const result = verifyRedirectRoute(404, "", route); expect(result.passed).toBe(false); expect(result.detail).toBe("Expected redirect status (307/308), got 404"); }); test("verifyRedirectRoute: 301 fails (only 307/308 accepted, not 301)", () => { const route: RouteFact = { path: "/de", contentHash: null, redirectTarget: "/" }; const result = verifyRedirectRoute(301, "/", route); expect(result.passed).toBe(false); expect(result.detail).toBe("Expected redirect status (307/308), got 301"); });