mirror of https://github.com/openclaw/openclaw.git
85 lines
2.6 KiB
TypeScript
85 lines
2.6 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
import {
|
|
resolveManifestProviderSetupFlowContributions,
|
|
resolveProviderModelPickerFlowContributions,
|
|
} from "./provider-flow.js";
|
|
|
|
const resolveManifestProviderAuthChoices = vi.hoisted(() => vi.fn(() => []));
|
|
const resolveProviderWizardOptions = vi.hoisted(() => vi.fn(() => []));
|
|
const resolveProviderModelPickerEntries = vi.hoisted(() => vi.fn(() => []));
|
|
const resolvePluginProviders = vi.hoisted(() => vi.fn(() => []));
|
|
|
|
vi.mock("../plugins/provider-auth-choices.js", () => ({
|
|
resolveManifestProviderAuthChoices,
|
|
}));
|
|
|
|
vi.mock("../plugins/provider-wizard.js", () => ({
|
|
resolveProviderWizardOptions,
|
|
resolveProviderModelPickerEntries,
|
|
}));
|
|
|
|
vi.mock("../plugins/providers.runtime.js", () => ({
|
|
resolvePluginProviders,
|
|
}));
|
|
|
|
describe("provider flow", () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
});
|
|
|
|
it("uses bundled compat when resolving docs for manifest-backed setup contributions", () => {
|
|
resolveManifestProviderAuthChoices.mockReturnValue([
|
|
{
|
|
pluginId: "sglang",
|
|
providerId: "sglang",
|
|
methodId: "custom",
|
|
choiceId: "provider-plugin:sglang:custom",
|
|
choiceLabel: "SGLang",
|
|
},
|
|
] as never);
|
|
resolvePluginProviders.mockReturnValue([
|
|
{ id: "sglang", docsPath: "/providers/sglang" },
|
|
] as never);
|
|
|
|
const contributions = resolveManifestProviderSetupFlowContributions({
|
|
config: {},
|
|
workspaceDir: "/tmp/workspace",
|
|
env: process.env,
|
|
});
|
|
|
|
expect(resolvePluginProviders).toHaveBeenCalledWith({
|
|
config: {},
|
|
workspaceDir: "/tmp/workspace",
|
|
env: process.env,
|
|
bundledProviderAllowlistCompat: true,
|
|
bundledProviderVitestCompat: true,
|
|
});
|
|
expect(contributions[0]?.option.docs).toEqual({ path: "/providers/sglang" });
|
|
});
|
|
|
|
it("uses bundled compat when resolving docs for runtime model-picker contributions", () => {
|
|
resolveProviderModelPickerEntries.mockReturnValue([
|
|
{
|
|
value: "provider-plugin:vllm:custom",
|
|
label: "vLLM",
|
|
},
|
|
] as never);
|
|
resolvePluginProviders.mockReturnValue([{ id: "vllm", docsPath: "/providers/vllm" }] as never);
|
|
|
|
const contributions = resolveProviderModelPickerFlowContributions({
|
|
config: {},
|
|
workspaceDir: "/tmp/workspace",
|
|
env: process.env,
|
|
});
|
|
|
|
expect(resolvePluginProviders).toHaveBeenCalledWith({
|
|
config: {},
|
|
workspaceDir: "/tmp/workspace",
|
|
env: process.env,
|
|
bundledProviderAllowlistCompat: true,
|
|
bundledProviderVitestCompat: true,
|
|
});
|
|
expect(contributions[0]?.option.docs).toEqual({ path: "/providers/vllm" });
|
|
});
|
|
});
|