chore: align web provider logging and relay e2e

This commit is contained in:
Peter Steinberger
2025-11-25 04:15:20 +01:00
parent 39cd9bde1f
commit ca0b50d772
3 changed files with 48 additions and 4 deletions

44
src/cli/relay.e2e.test.ts Normal file
View File

@@ -0,0 +1,44 @@
import { describe, expect, it, vi, beforeEach } from "vitest";
// Mocks must be defined via vi.hoisted to avoid TDZ with ESM hoisting.
const { monitorWebProvider, pickProvider, logWebSelfId, monitorTwilio } =
vi.hoisted(() => {
return {
monitorWebProvider: vi.fn().mockResolvedValue(undefined),
pickProvider: vi.fn().mockResolvedValue("web"),
logWebSelfId: vi.fn(),
monitorTwilio: vi.fn().mockResolvedValue(undefined),
};
});
vi.mock("../provider-web.js", () => ({
monitorWebProvider,
pickProvider,
logWebSelfId,
}));
vi.mock("../twilio/monitor.js", () => ({
monitorTwilio,
}));
import { buildProgram } from "./program.js";
describe("CLI relay command (e2e-ish)", () => {
beforeEach(() => {
vi.clearAllMocks();
});
it("runs relay in web mode without crashing", async () => {
const program = buildProgram();
program.exitOverride(); // throw instead of exiting process on error
await expect(
program.parseAsync(["relay", "--provider", "web"], { from: "user" }),
).resolves.toBeInstanceOf(Object);
expect(pickProvider).toHaveBeenCalledWith("web");
expect(logWebSelfId).toHaveBeenCalledTimes(1);
expect(monitorWebProvider).toHaveBeenCalledWith(false);
expect(monitorTwilio).not.toHaveBeenCalled();
});
});

View File

@@ -184,10 +184,10 @@ describe("provider-web", () => {
exit: vi.fn(),
};
logWebSelfId(runtime as never);
logWebSelfId(runtime as never, true);
expect(runtime.log).toHaveBeenCalledWith(
expect.stringContaining("+12345"),
"Web Provider: +12345 (jid 12345@s.whatsapp.net)",
);
existsSpy.mockRestore();
readSpy.mockRestore();

View File

@@ -375,9 +375,9 @@ export function logWebSelfId(
? `${e164 ?? "unknown"}${jid ? ` (jid ${jid})` : ""}`
: "unknown";
const prefix = includeProviderPrefix
? "Provider: web (personal WhatsApp Web session) — "
? "Web Provider: "
: "";
runtime.log(info(`${prefix}Listening on web session: ${details}`));
runtime.log(info(`${prefix}${details}`));
}
export async function pickProvider(pref: Provider | "auto"): Promise<Provider> {