Fork Horse repository, listed by its owner. Publisher snapshot.

packages/forkhorse-gatekeeper/test/native-rpc-control.test.ts

Snapshot at 34e3175

Containing directory

1,615 bytes · typescriptView raw
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