Fork Horse repository, listed by its owner. Publisher snapshot.
packages/forkhorse-gatekeeper/test/native-rpc-control.test.ts
Snapshot at 34e3175
1import { test } from "node:test";
2import assert from "node:assert/strict";
3import { Miniflare, convertV4MiniflareOptions } from "miniflare";
4
5// Same negative native-RPC control outside the Vitest Worker wrappers. Do not filter logs.
6test("standalone workerd returns a native target rejection, stays usable, and disposes", async () => {
7 const mf = new Miniflare(convertV4MiniflareOptions({ workers: [{ name: "control", modules: true, compatibilityDate: "2026-08-04", script: `
8 import { WorkerEntrypoint, RpcTarget } from "cloudflare:workers";
9 let disposals = 0;
10 class Target extends RpcTarget {
11 async reject() { throw new Error("Expected standalone diagnostic refusal"); }
12 async ping() { return "ready"; }
13 [Symbol.dispose]() { disposals++; }
14 }
15 export class Control extends WorkerEntrypoint {
16 async target() { return new Target(); }
17 async disposals() { return disposals; }
18 }
19 export default { async fetch(request, env, ctx) {
20 const service = ctx.exports.Control({});
21 const target = await service.target();
22 let refused = false;
23 try { await target.reject(); } catch (e) { refused = e.message.includes("Expected standalone diagnostic refusal"); }
24 const ping = await target.ping();
25 target[Symbol.dispose]();
26 return Response.json({ refused, ping, disposals: await service.disposals() });
27 } }` }] }));
28 try {
29 const response = await mf.dispatchFetch("http://fixture.idiot.tax/");
30 assert.deepEqual(await response.json(), { refused: true, ping: "ready", disposals: 1 });
31 } finally { await mf.dispose(); }
32});
33