Skip to content

Commit adf8deb

Browse files
dario-piotrowiczemily-shen
authored andcommitted
update get-platform-proxy remote-bindings fixture to use vitest for consistency (#9868)
1 parent c1b65b4 commit adf8deb

File tree

6 files changed

+81
-60
lines changed

6 files changed

+81
-60
lines changed

fixtures/get-platform-proxy-remote-bindings-node-test/package.json

Lines changed: 0 additions & 19 deletions
This file was deleted.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"name": "@fixture/get-platform-proxy-remote-bindings",
3+
"private": true,
4+
"description": "A test for the getPlatformProxy utility used with remote bindings",
5+
"scripts": {
6+
"test:ci": "vitest run",
7+
"type:tests": "tsc --noEmit -p tests/tsconfig.json"
8+
},
9+
"devDependencies": {
10+
"@cloudflare/workers-tsconfig": "workspace:*",
11+
"@cloudflare/workers-types": "^4.20250617.0",
12+
"typescript": "catalog:default",
13+
"vitest": "catalog:default",
14+
"wrangler": "workspace:*"
15+
},
16+
"volta": {
17+
"extends": "../../package.json"
18+
}
19+
}

fixtures/get-platform-proxy-remote-bindings-node-test/index.test.js renamed to fixtures/get-platform-proxy-remote-bindings/tests/index.test.ts

Lines changed: 45 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { execSync } from "child_process";
22
import { randomUUID } from "crypto";
3-
import assert from "node:assert";
43
import { mkdirSync, rmSync, writeFileSync } from "node:fs";
5-
import test, { after, before, describe } from "node:test";
4+
import { Fetcher, KVNamespace } from "@cloudflare/workers-types/experimental";
5+
import { afterAll, beforeAll, describe, expect, test } from "vitest";
66
import { getPlatformProxy } from "wrangler";
77

88
if (
@@ -13,12 +13,12 @@ if (
1313
process.exit(0);
1414
}
1515

16-
describe("getPlatformProxy remote-bindings", () => {
16+
describe("getPlatformProxy - remote bindings", () => {
1717
const remoteWorkerName = `tmp-e2e-worker-test-${randomUUID().split("-")[0]}`;
1818
const remoteKvName = `tmp-e2e-remote-kv-test-${randomUUID().split("-")[0]}`;
19-
let remoteKvId;
19+
let remoteKvId = "";
2020

21-
before(async () => {
21+
beforeAll(async () => {
2222
// Note: ideally we pass the auth data to `getPlatformProxy`, that currently is not
2323
// possible (DEVX-1857) so we need to make sure that the CLOUDFLARE_ACCOUNT_ID
2424
// and CLOUDFLARE_API_TOKEN env variables are set so that `getPlatformProxy`
@@ -47,12 +47,14 @@ describe("getPlatformProxy remote-bindings", () => {
4747
);
4848

4949
const createdKvRegexMatch = `${kvAddOut}`.match(/"id": "(?<id>[^"]*?)"/);
50-
remoteKvId = createdKvRegexMatch?.groups["id"];
50+
const maybeRemoteKvId = createdKvRegexMatch?.groups?.["id"];
5151

52-
if (!remoteKvId) {
52+
if (!maybeRemoteKvId) {
5353
throw new Error(`Failed to create remote kv ${remoteKvName}`);
5454
}
5555

56+
remoteKvId = maybeRemoteKvId;
57+
5658
execSync(
5759
`pnpm dlx wrangler kv key put test-key remote-kv-value --namespace-id=${remoteKvId} --remote`
5860
);
@@ -87,50 +89,56 @@ describe("getPlatformProxy remote-bindings", () => {
8789
),
8890
"utf8"
8991
);
90-
});
92+
}, 25_000);
93+
94+
afterAll(async () => {
95+
execSync(`pnpm dlx wrangler delete --name ${remoteWorkerName}`);
96+
execSync(
97+
`pnpm dlx wrangler kv namespace delete --namespace-id=${remoteKvId}`
98+
);
99+
rmSync("./.tmp", { recursive: true, force: true });
100+
}, 25_000);
91101

92102
test("getPlatformProxy works with remote bindings", async () => {
93-
const { env, dispose } = await getPlatformProxy({
103+
const { env, dispose } = await getPlatformProxy<{
104+
MY_WORKER: Fetcher;
105+
MY_KV: KVNamespace;
106+
}>({
94107
configPath: "./.tmp/wrangler.json",
95108
experimental: { remoteBindings: true },
96109
});
97110

98-
try {
99-
assert.strictEqual(
100-
await (await env.MY_WORKER.fetch("http://example.com")).text(),
101-
"Hello from a remote Worker part of the getPlatformProxy remote bindings fixture!"
102-
);
111+
const workerText = await (
112+
await env.MY_WORKER.fetch("http://example.com")
113+
).text();
114+
expect(workerText).toEqual(
115+
"Hello from a remote Worker part of the getPlatformProxy remote bindings fixture!"
116+
);
103117

104-
const kvValue = await env.MY_KV.get("test-key");
105-
assert.strictEqual(kvValue, "remote-kv-value");
106-
} finally {
107-
await dispose();
108-
}
118+
const kvValue = await env.MY_KV.get("test-key");
119+
expect(kvValue).toEqual("remote-kv-value");
120+
121+
await dispose();
109122
});
110123

111124
test("getPlatformProxy does not work with remote bindings if the experimental remoteBindings flag is not turned on", async () => {
112-
const { env, dispose } = await getPlatformProxy({
125+
const { env, dispose } = await getPlatformProxy<{
126+
MY_WORKER: Fetcher;
127+
MY_KV: KVNamespace;
128+
}>({
113129
configPath: "./.tmp/wrangler.json",
114130
});
115131

116-
try {
117-
assert.strictEqual(
118-
await (await env.MY_WORKER.fetch("http://example.com")).text(),
119-
`[wrangler] Couldn\'t find \`wrangler dev\` session for service "${remoteWorkerName}" to proxy to`
120-
);
132+
const workerText = await (
133+
await env.MY_WORKER.fetch("http://example.com")
134+
).text();
135+
expect(workerText).toEqual(
136+
`[wrangler] Couldn\'t find \`wrangler dev\` session for service "${remoteWorkerName}" to proxy to`
137+
);
121138

122-
const kvValue = await env.MY_KV.get("test-key");
123-
assert.strictEqual(kvValue, null);
124-
} finally {
125-
await dispose();
126-
}
127-
});
139+
const kvValue = await env.MY_KV.get("test-key");
140+
expect(kvValue).toEqual(null);
128141

129-
after(async () => {
130-
execSync(`pnpm dlx wrangler delete --name ${remoteWorkerName}`);
131-
execSync(
132-
`pnpm dlx wrangler kv namespace delete --namespace-id=${remoteKvId}`
133-
);
134-
rmSync("./.tmp", { recursive: true, force: true });
142+
await dispose();
135143
});
136144
});
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"extends": "@cloudflare/workers-tsconfig/tsconfig.json",
3+
"compilerOptions": {
4+
"types": ["node"]
5+
},
6+
"include": ["*.ts"]
7+
}

pnpm-lock.yaml

Lines changed: 10 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)