From 96c2502bfb71afb5c0ea06b8ade756c3854699aa Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 11 May 2026 12:56:23 +0100 Subject: [PATCH] test: tighten gateway startup assertions --- src/gateway/server-startup-early.test.ts | 24 ++++++++-------- src/gateway/server-startup.test.ts | 35 ++++++++++-------------- 2 files changed, 28 insertions(+), 31 deletions(-) diff --git a/src/gateway/server-startup-early.test.ts b/src/gateway/server-startup-early.test.ts index 44dff5751ff..a3507bad5fa 100644 --- a/src/gateway/server-startup-early.test.ts +++ b/src/gateway/server-startup-early.test.ts @@ -1,8 +1,10 @@ import { beforeEach, describe, expect, it, vi } from "vitest"; +type StartGatewayDiscovery = typeof import("./server-discovery-runtime.js").startGatewayDiscovery; + const mocks = vi.hoisted(() => ({ getMachineDisplayName: vi.fn(async () => "Test Machine"), - startGatewayDiscovery: vi.fn(async () => ({ bonjourStop: null })), + startGatewayDiscovery: vi.fn(async () => ({ bonjourStop: null })), })); vi.mock("../infra/machine-name.js", () => ({ @@ -87,15 +89,15 @@ describe("startGatewayEarlyRuntime", () => { }), ).resolves.toBe(stop); - expect(mocks.startGatewayDiscovery).toHaveBeenCalledWith( - expect.objectContaining({ - machineDisplayName: "Test Machine", - port: 19_001, - gatewayTls: { enabled: true, fingerprintSha256: "abc123" }, - tailscaleMode: "serve", - mdnsMode: "full", - gatewayDiscoveryServices: [service], - }), - ); + const [discoveryParams] = mocks.startGatewayDiscovery.mock.calls.at(-1) ?? []; + if (discoveryParams === undefined) { + throw new Error("Expected gateway discovery to start"); + } + expect(discoveryParams.machineDisplayName).toBe("Test Machine"); + expect(discoveryParams.port).toBe(19_001); + expect(discoveryParams.gatewayTls).toEqual({ enabled: true, fingerprintSha256: "abc123" }); + expect(discoveryParams.tailscaleMode).toBe("serve"); + expect(discoveryParams.mdnsMode).toBe("full"); + expect(discoveryParams.gatewayDiscoveryServices).toEqual([service]); }); }); diff --git a/src/gateway/server-startup.test.ts b/src/gateway/server-startup.test.ts index dfa361b9859..9c822379b67 100644 --- a/src/gateway/server-startup.test.ts +++ b/src/gateway/server-startup.test.ts @@ -36,6 +36,19 @@ vi.mock("../agents/pi-embedded-runner/runtime.js", () => ({ let prewarmConfiguredPrimaryModel: typeof import("./server-startup-post-attach.js").__testing.prewarmConfiguredPrimaryModel; let shouldSkipStartupModelPrewarm: typeof import("./server-startup-post-attach.js").__testing.shouldSkipStartupModelPrewarm; +function expectModelsJsonPrewarmCall(cfg: OpenClawConfig) { + expect(ensureOpenClawModelsJsonMock).toHaveBeenCalledTimes(1); + const [calledConfig, agentDir, options] = ensureOpenClawModelsJsonMock.mock.calls[0] ?? []; + expect(calledConfig).toBe(cfg); + expect(agentDir).toBe("/tmp/agent"); + expect(options).toEqual({ + workspaceDir: "/tmp/workspace", + providerDiscoveryProviderIds: ["openai-codex"], + providerDiscoveryTimeoutMs: 5000, + providerDiscoveryEntriesOnly: true, + }); +} + describe("gateway startup primary model warmup", () => { beforeAll(async () => { ({ @@ -66,16 +79,7 @@ describe("gateway startup primary model warmup", () => { log: { warn: vi.fn() }, }); - expect(ensureOpenClawModelsJsonMock).toHaveBeenCalledWith( - cfg, - "/tmp/agent", - expect.objectContaining({ - workspaceDir: "/tmp/workspace", - providerDiscoveryProviderIds: ["openai-codex"], - providerDiscoveryTimeoutMs: 5000, - providerDiscoveryEntriesOnly: true, - }), - ); + expectModelsJsonPrewarmCall(cfg); expect(piModelModuleLoadedMock).not.toHaveBeenCalled(); }); @@ -163,16 +167,7 @@ describe("gateway startup primary model warmup", () => { log: { warn: vi.fn() }, }); - expect(ensureOpenClawModelsJsonMock).toHaveBeenCalledWith( - cfg, - "/tmp/agent", - expect.objectContaining({ - workspaceDir: "/tmp/workspace", - providerDiscoveryProviderIds: ["openai-codex"], - providerDiscoveryTimeoutMs: 5000, - providerDiscoveryEntriesOnly: true, - }), - ); + expectModelsJsonPrewarmCall(cfg); expect(piModelModuleLoadedMock).not.toHaveBeenCalled(); });