Spaces:
Paused
Paused
| import { beforeEach, describe, expect, it, vi } from "vitest"; | |
| import { probeIMessage } from "./probe.js"; | |
| const detectBinaryMock = vi.hoisted(() => vi.fn()); | |
| const runCommandWithTimeoutMock = vi.hoisted(() => vi.fn()); | |
| const createIMessageRpcClientMock = vi.hoisted(() => vi.fn()); | |
| vi.mock("../commands/onboard-helpers.js", () => ({ | |
| detectBinary: (...args: unknown[]) => detectBinaryMock(...args), | |
| })); | |
| vi.mock("../process/exec.js", () => ({ | |
| runCommandWithTimeout: (...args: unknown[]) => runCommandWithTimeoutMock(...args), | |
| })); | |
| vi.mock("./client.js", () => ({ | |
| createIMessageRpcClient: (...args: unknown[]) => createIMessageRpcClientMock(...args), | |
| })); | |
| beforeEach(() => { | |
| detectBinaryMock.mockReset().mockResolvedValue(true); | |
| runCommandWithTimeoutMock.mockReset().mockResolvedValue({ | |
| stdout: "", | |
| stderr: 'unknown command "rpc" for "imsg"', | |
| code: 1, | |
| signal: null, | |
| killed: false, | |
| }); | |
| createIMessageRpcClientMock.mockReset(); | |
| }); | |
| describe("probeIMessage", () => { | |
| it("marks unknown rpc subcommand as fatal", async () => { | |
| const result = await probeIMessage(1000, { cliPath: "imsg" }); | |
| expect(result.ok).toBe(false); | |
| expect(result.fatal).toBe(true); | |
| expect(result.error).toMatch(/rpc/i); | |
| expect(createIMessageRpcClientMock).not.toHaveBeenCalled(); | |
| }); | |
| }); | |