import { beforeEach, describe, expect, it, vi } from "vitest" ;
import { runStatusJsonCommand } from "./status-json-command.ts" ;
const mocks = vi.hoisted(() => ({
writeRuntimeJson: vi.fn(),
resolveStatusJsonOutput: vi.fn(async (input) => ({ built: true , input })),
}));
vi.mock("../runtime.js" , () => ({
writeRuntimeJson: mocks.writeRuntimeJson,
}));
vi.mock("./status-json-runtime.ts" , () => ({
resolveStatusJsonOutput: mocks.resolveStatusJsonOutput,
}));
describe("runStatusJsonCommand" , () => {
beforeEach(() => {
vi.clearAllMocks();
});
it("shares the fast-json scan and output flow" , async () => {
const runtime = {
log: vi.fn(),
error: vi.fn(),
exit: vi.fn(),
} as never;
const scan = {
cfg: { gateway: {} },
sourceConfig: { gateway: {} },
summary: { ok: true },
update: { root: null , installKind: "package" as const , packageManager: "npm" as const },
osSummary: { platform: "linux" },
memory: null ,
memoryPlugin: null ,
tailscaleMode: "off" ,
tailscaleDns: null ,
tailscaleHttpsUrl: null ,
gatewayMode: "local" as const ,
gatewayConnection: {
url: "ws://127.0.0.1:18789",
urlSource: "config" ,
message: "Gateway target: ws://127.0.0.1:18789",
},
remoteUrlMissing: false ,
gatewayReachable: true ,
gatewayProbe: null ,
gatewayProbeAuth: { token: "tok" },
gatewaySelf: null ,
gatewayProbeAuthWarning: null ,
agentStatus: [],
secretDiagnostics: [],
};
const scanStatusJsonFast = vi.fn(async () => scan);
await runStatusJsonCommand({
opts: { deep: true , usage: true , timeoutMs: 1234 , all: true },
runtime,
scanStatusJsonFast,
includeSecurityAudit: true ,
includePluginCompatibility: true ,
suppressHealthErrors: true ,
});
expect(scanStatusJsonFast).toHaveBeenCalledWith({ timeoutMs: 1234 , all: true }, runtime);
expect(mocks.resolveStatusJsonOutput).toHaveBeenCalledWith({
scan,
opts: { deep: true , usage: true , timeoutMs: 1234 , all: true },
includeSecurityAudit: true ,
includePluginCompatibility: true ,
suppressHealthErrors: true ,
});
expect(mocks.writeRuntimeJson).toHaveBeenCalledWith(runtime, {
built: true ,
input: {
scan,
opts: { deep: true , usage: true , timeoutMs: 1234 , all: true },
includeSecurityAudit: true ,
includePluginCompatibility: true ,
suppressHealthErrors: true ,
},
});
});
});
Messung V0.5 in Prozent C=99 H=100 G=99
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland