chore: align web provider logging and relay e2e
This commit is contained in:
44
src/cli/relay.e2e.test.ts
Normal file
44
src/cli/relay.e2e.test.ts
Normal 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();
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -184,10 +184,10 @@ describe("provider-web", () => {
|
|||||||
exit: vi.fn(),
|
exit: vi.fn(),
|
||||||
};
|
};
|
||||||
|
|
||||||
logWebSelfId(runtime as never);
|
logWebSelfId(runtime as never, true);
|
||||||
|
|
||||||
expect(runtime.log).toHaveBeenCalledWith(
|
expect(runtime.log).toHaveBeenCalledWith(
|
||||||
expect.stringContaining("+12345"),
|
"Web Provider: +12345 (jid 12345@s.whatsapp.net)",
|
||||||
);
|
);
|
||||||
existsSpy.mockRestore();
|
existsSpy.mockRestore();
|
||||||
readSpy.mockRestore();
|
readSpy.mockRestore();
|
||||||
|
|||||||
@@ -375,9 +375,9 @@ export function logWebSelfId(
|
|||||||
? `${e164 ?? "unknown"}${jid ? ` (jid ${jid})` : ""}`
|
? `${e164 ?? "unknown"}${jid ? ` (jid ${jid})` : ""}`
|
||||||
: "unknown";
|
: "unknown";
|
||||||
const prefix = includeProviderPrefix
|
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> {
|
export async function pickProvider(pref: Provider | "auto"): Promise<Provider> {
|
||||||
|
|||||||
Reference in New Issue
Block a user