From 3f65e2545f78c3597f189dc42b5f790352576b46 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Sun, 12 Apr 2026 04:11:17 +0100 Subject: [PATCH] test(providers): share onboard smoke assertions --- extensions/opencode-go/onboard.test.ts | 39 +++++++------------- extensions/opencode/onboard.test.ts | 39 +++++++------------- extensions/openrouter/onboard.test.ts | 45 +++++++----------------- test/helpers/plugins/provider-onboard.ts | 40 +++++++++++++++++++++ 4 files changed, 76 insertions(+), 87 deletions(-) create mode 100644 test/helpers/plugins/provider-onboard.ts diff --git a/extensions/opencode-go/onboard.test.ts b/extensions/opencode-go/onboard.test.ts index ff2e3237812..be82cf2a1fe 100644 --- a/extensions/opencode-go/onboard.test.ts +++ b/extensions/opencode-go/onboard.test.ts @@ -1,40 +1,25 @@ +import { describe, it } from "vitest"; import { - resolveAgentModelFallbackValues, - resolveAgentModelPrimaryValue, -} from "openclaw/plugin-sdk/provider-onboard"; -import { describe, expect, it } from "vitest"; -import { - createConfigWithFallbacks, - EXPECTED_FALLBACKS, -} from "../../test/helpers/plugins/onboard-config.js"; + expectProviderOnboardAllowlistAlias, + expectProviderOnboardPrimaryAndFallbacks, +} from "../../test/helpers/plugins/provider-onboard.js"; import { applyOpencodeGoConfig, applyOpencodeGoProviderConfig } from "./onboard.js"; const MODEL_REF = "opencode-go/kimi-k2.5"; describe("opencode-go onboard", () => { it("adds allowlist entry and preserves alias", () => { - const withDefault = applyOpencodeGoProviderConfig({}); - expect(Object.keys(withDefault.agents?.defaults?.models ?? {})).toContain(MODEL_REF); - - const withAlias = applyOpencodeGoProviderConfig({ - agents: { - defaults: { - models: { - [MODEL_REF]: { alias: "Kimi" }, - }, - }, - }, + expectProviderOnboardAllowlistAlias({ + applyProviderConfig: applyOpencodeGoProviderConfig, + modelRef: MODEL_REF, + alias: "Kimi", }); - expect(withAlias.agents?.defaults?.models?.[MODEL_REF]?.alias).toBe("Kimi"); }); it("sets primary model and preserves existing model fallbacks", () => { - const cfg = applyOpencodeGoConfig({}); - expect(resolveAgentModelPrimaryValue(cfg.agents?.defaults?.model)).toBe(MODEL_REF); - - const cfgWithFallbacks = applyOpencodeGoConfig(createConfigWithFallbacks()); - expect(resolveAgentModelFallbackValues(cfgWithFallbacks.agents?.defaults?.model)).toEqual([ - ...EXPECTED_FALLBACKS, - ]); + expectProviderOnboardPrimaryAndFallbacks({ + applyConfig: applyOpencodeGoConfig, + modelRef: MODEL_REF, + }); }); }); diff --git a/extensions/opencode/onboard.test.ts b/extensions/opencode/onboard.test.ts index 4bceb1b642f..9c0f85622e6 100644 --- a/extensions/opencode/onboard.test.ts +++ b/extensions/opencode/onboard.test.ts @@ -1,40 +1,25 @@ +import { describe, it } from "vitest"; import { - resolveAgentModelFallbackValues, - resolveAgentModelPrimaryValue, -} from "openclaw/plugin-sdk/provider-onboard"; -import { describe, expect, it } from "vitest"; -import { - createConfigWithFallbacks, - EXPECTED_FALLBACKS, -} from "../../test/helpers/plugins/onboard-config.js"; + expectProviderOnboardAllowlistAlias, + expectProviderOnboardPrimaryAndFallbacks, +} from "../../test/helpers/plugins/provider-onboard.js"; import { applyOpencodeZenConfig, applyOpencodeZenProviderConfig } from "./onboard.js"; const MODEL_REF = "opencode/claude-opus-4-6"; describe("opencode onboard", () => { it("adds allowlist entry and preserves alias", () => { - const withDefault = applyOpencodeZenProviderConfig({}); - expect(Object.keys(withDefault.agents?.defaults?.models ?? {})).toContain(MODEL_REF); - - const withAlias = applyOpencodeZenProviderConfig({ - agents: { - defaults: { - models: { - [MODEL_REF]: { alias: "My Opus" }, - }, - }, - }, + expectProviderOnboardAllowlistAlias({ + applyProviderConfig: applyOpencodeZenProviderConfig, + modelRef: MODEL_REF, + alias: "My Opus", }); - expect(withAlias.agents?.defaults?.models?.[MODEL_REF]?.alias).toBe("My Opus"); }); it("sets primary model and preserves existing model fallbacks", () => { - const cfg = applyOpencodeZenConfig({}); - expect(resolveAgentModelPrimaryValue(cfg.agents?.defaults?.model)).toBe(MODEL_REF); - - const cfgWithFallbacks = applyOpencodeZenConfig(createConfigWithFallbacks()); - expect(resolveAgentModelFallbackValues(cfgWithFallbacks.agents?.defaults?.model)).toEqual([ - ...EXPECTED_FALLBACKS, - ]); + expectProviderOnboardPrimaryAndFallbacks({ + applyConfig: applyOpencodeZenConfig, + modelRef: MODEL_REF, + }); }); }); diff --git a/extensions/openrouter/onboard.test.ts b/extensions/openrouter/onboard.test.ts index 9e30ac63951..d1ba212c85a 100644 --- a/extensions/openrouter/onboard.test.ts +++ b/extensions/openrouter/onboard.test.ts @@ -1,12 +1,8 @@ +import { describe, it } from "vitest"; import { - resolveAgentModelFallbackValues, - resolveAgentModelPrimaryValue, -} from "openclaw/plugin-sdk/provider-onboard"; -import { describe, expect, it } from "vitest"; -import { - createConfigWithFallbacks, - EXPECTED_FALLBACKS, -} from "../../test/helpers/plugins/onboard-config.js"; + expectProviderOnboardAllowlistAlias, + expectProviderOnboardPrimaryAndFallbacks, +} from "../../test/helpers/plugins/provider-onboard.js"; import { applyOpenrouterConfig, applyOpenrouterProviderConfig, @@ -15,34 +11,17 @@ import { describe("openrouter onboard", () => { it("adds allowlist entry and preserves alias", () => { - const withDefault = applyOpenrouterProviderConfig({}); - expect(Object.keys(withDefault.agents?.defaults?.models ?? {})).toContain( - OPENROUTER_DEFAULT_MODEL_REF, - ); - - const withAlias = applyOpenrouterProviderConfig({ - agents: { - defaults: { - models: { - [OPENROUTER_DEFAULT_MODEL_REF]: { alias: "Router" }, - }, - }, - }, + expectProviderOnboardAllowlistAlias({ + applyProviderConfig: applyOpenrouterProviderConfig, + modelRef: OPENROUTER_DEFAULT_MODEL_REF, + alias: "Router", }); - expect(withAlias.agents?.defaults?.models?.[OPENROUTER_DEFAULT_MODEL_REF]?.alias).toBe( - "Router", - ); }); it("sets primary model and preserves existing model fallbacks", () => { - const cfg = applyOpenrouterConfig({}); - expect(resolveAgentModelPrimaryValue(cfg.agents?.defaults?.model)).toBe( - OPENROUTER_DEFAULT_MODEL_REF, - ); - - const cfgWithFallbacks = applyOpenrouterConfig(createConfigWithFallbacks()); - expect(resolveAgentModelFallbackValues(cfgWithFallbacks.agents?.defaults?.model)).toEqual([ - ...EXPECTED_FALLBACKS, - ]); + expectProviderOnboardPrimaryAndFallbacks({ + applyConfig: applyOpenrouterConfig, + modelRef: OPENROUTER_DEFAULT_MODEL_REF, + }); }); }); diff --git a/test/helpers/plugins/provider-onboard.ts b/test/helpers/plugins/provider-onboard.ts new file mode 100644 index 00000000000..befd5a62b6c --- /dev/null +++ b/test/helpers/plugins/provider-onboard.ts @@ -0,0 +1,40 @@ +import { + resolveAgentModelFallbackValues, + resolveAgentModelPrimaryValue, +} from "openclaw/plugin-sdk/provider-onboard"; +import { expect } from "vitest"; +import type { OpenClawConfig } from "../../../src/config/config.js"; +import { createConfigWithFallbacks, EXPECTED_FALLBACKS } from "./onboard-config.js"; + +export function expectProviderOnboardAllowlistAlias(params: { + applyProviderConfig: (config: OpenClawConfig) => OpenClawConfig; + modelRef: string; + alias: string; +}) { + const withDefault = params.applyProviderConfig({}); + expect(Object.keys(withDefault.agents?.defaults?.models ?? {})).toContain(params.modelRef); + + const withAlias = params.applyProviderConfig({ + agents: { + defaults: { + models: { + [params.modelRef]: { alias: params.alias }, + }, + }, + }, + }); + expect(withAlias.agents?.defaults?.models?.[params.modelRef]?.alias).toBe(params.alias); +} + +export function expectProviderOnboardPrimaryAndFallbacks(params: { + applyConfig: (config: OpenClawConfig) => OpenClawConfig; + modelRef: string; +}) { + const cfg = params.applyConfig({}); + expect(resolveAgentModelPrimaryValue(cfg.agents?.defaults?.model)).toBe(params.modelRef); + + const cfgWithFallbacks = params.applyConfig(createConfigWithFallbacks()); + expect(resolveAgentModelFallbackValues(cfgWithFallbacks.agents?.defaults?.model)).toEqual([ + ...EXPECTED_FALLBACKS, + ]); +}