import path from "node:path"; import { cloudflareTest, readD1Migrations } from "@cloudflare/vitest-pool-workers"; const testSecrets = { TESSERA_OIDC_CLIENT_ID: "dab-test", TESSERA_OIDC_CLIENT_SECRET: "test-tessera-client-secret-deterministic", DAB_SESSION_SECRET: "test-dab-session-secret-deterministic", } as const; export function cloudflareWorkerPlugin() { const oidcIssuer = process.env.DAB_TEST_OIDC_ISSUER; if (!oidcIssuer) { throw new Error("DAB_TEST_OIDC_ISSUER must be set by vitest.config.ts before creating the worker test pool."); } for (const [key, value] of Object.entries(testSecrets)) { process.env[key] ??= value; } return cloudflareTest(async () => ({ main: "./src/worker/index.ts", remoteBindings: false, wrangler: { configPath: "./wrangler.jsonc" }, miniflare: { bindings: { LOG_LEVEL: "warn", CONTROL_PLANE_HOST: "dav.example.com", SUBJECT_HOST_SUFFIX: ".dav.example.com", TESSERA_OIDC_ISSUER: oidcIssuer, TEST_MIGRATIONS: await readD1Migrations(path.join(import.meta.dirname, "../../drizzle/d1")), ...testSecrets, MAX_FILE_BYTES: "100000000", MAX_XML_BODY_BYTES: "1048576", MAX_CALENDAR_OBJECT_BYTES: "1048576", MAX_ADDRESS_OBJECT_BYTES: "1048576", MAX_DAV_DEPTH_INFINITY_NODES: "10000", MAX_REPORT_RESULTS: "5000", MAX_RECURRENCE_YEARS: "5", MAX_RECURRENCE_INSTANCES: "10000", }, }, })); }