63 lines
2.0 KiB
TypeScript
63 lines
2.0 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
import * as clientModule from "./client.js";
|
|
import { classifySignalCliLogLine } from "./daemon.js";
|
|
import { probeSignal } from "./probe.js";
|
|
|
|
describe("probeSignal", () => {
|
|
beforeEach(() => {
|
|
vi.restoreAllMocks();
|
|
});
|
|
|
|
it("extracts version from {version} result", async () => {
|
|
vi.spyOn(clientModule, "signalCheck").mockResolvedValueOnce({
|
|
ok: true,
|
|
status: 200,
|
|
error: null,
|
|
});
|
|
vi.spyOn(clientModule, "signalRpcRequest").mockResolvedValueOnce({ version: "0.13.22" });
|
|
|
|
const res = await probeSignal("http://127.0.0.1:8080", 1000);
|
|
|
|
expect(res.ok).toBe(true);
|
|
expect(res.version).toBe("0.13.22");
|
|
expect(res.status).toBe(200);
|
|
});
|
|
|
|
it("returns ok=false when /check fails", async () => {
|
|
vi.spyOn(clientModule, "signalCheck").mockResolvedValueOnce({
|
|
ok: false,
|
|
status: 503,
|
|
error: "HTTP 503",
|
|
});
|
|
|
|
const res = await probeSignal("http://127.0.0.1:8080", 1000);
|
|
|
|
expect(res.ok).toBe(false);
|
|
expect(res.status).toBe(503);
|
|
expect(res.version).toBe(null);
|
|
});
|
|
});
|
|
|
|
describe("classifySignalCliLogLine", () => {
|
|
it("treats INFO/DEBUG as log (even if emitted on stderr)", () => {
|
|
expect(classifySignalCliLogLine("INFO DaemonCommand - Started")).toBe("log");
|
|
expect(classifySignalCliLogLine("DEBUG Something")).toBe("log");
|
|
});
|
|
|
|
it("treats WARN/ERROR as error", () => {
|
|
expect(classifySignalCliLogLine("WARN Something")).toBe("error");
|
|
expect(classifySignalCliLogLine("WARNING Something")).toBe("error");
|
|
expect(classifySignalCliLogLine("ERROR Something")).toBe("error");
|
|
});
|
|
|
|
it("treats failures without explicit severity as error", () => {
|
|
expect(classifySignalCliLogLine("Failed to initialize HTTP Server - oops")).toBe("error");
|
|
expect(classifySignalCliLogLine('Exception in thread "main"')).toBe("error");
|
|
});
|
|
|
|
it("returns null for empty lines", () => {
|
|
expect(classifySignalCliLogLine("")).toBe(null);
|
|
expect(classifySignalCliLogLine(" ")).toBe(null);
|
|
});
|
|
});
|