From 37c250695b600fb12afc799ee1b32d7aae73d096 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 24 Apr 2026 00:52:53 +0100 Subject: [PATCH] perf: mock vllm provider setup contract --- .../vllm/provider-discovery.contract.test.ts | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/extensions/vllm/provider-discovery.contract.test.ts b/extensions/vllm/provider-discovery.contract.test.ts index 74990e08baf..fbaf51cb6e2 100644 --- a/extensions/vllm/provider-discovery.contract.test.ts +++ b/extensions/vllm/provider-discovery.contract.test.ts @@ -2,6 +2,28 @@ import type { OpenClawPluginApi } from "openclaw/plugin-sdk/plugin-entry"; import { beforeEach, describe, expect, it, vi } from "vitest"; const buildVllmProviderMock = vi.hoisted(() => vi.fn()); +type DiscoverOpenAICompatibleSelfHostedProviderParams = { + buildProvider: (args: { apiKey?: string }) => Promise>; + ctx: { + resolveProviderApiKey: () => { + apiKey?: string; + }; + resolveProviderAuth: () => { + discoveryApiKey?: string; + }; + }; + providerId: string; +}; +const discoverOpenAICompatibleSelfHostedProviderMock = vi.hoisted(() => + vi.fn(async (params: DiscoverOpenAICompatibleSelfHostedProviderParams) => ({ + provider: { + ...(await params.buildProvider({ + apiKey: params.ctx.resolveProviderAuth().discoveryApiKey, + })), + apiKey: params.ctx.resolveProviderApiKey().apiKey, + }, + })), +); vi.mock("./api.js", () => ({ VLLM_DEFAULT_API_KEY_ENV_VAR: "VLLM_API_KEY", @@ -11,6 +33,12 @@ vi.mock("./api.js", () => ({ buildVllmProvider: (...args: unknown[]) => buildVllmProviderMock(...args), })); +vi.mock("openclaw/plugin-sdk/provider-setup", () => ({ + discoverOpenAICompatibleSelfHostedProvider: ( + params: DiscoverOpenAICompatibleSelfHostedProviderParams, + ) => discoverOpenAICompatibleSelfHostedProviderMock(params), +})); + type ProviderDiscoveryRun = (ctx: { config: Record; env: NodeJS.ProcessEnv; @@ -37,6 +65,7 @@ type RegisteredVllmProvider = { describe("vllm provider discovery contract", () => { beforeEach(() => { buildVllmProviderMock.mockReset(); + discoverOpenAICompatibleSelfHostedProviderMock.mockClear(); }); it("keeps self-hosted discovery provider-owned", async () => { @@ -86,5 +115,11 @@ describe("vllm provider discovery contract", () => { expect(buildVllmProviderMock).toHaveBeenCalledWith({ apiKey: "env-vllm-key", }); + expect(discoverOpenAICompatibleSelfHostedProviderMock).toHaveBeenCalledWith( + expect.objectContaining({ + providerId: "vllm", + buildProvider: expect.any(Function), + }), + ); }); });