|
1 | 1 | // Restart method tests cover safe restart scheduling, deferral flags, and |
2 | 2 | // response payloads returned by gateway.restart.request. |
3 | | -import { describe, expect, it, vi } from "vitest"; |
| 3 | +import { beforeEach, describe, expect, it, vi } from "vitest"; |
4 | 4 | import { restartHandlers } from "./restart.js"; |
5 | 5 | |
6 | 6 | const requestSafeGatewayRestart = vi.hoisted(() => vi.fn()); |
@@ -21,7 +21,7 @@ vi.mock("../../infra/restart-coordinator.js", () => ({
|
21 | 21 | requestSafeGatewayRestart: (opts: unknown) => requestSafeGatewayRestart(opts), |
22 | 22 | })); |
23 | 23 | |
24 | | -function invokeRestartRequest(params: Record<string, unknown>) { |
| 24 | +function invokeRestartRequest(params: unknown) { |
25 | 25 | const respond = vi.fn(); |
26 | 26 | const handler = restartHandlers["gateway.restart.request"]; |
27 | 27 | return Promise.resolve( |
@@ -59,6 +59,10 @@ function expectRestartRequest(skipDeferral: boolean) {
|
59 | 59 | } |
60 | 60 | |
61 | 61 | describe("gateway.restart.request handler", () => { |
| 62 | +beforeEach(() => { |
| 63 | +requestSafeGatewayRestart.mockClear(); |
| 64 | +}); |
| 65 | + |
62 | 66 | it("defaults to skipDeferral: false when the param is absent", async () => { |
63 | 67 | mockScheduledRestart({ safe: true, summary: "safe to restart now" }); |
64 | 68 | |
@@ -90,4 +94,36 @@ describe("gateway.restart.request handler", () => {
|
90 | 94 | |
91 | 95 | expectRestartRequest(false); |
92 | 96 | }); |
| 97 | + |
| 98 | +it("rejects non-object params without scheduling a restart", async () => { |
| 99 | +const respond = await invokeRestartRequest("operator"); |
| 100 | + |
| 101 | +expect(requestSafeGatewayRestart).not.toHaveBeenCalled(); |
| 102 | +expect(respond.mock.calls).toEqual([ |
| 103 | +[ |
| 104 | +false, |
| 105 | +undefined, |
| 106 | +{ |
| 107 | +code: "INVALID_REQUEST", |
| 108 | +message: "invalid gateway.restart.request params", |
| 109 | +}, |
| 110 | +], |
| 111 | +]); |
| 112 | +}); |
| 113 | + |
| 114 | +it("rejects array params without scheduling a restart", async () => { |
| 115 | +const respond = await invokeRestartRequest([]); |
| 116 | + |
| 117 | +expect(requestSafeGatewayRestart).not.toHaveBeenCalled(); |
| 118 | +expect(respond.mock.calls).toEqual([ |
| 119 | +[ |
| 120 | +false, |
| 121 | +undefined, |
| 122 | +{ |
| 123 | +code: "INVALID_REQUEST", |
| 124 | +message: "invalid gateway.restart.request params", |
| 125 | +}, |
| 126 | +], |
| 127 | +]); |
| 128 | +}); |
93 | 129 | }); |