import { afterEach, beforeEach, describe, expect, it, vi } from "vitest" ;
import {
emitDiagnosticEvent,
resetDiagnosticEventsForTest,
} from "../../infra/diagnostic-events.js" ;
import {
resetDiagnosticStabilityRecorderForTest,
startDiagnosticStabilityRecorder,
stopDiagnosticStabilityRecorder,
} from "../../logging/diagnostic-stability.js" ;
import { diagnosticsHandlers } from "./diagnostics.js" ;
describe("diagnostics gateway methods" , () => {
beforeEach(() => {
resetDiagnosticStabilityRecorderForTest();
resetDiagnosticEventsForTest();
startDiagnosticStabilityRecorder();
});
afterEach(() => {
stopDiagnosticStabilityRecorder();
resetDiagnosticStabilityRecorderForTest();
resetDiagnosticEventsForTest();
});
it("returns a filtered stability snapshot" , async () => {
emitDiagnosticEvent({ type: "webhook.received" , channel: "telegram" });
emitDiagnosticEvent({
type: "payload.large" ,
surface: "gateway.http.json" ,
action: "rejected" ,
bytes: 1024 ,
limitBytes: 512 ,
});
const respond = vi.fn();
await diagnosticsHandlers["diagnostics.stability" ]({
req: { type: "req" , id: "1" , method: "diagnostics.stability" , params: {} },
params: { type: "payload.large" , limit: 10 },
client: null ,
isWebchatConnect: () => false ,
context: {} as never,
respond,
});
expect(respond).toHaveBeenCalledWith(
true ,
expect.objectContaining({
count: 1 ,
events: [
expect.objectContaining({
type: "payload.large" ,
surface: "gateway.http.json" ,
action: "rejected" ,
}),
],
}),
undefined,
);
});
it("rejects invalid stability params" , async () => {
const respond = vi.fn();
await diagnosticsHandlers["diagnostics.stability" ]({
req: { type: "req" , id: "1" , method: "diagnostics.stability" , params: {} },
params: { limit: 0 },
client: null ,
isWebchatConnect: () => false ,
context: {} as never,
respond,
});
expect(respond).toHaveBeenCalledWith(
false ,
undefined,
expect.objectContaining({
code: "INVALID_REQUEST" ,
message: "limit must be between 1 and 1000" ,
}),
);
});
});
Messung V0.5 in Prozent C=99 H=99 G=98
¤ Dauer der Verarbeitung: 0.3 Sekunden
¤
*© Formatika GbR, Deutschland