





















@@ -35,6 +35,15 @@ function createGatewayParentLikeCommand() {
3535return gateway;
3636}
373738+function expectSingleDaemonCall(mockFn: ReturnType<typeof vi.fn>) {
39+expect(mockFn).toHaveBeenCalledTimes(1);
40+const opts = mockFn.mock.calls[0]?.[0] as Record<string, unknown> | undefined;
41+if (opts === undefined) {
42+throw new Error("expected daemon call options");
43+}
44+return opts;
45+}
46+3847describe("addGatewayServiceCommands", () => {
3948beforeEach(() => {
4049runDaemonInstall.mockClear();
@@ -50,71 +59,52 @@ describe("addGatewayServiceCommands", () => {
5059name: "forwards install option collisions from parent gateway command",
5160argv: ["install", "--force", "--port", "19000", "--token", "tok_test"],
5261assert: () => {
53-expect(runDaemonInstall).toHaveBeenCalledWith(
54-expect.objectContaining({
55-force: true,
56-port: "19000",
57-token: "tok_test",
58-}),
59-);
62+const opts = expectSingleDaemonCall(runDaemonInstall);
63+expect(opts.force).toBe(true);
64+expect(opts.port).toBe("19000");
65+expect(opts.token).toBe("tok_test");
6066},
6167},
6268{
6369name: "forwards restart force and wait controls",
6470argv: ["restart", "--wait", "30s"],
6571assert: () => {
66-expect(runDaemonRestart).toHaveBeenCalledWith(
67-expect.objectContaining({
68-wait: "30s",
69-}),
70-);
72+const opts = expectSingleDaemonCall(runDaemonRestart);
73+expect(opts.wait).toBe("30s");
7174},
7275},
7376{
7477name: "forwards restart safe control",
7578argv: ["restart", "--safe"],
7679assert: () => {
77-expect(runDaemonRestart).toHaveBeenCalledWith(
78-expect.objectContaining({
79-safe: true,
80-}),
81-);
80+const opts = expectSingleDaemonCall(runDaemonRestart);
81+expect(opts.safe).toBe(true);
8282},
8383},
8484{
8585name: "forwards restart force control",
8686argv: ["restart", "--force"],
8787assert: () => {
88-expect(runDaemonRestart).toHaveBeenCalledWith(
89-expect.objectContaining({
90-force: true,
91-}),
92-);
88+const opts = expectSingleDaemonCall(runDaemonRestart);
89+expect(opts.force).toBe(true);
9390},
9491},
9592{
9693name: "forwards status auth collisions from parent gateway command",
9794argv: ["status", "--token", "tok_status", "--password", "pw_status"],
9895assert: () => {
99-expect(runDaemonStatus).toHaveBeenCalledWith(
100-expect.objectContaining({
101-rpc: expect.objectContaining({
102-token: "tok_status",
103-password: "pw_status", // pragma: allowlist secret
104-}),
105-}),
106-);
96+const opts = expectSingleDaemonCall(runDaemonStatus);
97+const rpc = opts.rpc as { token?: unknown; password?: unknown } | undefined;
98+expect(rpc?.token).toBe("tok_status");
99+expect(rpc?.password).toBe("pw_status"); // pragma: allowlist secret
107100},
108101},
109102{
110103name: "forwards require-rpc for status",
111104argv: ["status", "--require-rpc"],
112105assert: () => {
113-expect(runDaemonStatus).toHaveBeenCalledWith(
114-expect.objectContaining({
115-requireRpc: true,
116-}),
117-);
106+const opts = expectSingleDaemonCall(runDaemonStatus);
107+expect(opts.requireRpc).toBe(true);
118108},
119109},
120110])("$name", async ({ argv, assert }) => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。