From ce085e5fa850435fc4e2f4ccf80fd98e634edc0f Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 12 May 2026 20:17:48 +0100 Subject: [PATCH] test: dedupe gateway client mock reads --- src/gateway/client.test.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/gateway/client.test.ts b/src/gateway/client.test.ts index a34d9be11d8..fe7ed4fc6c4 100644 --- a/src/gateway/client.test.ts +++ b/src/gateway/client.test.ts @@ -164,6 +164,14 @@ function expectRecordFields( return record; } +function firstMockArg(mock: ReturnType, label: string): unknown { + const [arg] = mock.mock.calls[0] ?? []; + if (arg === undefined) { + throw new Error(`expected ${label}`); + } + return arg; +} + async function expectGatewayRequestError( promise: Promise, expected: Record, @@ -198,7 +206,7 @@ function expectSecurityConnectError( onConnectError: ReturnType, params?: { expectTailscaleHint?: boolean }, ) { - const error = onConnectError.mock.calls.at(0)?.[0] as Error; + const error = firstMockArg(onConnectError, "connect error") as Error; expect(error.message).toContain("SECURITY ERROR"); expect(error.message).toContain("openclaw doctor --fix"); if (params?.expectTailscaleHint) { @@ -905,7 +913,7 @@ describe("GatewayClient connect auth payload", () => { client.stop(); await vi.waitFor(() => { - const error = onConnectError.mock.calls.at(0)?.[0] as Error | undefined; + const error = firstMockArg(onConnectError, "connect error") as Error; expect(error?.message).toBe("gateway client stopped"); }); expect(logDebugMock).toHaveBeenCalledWith( @@ -1018,7 +1026,7 @@ describe("GatewayClient connect auth payload", () => { emitConnectChallenge(ws); const loadTokenParams = expectRecordFields( - loadDeviceAuthTokenMock.mock.calls.at(0)?.[0], + firstMockArg(loadDeviceAuthTokenMock, "load device token params"), { role: "operator", env, @@ -1196,7 +1204,7 @@ describe("GatewayClient connect auth payload", () => { failureDetails: { code: "AUTH_DEVICE_TOKEN_MISMATCH" }, }); const clearTokenParams = expectRecordFields( - clearDeviceAuthTokenMock.mock.calls.at(0)?.[0], + firstMockArg(clearDeviceAuthTokenMock, "clear device token params"), { role: "operator" }, "clear device token params", );