From afbf895af08aa459c1864a7942cbb4c12e48d91e Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Tue, 2 Jun 2026 10:54:56 +0200 Subject: [PATCH] test(gateway): share runtime state fixture --- src/gateway/server-runtime-state.test.ts | 21 ++------------- .../server.startup-websocket-race.test.ts | 23 ++-------------- .../test-helpers.server-runtime-state.ts | 27 +++++++++++++++++++ 3 files changed, 31 insertions(+), 40 deletions(-) create mode 100644 src/gateway/test-helpers.server-runtime-state.ts diff --git a/src/gateway/server-runtime-state.test.ts b/src/gateway/server-runtime-state.test.ts index bd835897ec95..faea7c0210bf 100644 --- a/src/gateway/server-runtime-state.test.ts +++ b/src/gateway/server-runtime-state.test.ts @@ -10,7 +10,7 @@ import { resolveActivePluginHttpRouteRegistry, setActivePluginRegistry, } from "../plugins/runtime.js"; -import { createGatewayRuntimeState } from "./server-runtime-state.js"; +import { createGatewayRuntimeStateForTest } from "./test-helpers.server-runtime-state.js"; function createRegistryWithRoute(path: string) { const registry = createEmptyPluginRegistry(); @@ -38,24 +38,7 @@ describe("createGatewayRuntimeState", () => { const fallbackRegistry = createRegistryWithRoute("/fallback"); setActivePluginRegistry(startupRegistry); - const runtimeState = await createGatewayRuntimeState({ - cfg: {}, - bindHost: "127.0.0.1", - port: 0, - controlUiEnabled: false, - controlUiBasePath: "/", - openAiChatCompletionsEnabled: false, - openResponsesEnabled: false, - resolvedAuth: {} as never, - getResolvedAuth: () => ({}) as never, - hooksConfig: () => null, - getHookClientIpConfig: () => ({}) as never, - pluginRegistry: startupRegistry, - deps: {} as never, - log: { info: () => {}, warn: () => {} }, - logHooks: { info: () => {}, warn: () => {}, error: () => {}, debug: () => {} } as never, - logPlugins: { info: () => {}, warn: () => {}, error: () => {}, debug: () => {} } as never, - }); + const runtimeState = await createGatewayRuntimeStateForTest(startupRegistry); pinActivePluginHttpRouteRegistry(loadedRegistry); pinActivePluginChannelRegistry(loadedRegistry); diff --git a/src/gateway/server.startup-websocket-race.test.ts b/src/gateway/server.startup-websocket-race.test.ts index 15c9dba1ac9a..22a04a0ee7a1 100644 --- a/src/gateway/server.startup-websocket-race.test.ts +++ b/src/gateway/server.startup-websocket-race.test.ts @@ -1,8 +1,7 @@ import { afterEach, describe, expect, it, vi } from "vitest"; import { WebSocket } from "ws"; -import { createEmptyPluginRegistry } from "../plugins/registry.js"; -import { createGatewayRuntimeState } from "./server-runtime-state.js"; import { getFreePort, installGatewayTestHooks, startGatewayServer } from "./test-helpers.js"; +import { createGatewayRuntimeStateForTest } from "./test-helpers.server-runtime-state.js"; type StartGatewayServer = typeof import("./test-helpers.js").startGatewayServer; type GatewayServerForTest = Awaited>; @@ -52,25 +51,7 @@ afterEach(() => { describe("gateway startup websocket readiness", () => { it("attaches websocket upgrade handlers before exposing the listen step", async () => { - const registry = createEmptyPluginRegistry(); - const runtimeState = await createGatewayRuntimeState({ - cfg: {}, - bindHost: "127.0.0.1", - port: 0, - controlUiEnabled: false, - controlUiBasePath: "/", - openAiChatCompletionsEnabled: false, - openResponsesEnabled: false, - resolvedAuth: {} as never, - getResolvedAuth: () => ({}) as never, - hooksConfig: () => null, - getHookClientIpConfig: () => ({}) as never, - pluginRegistry: registry, - deps: {} as never, - log: { info: () => {}, warn: () => {} }, - logHooks: { info: () => {}, warn: () => {}, error: () => {}, debug: () => {} } as never, - logPlugins: { info: () => {}, warn: () => {}, error: () => {}, debug: () => {} } as never, - }); + const runtimeState = await createGatewayRuntimeStateForTest(); try { expect(runtimeState.httpBindHosts).toEqual([]); expect(runtimeState.httpServer.listenerCount("upgrade")).toBeGreaterThan(0); diff --git a/src/gateway/test-helpers.server-runtime-state.ts b/src/gateway/test-helpers.server-runtime-state.ts new file mode 100644 index 000000000000..dccec9498c43 --- /dev/null +++ b/src/gateway/test-helpers.server-runtime-state.ts @@ -0,0 +1,27 @@ +import { createEmptyPluginRegistry } from "../plugins/registry.js"; +import { createGatewayRuntimeState } from "./server-runtime-state.js"; + +type GatewayRuntimeStateParams = Parameters[0]; + +export async function createGatewayRuntimeStateForTest( + pluginRegistry: GatewayRuntimeStateParams["pluginRegistry"] = createEmptyPluginRegistry(), +) { + return await createGatewayRuntimeState({ + cfg: {}, + bindHost: "127.0.0.1", + port: 0, + controlUiEnabled: false, + controlUiBasePath: "/", + openAiChatCompletionsEnabled: false, + openResponsesEnabled: false, + resolvedAuth: {} as never, + getResolvedAuth: () => ({}) as never, + hooksConfig: () => null, + getHookClientIpConfig: () => ({}) as never, + pluginRegistry, + deps: {} as never, + log: { info: () => {}, warn: () => {} }, + logHooks: { info: () => {}, warn: () => {}, error: () => {}, debug: () => {} } as never, + logPlugins: { info: () => {}, warn: () => {}, error: () => {}, debug: () => {} } as never, + }); +}