mirror of
https://github.com/moltbot/moltbot.git
synced 2026-05-13 23:56:07 +00:00
fix: preserve provider auth alias scope
This commit is contained in:
83
src/agents/model-auth-env.provider-aliases.test.ts
Normal file
83
src/agents/model-auth-env.provider-aliases.test.ts
Normal file
@@ -0,0 +1,83 @@
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { resolveEnvApiKey } from "./model-auth-env.js";
|
||||
|
||||
const pluginMetadataMocks = vi.hoisted(() => {
|
||||
const snapshot = {
|
||||
index: {
|
||||
plugins: [
|
||||
{
|
||||
pluginId: "external-cloud",
|
||||
origin: "global",
|
||||
enabled: true,
|
||||
enabledByDefault: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
plugins: [
|
||||
{
|
||||
id: "external-cloud",
|
||||
origin: "global",
|
||||
providerAuthAliases: {
|
||||
"cloud-alias": "external-cloud",
|
||||
},
|
||||
providerAuthEnvVars: {
|
||||
"external-cloud": ["EXTERNAL_CLOUD_API_KEY"],
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
return {
|
||||
snapshot,
|
||||
getCurrentPluginMetadataSnapshot: vi.fn(() => snapshot),
|
||||
loadPluginMetadataSnapshot: vi.fn(() => snapshot),
|
||||
};
|
||||
});
|
||||
|
||||
vi.mock("../plugins/current-plugin-metadata-snapshot.js", () => ({
|
||||
getCurrentPluginMetadataSnapshot: pluginMetadataMocks.getCurrentPluginMetadataSnapshot,
|
||||
}));
|
||||
|
||||
vi.mock("../plugins/plugin-metadata-snapshot.js", () => ({
|
||||
loadPluginMetadataSnapshot: pluginMetadataMocks.loadPluginMetadataSnapshot,
|
||||
}));
|
||||
|
||||
vi.mock("../plugins/setup-registry.js", () => ({
|
||||
resolvePluginSetupProvider: () => undefined,
|
||||
}));
|
||||
|
||||
describe("resolveEnvApiKey provider auth aliases", () => {
|
||||
beforeEach(() => {
|
||||
pluginMetadataMocks.getCurrentPluginMetadataSnapshot.mockReset();
|
||||
pluginMetadataMocks.getCurrentPluginMetadataSnapshot.mockReturnValue(
|
||||
pluginMetadataMocks.snapshot,
|
||||
);
|
||||
pluginMetadataMocks.loadPluginMetadataSnapshot.mockReset();
|
||||
pluginMetadataMocks.loadPluginMetadataSnapshot.mockReturnValue(pluginMetadataMocks.snapshot);
|
||||
});
|
||||
|
||||
it("reuses the current scoped metadata snapshot while resolving provider auth aliases", () => {
|
||||
expect(
|
||||
resolveEnvApiKey(
|
||||
"cloud-alias",
|
||||
{
|
||||
EXTERNAL_CLOUD_API_KEY: "secret",
|
||||
} as NodeJS.ProcessEnv,
|
||||
{
|
||||
config: {},
|
||||
workspaceDir: "/workspace",
|
||||
},
|
||||
),
|
||||
).toEqual({
|
||||
apiKey: "secret",
|
||||
source: "env: EXTERNAL_CLOUD_API_KEY",
|
||||
});
|
||||
expect(pluginMetadataMocks.loadPluginMetadataSnapshot).not.toHaveBeenCalled();
|
||||
expect(pluginMetadataMocks.getCurrentPluginMetadataSnapshot).toHaveBeenCalledWith({
|
||||
config: {},
|
||||
env: {
|
||||
EXTERNAL_CLOUD_API_KEY: "secret",
|
||||
},
|
||||
workspaceDir: "/workspace",
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -102,14 +102,14 @@ export function resolveEnvApiKey(
|
||||
options: EnvApiKeyLookupOptions = {},
|
||||
): EnvApiKeyResult | null {
|
||||
const normalizedProvider = normalizeProviderIdForAuth(provider);
|
||||
const normalized = options.aliasMap
|
||||
? (options.aliasMap[normalizedProvider] ?? normalizedProvider)
|
||||
: resolveProviderIdForAuth(provider, { env });
|
||||
const lookupParams = {
|
||||
config: options.config,
|
||||
workspaceDir: options.workspaceDir,
|
||||
env,
|
||||
};
|
||||
const normalized = options.aliasMap
|
||||
? (options.aliasMap[normalizedProvider] ?? normalizedProvider)
|
||||
: resolveProviderIdForAuth(provider, lookupParams);
|
||||
const candidateMap = options.candidateMap ?? resolveProviderEnvApiKeyCandidates(lookupParams);
|
||||
const authEvidenceMap = options.authEvidenceMap ?? resolveProviderEnvAuthEvidence(lookupParams);
|
||||
const applied = new Set(getShellEnvAppliedKeys());
|
||||
|
||||
Reference in New Issue
Block a user