Skip to content
File

Blob: tests/vitest/cloudflare.ts

typescript45 lines
1import path from "node:path";
2 
3import { cloudflareTest, readD1Migrations } from "@cloudflare/vitest-pool-workers";
4 
5const testSecrets = {
6 TESSERA_OIDC_CLIENT_ID: "dab-test",
7 TESSERA_OIDC_CLIENT_SECRET: "test-tessera-client-secret-deterministic",
8 DAB_SESSION_SECRET: "test-dab-session-secret-deterministic",
9} as const;
10 
11export function cloudflareWorkerPlugin() {
12 const oidcIssuer = process.env.DAB_TEST_OIDC_ISSUER;
13 if (!oidcIssuer) {
14 throw new Error("DAB_TEST_OIDC_ISSUER must be set by vitest.config.ts before creating the worker test pool.");
15 }
16 
17 for (const [key, value] of Object.entries(testSecrets)) {
18 process.env[key] ??= value;
19 }
20 
21 return cloudflareTest(async () => ({
22 main: "./src/worker/index.ts",
23 remoteBindings: false,
24 wrangler: { configPath: "./wrangler.jsonc" },
25 miniflare: {
26 bindings: {
27 LOG_LEVEL: "warn",
28 CONTROL_PLANE_HOST: "dav.example.com",
29 SUBJECT_HOST_SUFFIX: ".dav.example.com",
30 TESSERA_OIDC_ISSUER: oidcIssuer,
31 TEST_MIGRATIONS: await readD1Migrations(path.join(import.meta.dirname, "../../drizzle/d1")),
32 ...testSecrets,
33 MAX_FILE_BYTES: "100000000",
34 MAX_XML_BODY_BYTES: "1048576",
35 MAX_CALENDAR_OBJECT_BYTES: "1048576",
36 MAX_ADDRESS_OBJECT_BYTES: "1048576",
37 MAX_DAV_DEPTH_INFINITY_NODES: "10000",
38 MAX_REPORT_RESULTS: "5000",
39 MAX_RECURRENCE_YEARS: "5",
40 MAX_RECURRENCE_INSTANCES: "10000",
41 },
42 },
43 }));
44}