mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-04 22:01:15 +00:00
161 lines
5.0 KiB
TypeScript
161 lines
5.0 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
|
|
const loadPluginManifestRegistry = vi.hoisted(() => vi.fn());
|
|
|
|
vi.mock("./manifest-registry.js", () => ({
|
|
loadPluginManifestRegistry,
|
|
}));
|
|
|
|
import {
|
|
resolveManifestDeprecatedProviderAuthChoice,
|
|
resolveManifestProviderAuthChoice,
|
|
resolveManifestProviderAuthChoices,
|
|
resolveManifestProviderOnboardAuthFlags,
|
|
} from "./provider-auth-choices.js";
|
|
|
|
function createManifestPlugin(id: string, providerAuthChoices: Array<Record<string, unknown>>) {
|
|
return {
|
|
id,
|
|
providerAuthChoices,
|
|
};
|
|
}
|
|
|
|
function createProviderAuthChoice(overrides: Record<string, unknown>) {
|
|
return overrides;
|
|
}
|
|
|
|
function setManifestPlugins(plugins: Array<Record<string, unknown>>) {
|
|
loadPluginManifestRegistry.mockReturnValue({
|
|
plugins,
|
|
});
|
|
}
|
|
|
|
function expectResolvedProviderAuthChoices(params: {
|
|
expectedFlattened: Array<Record<string, unknown>>;
|
|
resolvedProviderIds?: Record<string, string | undefined>;
|
|
deprecatedChoiceIds?: Record<string, string | undefined>;
|
|
}) {
|
|
expect(resolveManifestProviderAuthChoices()).toEqual(params.expectedFlattened);
|
|
Object.entries(params.resolvedProviderIds ?? {}).forEach(([choiceId, providerId]) => {
|
|
expect(resolveManifestProviderAuthChoice(choiceId)?.providerId).toBe(providerId);
|
|
});
|
|
Object.entries(params.deprecatedChoiceIds ?? {}).forEach(([choiceId, expectedChoiceId]) => {
|
|
expect(resolveManifestDeprecatedProviderAuthChoice(choiceId)?.choiceId).toBe(expectedChoiceId);
|
|
});
|
|
}
|
|
|
|
function setSingleManifestProviderAuthChoices(
|
|
pluginId: string,
|
|
providerAuthChoices: Array<Record<string, unknown>>,
|
|
) {
|
|
setManifestPlugins([createManifestPlugin(pluginId, providerAuthChoices)]);
|
|
}
|
|
|
|
describe("provider auth choice manifest helpers", () => {
|
|
it("flattens manifest auth choices", () => {
|
|
setSingleManifestProviderAuthChoices("openai", [
|
|
createProviderAuthChoice({
|
|
provider: "openai",
|
|
method: "api-key",
|
|
choiceId: "openai-api-key",
|
|
choiceLabel: "OpenAI API key",
|
|
onboardingScopes: ["text-inference"],
|
|
optionKey: "openaiApiKey",
|
|
cliFlag: "--openai-api-key",
|
|
cliOption: "--openai-api-key <key>",
|
|
}),
|
|
]);
|
|
|
|
expectResolvedProviderAuthChoices({
|
|
expectedFlattened: [
|
|
{
|
|
pluginId: "openai",
|
|
providerId: "openai",
|
|
methodId: "api-key",
|
|
choiceId: "openai-api-key",
|
|
choiceLabel: "OpenAI API key",
|
|
onboardingScopes: ["text-inference"],
|
|
optionKey: "openaiApiKey",
|
|
cliFlag: "--openai-api-key",
|
|
cliOption: "--openai-api-key <key>",
|
|
},
|
|
],
|
|
resolvedProviderIds: { "openai-api-key": "openai" },
|
|
});
|
|
});
|
|
|
|
it.each([
|
|
{
|
|
name: "deduplicates flag metadata by option key + flag",
|
|
plugins: [
|
|
createManifestPlugin("moonshot", [
|
|
createProviderAuthChoice({
|
|
provider: "moonshot",
|
|
method: "api-key",
|
|
choiceId: "moonshot-api-key",
|
|
choiceLabel: "Kimi API key (.ai)",
|
|
optionKey: "moonshotApiKey",
|
|
cliFlag: "--moonshot-api-key",
|
|
cliOption: "--moonshot-api-key <key>",
|
|
cliDescription: "Moonshot API key",
|
|
}),
|
|
createProviderAuthChoice({
|
|
provider: "moonshot",
|
|
method: "api-key-cn",
|
|
choiceId: "moonshot-api-key-cn",
|
|
choiceLabel: "Kimi API key (.cn)",
|
|
optionKey: "moonshotApiKey",
|
|
cliFlag: "--moonshot-api-key",
|
|
cliOption: "--moonshot-api-key <key>",
|
|
cliDescription: "Moonshot API key",
|
|
}),
|
|
]),
|
|
],
|
|
run: () =>
|
|
expect(resolveManifestProviderOnboardAuthFlags()).toEqual([
|
|
{
|
|
optionKey: "moonshotApiKey",
|
|
authChoice: "moonshot-api-key",
|
|
cliFlag: "--moonshot-api-key",
|
|
cliOption: "--moonshot-api-key <key>",
|
|
description: "Moonshot API key",
|
|
},
|
|
]),
|
|
},
|
|
{
|
|
name: "resolves deprecated auth-choice aliases through manifest metadata",
|
|
plugins: [
|
|
createManifestPlugin("minimax", [
|
|
createProviderAuthChoice({
|
|
provider: "minimax",
|
|
method: "api-global",
|
|
choiceId: "minimax-global-api",
|
|
deprecatedChoiceIds: ["minimax", "minimax-api"],
|
|
}),
|
|
]),
|
|
],
|
|
run: () =>
|
|
expectResolvedProviderAuthChoices({
|
|
expectedFlattened: [
|
|
{
|
|
pluginId: "minimax",
|
|
providerId: "minimax",
|
|
methodId: "api-global",
|
|
choiceId: "minimax-global-api",
|
|
choiceLabel: "minimax-global-api",
|
|
deprecatedChoiceIds: ["minimax", "minimax-api"],
|
|
},
|
|
],
|
|
deprecatedChoiceIds: {
|
|
minimax: "minimax-global-api",
|
|
"minimax-api": "minimax-global-api",
|
|
openai: undefined,
|
|
},
|
|
}),
|
|
},
|
|
])("$name", ({ plugins, run }) => {
|
|
setManifestPlugins(plugins);
|
|
run();
|
|
});
|
|
});
|