Skip to content

Commit fb84eaa

Browse files
authored
Add tests for denying access to .dev.vars in subdirectories (#9725)
1 parent f6c8930 commit fb84eaa

File tree

9 files changed

+54
-10
lines changed

9 files changed

+54
-10
lines changed

packages/vite-plugin-cloudflare/playground/sensitive-files/__tests__/sensitive-files.spec.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,16 @@ describe.skipIf(isBuild)("denies access to sensitive files in dev", () => {
2222
expect(response.status()).toBe(403);
2323
});
2424

25+
test("denies access to .dev.vars in subdirectory", async () => {
26+
const response = await getResponse("/worker-b/.dev.vars");
27+
expect(response.status()).toBe(403);
28+
});
29+
30+
test("denies access to .dev.vars.* in subdirectory", async () => {
31+
const response = await getResponse("/worker-b/.dev.vars.staging");
32+
expect(response.status()).toBe(403);
33+
});
34+
2535
test("denies access to custom-sensitive-file", async () => {
2636
const response = await getResponse("/custom-sensitive-file");
2737
expect(response.status()).toBe(403);
@@ -31,26 +41,26 @@ describe.skipIf(isBuild)("denies access to sensitive files in dev", () => {
3141
describe.runIf(isBuild)("doesn't serve sensitive files in preview", () => {
3242
test("doesn't serve .env", async () => {
3343
const response = await getTextResponse("/.env");
34-
expect(response).toBe("Worker response");
44+
expect(response).toBe("Worker A response");
3545
});
3646

3747
test("doesn't serve .env.*", async () => {
3848
const response = await getTextResponse("/.env.staging");
39-
expect(response).toBe("Worker response");
49+
expect(response).toBe("Worker A response");
4050
});
4151

4252
test("doesn't serve .dev.vars", async () => {
4353
const response = await getTextResponse("/.dev.vars");
44-
expect(response).toBe("Worker response");
54+
expect(response).toBe("Worker A response");
4555
});
4656

4757
test("doesn't serve .dev.vars.*", async () => {
4858
const response = await getTextResponse("/.dev.vars.staging");
49-
expect(response).toBe("Worker response");
59+
expect(response).toBe("Worker A response");
5060
});
5161

5262
test("doesn't serve custom-sensitive-file", async () => {
5363
const response = await getTextResponse("/custom-sensitive-file");
54-
expect(response).toBe("Worker response");
64+
expect(response).toBe("Worker A response");
5565
});
5666
});
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
22
"extends": ["@cloudflare/workers-tsconfig/worker.json"],
3-
"include": ["src"]
3+
"include": ["worker-a", "worker-b"]
44
}

packages/vite-plugin-cloudflare/playground/sensitive-files/vite.config.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,11 @@ export default defineConfig({
77
deny: ["custom-sensitive-file"],
88
},
99
},
10-
plugins: [cloudflare({ inspectorPort: false, persistState: false })],
10+
plugins: [
11+
cloudflare({
12+
inspectorPort: false,
13+
persistState: false,
14+
auxiliaryWorkers: [{ configPath: "./worker-b/wrangler.jsonc" }],
15+
}),
16+
],
1117
});
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
interface Env {
2+
WORKER_B: Fetcher;
3+
}
4+
5+
export default {
6+
async fetch(request, env) {
7+
const url = new URL(request.url);
8+
9+
if (url.pathname === "/worker-b") {
10+
return env.WORKER_B.fetch(request);
11+
}
12+
13+
return new Response("Worker A response");
14+
},
15+
} satisfies ExportedHandler<Env>;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
DEV_VAR=dev-var
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
STAGING_DEV_VAR=staging-dev-var
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export default {
22
async fetch() {
3-
return new Response("Worker response");
3+
return new Response("Worker B response");
44
},
55
} satisfies ExportedHandler;
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"name": "worker-b",
3+
"main": "./index.ts",
4+
"compatibility_date": "2024-12-30",
5+
}
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
{
2-
"name": "worker",
3-
"main": "./src/index.ts",
2+
"name": "worker-a",
3+
"main": "./worker-a/index.ts",
44
"compatibility_date": "2024-12-30",
5+
"services": [
6+
{
7+
"binding": "WORKER_B",
8+
"service": "worker-b",
9+
},
10+
],
511
}

0 commit comments

Comments
 (0)