|
1 | 1 | import { execSync } from "child_process";
|
2 | 2 | import { randomUUID } from "crypto";
|
3 |
| -import assert from "node:assert"; |
4 | 3 | 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"; |
6 | 6 | import { getPlatformProxy } from "wrangler";
|
7 | 7 |
|
8 | 8 | if (
|
|
13 | 13 | process.exit(0);
|
14 | 14 | }
|
15 | 15 |
|
16 |
| -describe("getPlatformProxy remote-bindings", () => { |
| 16 | +describe("getPlatformProxy - remote bindings", () => { |
17 | 17 | const remoteWorkerName = `tmp-e2e-worker-test-${randomUUID().split("-")[0]}`;
|
18 | 18 | const remoteKvName = `tmp-e2e-remote-kv-test-${randomUUID().split("-")[0]}`;
|
19 |
| - let remoteKvId; |
| 19 | + let remoteKvId = ""; |
20 | 20 |
|
21 |
| - before(async () => { |
| 21 | + beforeAll(async () => { |
22 | 22 | // Note: ideally we pass the auth data to `getPlatformProxy`, that currently is not
|
23 | 23 | // possible (DEVX-1857) so we need to make sure that the CLOUDFLARE_ACCOUNT_ID
|
24 | 24 | // and CLOUDFLARE_API_TOKEN env variables are set so that `getPlatformProxy`
|
@@ -47,12 +47,14 @@ describe("getPlatformProxy remote-bindings", () => {
|
47 | 47 | );
|
48 | 48 |
|
49 | 49 | const createdKvRegexMatch = `${kvAddOut}`.match(/"id": "(?<id>[^"]*?)"/);
|
50 |
| - remoteKvId = createdKvRegexMatch?.groups["id"]; |
| 50 | + const maybeRemoteKvId = createdKvRegexMatch?.groups?.["id"]; |
51 | 51 |
|
52 |
| - if (!remoteKvId) { |
| 52 | + if (!maybeRemoteKvId) { |
53 | 53 | throw new Error(`Failed to create remote kv ${remoteKvName}`);
|
54 | 54 | }
|
55 | 55 |
|
| 56 | + remoteKvId = maybeRemoteKvId; |
| 57 | + |
56 | 58 | execSync(
|
57 | 59 | `pnpm dlx wrangler kv key put test-key remote-kv-value --namespace-id=${remoteKvId} --remote`
|
58 | 60 | );
|
@@ -87,50 +89,56 @@ describe("getPlatformProxy remote-bindings", () => {
|
87 | 89 | ),
|
88 | 90 | "utf8"
|
89 | 91 | );
|
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); |
91 | 101 |
|
92 | 102 | 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 | + }>({ |
94 | 107 | configPath: "./.tmp/wrangler.json",
|
95 | 108 | experimental: { remoteBindings: true },
|
96 | 109 | });
|
97 | 110 |
|
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 | + ); |
103 | 117 |
|
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(); |
109 | 122 | });
|
110 | 123 |
|
111 | 124 | 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 | + }>({ |
113 | 129 | configPath: "./.tmp/wrangler.json",
|
114 | 130 | });
|
115 | 131 |
|
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 | + ); |
121 | 138 |
|
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); |
128 | 141 |
|
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(); |
135 | 143 | });
|
136 | 144 | });
|
0 commit comments