agent-ecosystem/test/main/services/runtime/providerRuntimeEnv.test.ts

63 lines
2.1 KiB
TypeScript

// @vitest-environment node
import { describe, expect, it } from 'vitest';
import {
applyProviderRuntimeEnv,
resolveTeamProviderId,
} from '@main/services/runtime/providerRuntimeEnv';
describe('providerRuntimeEnv', () => {
it('pins gemini runtime mode and marks provider routing as host-managed', () => {
const env: NodeJS.ProcessEnv = {
CLAUDE_CODE_USE_OPENAI: '1',
CLAUDE_CODE_USE_GEMINI: undefined,
CLAUDE_CODE_USE_BEDROCK: '1',
};
const result = applyProviderRuntimeEnv(env, 'gemini');
expect(result.CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST).toBe('1');
expect(result.CLAUDE_CODE_ENTRY_PROVIDER).toBe('gemini');
expect(result.CLAUDE_CODE_USE_OPENAI).toBeUndefined();
expect(result.CLAUDE_CODE_USE_BEDROCK).toBeUndefined();
});
it('pins anthropic explicitly instead of relying on default provider fallback', () => {
const env: NodeJS.ProcessEnv = {
CLAUDE_CODE_ENTRY_PROVIDER: 'codex',
CLAUDE_CODE_USE_OPENAI: '1',
};
const result = applyProviderRuntimeEnv(env, 'anthropic');
expect(result.CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST).toBe('1');
expect(result.CLAUDE_CODE_ENTRY_PROVIDER).toBe('anthropic');
expect(result.CLAUDE_CODE_USE_OPENAI).toBeUndefined();
});
it('pins Claude Platform on AWS only when the workspace id is explicit', () => {
const awsOnlyEnv: NodeJS.ProcessEnv = {
AWS_PROFILE: 'cc',
AWS_REGION: 'us-west-2',
};
expect(applyProviderRuntimeEnv(awsOnlyEnv, 'anthropic').CLAUDE_CODE_ENTRY_PROVIDER).toBe(
'anthropic'
);
const platformEnv: NodeJS.ProcessEnv = {
ANTHROPIC_AWS_WORKSPACE_ID: 'wrkspc_123',
AWS_PROFILE: 'cc',
AWS_REGION: 'us-west-2',
};
expect(applyProviderRuntimeEnv(platformEnv, 'anthropic').CLAUDE_CODE_ENTRY_PROVIDER).toBe(
'claude-platform-aws'
);
});
it('preserves gemini as a valid team provider id', () => {
expect(resolveTeamProviderId('gemini')).toBe('gemini');
expect(resolveTeamProviderId('codex')).toBe('codex');
expect(resolveTeamProviderId('opencode')).toBe('opencode');
expect(resolveTeamProviderId(undefined)).toBe('anthropic');
});
});