


























@@ -77,13 +77,17 @@ describe("voice-call tunnels", () => {
77777878emitNgrokUrl(proc, "https://abc.ngrok.io");
797980-await expect(result).resolves.toMatchObject({
81-publicUrl: "https://abc.ngrok.io/voice/webhook",
82-provider: "ngrok",
83-});
84-expect(mocks.spawn).toHaveBeenCalledWith("ngrok", expect.arrayContaining(["http", "3334"]), {
85-stdio: ["ignore", "pipe", "pipe"],
86-});
80+const tunnel = await result;
81+expect(tunnel.publicUrl).toBe("https://abc.ngrok.io/voice/webhook");
82+expect(tunnel.provider).toBe("ngrok");
83+expect(tunnel.stop).toBeTypeOf("function");
84+expect(mocks.spawn).toHaveBeenCalledWith(
85+"ngrok",
86+["http", "3334", "--log", "stdout", "--log-format", "json"],
87+{
88+stdio: ["ignore", "pipe", "pipe"],
89+},
90+);
8791});
88928993it("sets ngrok auth token before starting the tunnel", async () => {
@@ -99,9 +103,9 @@ describe("voice-call tunnels", () => {
99103await vi.waitFor(() => expect(mocks.spawn).toHaveBeenCalledTimes(2));
100104emitNgrokUrl(tunnelProc, "https://auth.ngrok.io");
101105102-await expect(result).resolves.toMatchObject({
103- publicUrl: "https://auth.ngrok.io/hook",
104-});
106+const tunnel = await result;
107+expect(tunnel.publicUrl).toBe("https://auth.ngrok.io/hook");
108+expect(tunnel.provider).toBe("ngrok");
105109expect(mocks.spawn).toHaveBeenNthCalledWith(1, "ngrok", ["config", "add-authtoken", "token"], {
106110stdio: ["ignore", "pipe", "pipe"],
107111});
@@ -128,13 +132,20 @@ describe("voice-call tunnels", () => {
128132await vi.waitFor(() => expect(mocks.spawn).toHaveBeenCalled());
129133proc.close(0);
130134131-await expect(result).resolves.toMatchObject({
132- publicUrl: "https://host.tailnet.ts.net/voice/webhook",
133- provider: "tailscale-serve",
134-});
135+const tunnel = await result;
136+expect(tunnel.publicUrl).toBe("https://host.tailnet.ts.net/voice/webhook");
137+expect(tunnel.provider).toBe("tailscale-serve");
138+expect(tunnel.stop).toBeTypeOf("function");
135139expect(mocks.spawn).toHaveBeenCalledWith(
136140"tailscale",
137-expect.arrayContaining(["serve", "--set-path", "/voice/webhook"]),
141+[
142+"serve",
143+"--bg",
144+"--yes",
145+"--set-path",
146+"/voice/webhook",
147+"http://127.0.0.1:3334/voice/webhook",
148+],
138149{ stdio: ["ignore", "pipe", "pipe"] },
139150);
140151});
@@ -155,9 +166,8 @@ describe("voice-call tunnels", () => {
155166const result = startTunnel({ provider: "ngrok", port: 3334, path: "/hook" });
156167emitNgrokUrl(proc, "https://dispatch.ngrok.io");
157168158-await expect(result).resolves.toMatchObject({
159-publicUrl: "https://dispatch.ngrok.io/hook",
160-provider: "ngrok",
161-});
169+const tunnel = await result;
170+expect(tunnel?.publicUrl).toBe("https://dispatch.ngrok.io/hook");
171+expect(tunnel?.provider).toBe("ngrok");
162172});
163173});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。