Files
nexu-io--open-design/apps/daemon/tests/codex-provider-env-key.test.ts
wehub-resource-sync 070959e133
landing-page-staging / Deploy landing page to staging (push) Has been skipped
landing-page-ci / Validate landing page (push) Failing after 4s
visual-baseline / Capture visual baselines (push) Has been cancelled
bake-plugin-previews / Bake plugin previews (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:00:47 +08:00

85 lines
2.9 KiB
TypeScript

// Regression coverage for #4456 (Case 1): the Codex auth probe must recognize
// a working custom provider whose API key lives in a provider-specific
// `env_key` (e.g. AZURE_OPENAI_API_KEY) declared in ~/.codex/config.toml, not
// just CODEX_API_KEY / OPENAI_API_KEY. `extractCodexProviderEnvKey` resolves
// the selected provider's `env_key` from the config text.
import { describe, expect, it } from 'vitest';
import { extractCodexProviderEnvKey } from '../src/codex-config-normalize.js';
describe('extractCodexProviderEnvKey', () => {
it('resolves the selected custom provider env_key', () => {
const toml = [
'model_provider = "azure"',
'',
'[model_providers.azure]',
'base_url = "https://example.openai.azure.com/openai/v1"',
'env_key = "AZURE_OPENAI_API_KEY"',
].join('\n');
expect(extractCodexProviderEnvKey(toml)).toBe('AZURE_OPENAI_API_KEY');
});
it('picks the env_key of the SELECTED provider among several', () => {
const toml = [
'model_provider = "azure"',
'[model_providers.openai]',
'env_key = "OPENAI_API_KEY"',
'[model_providers.azure]',
'env_key = "AZURE_OPENAI_API_KEY"',
].join('\n');
expect(extractCodexProviderEnvKey(toml)).toBe('AZURE_OPENAI_API_KEY');
});
it('honors single quotes and trailing comments', () => {
const toml = [
"model_provider = 'azure' # selected",
'[model_providers.azure]',
"env_key = 'AZURE_OPENAI_API_KEY' # the key var",
].join('\n');
expect(extractCodexProviderEnvKey(toml)).toBe('AZURE_OPENAI_API_KEY');
});
it('handles a quoted provider table header', () => {
const toml = [
'model_provider = "azure"',
'[model_providers."azure"]',
'env_key = "AZURE_OPENAI_API_KEY"',
].join('\n');
expect(extractCodexProviderEnvKey(toml)).toBe('AZURE_OPENAI_API_KEY');
});
it('returns null when no provider is selected', () => {
const toml = [
'[model_providers.azure]',
'env_key = "AZURE_OPENAI_API_KEY"',
].join('\n');
expect(extractCodexProviderEnvKey(toml)).toBeNull();
});
it('returns null when the selected provider declares no env_key', () => {
const toml = [
'model_provider = "azure"',
'[model_providers.azure]',
'base_url = "https://example.openai.azure.com/openai/v1"',
].join('\n');
expect(extractCodexProviderEnvKey(toml)).toBeNull();
});
it('does not leak an env_key from a non-selected provider table', () => {
const toml = [
'model_provider = "azure"',
'[model_providers.openai]',
'env_key = "OPENAI_API_KEY"',
'[model_providers.azure]',
'base_url = "https://example.openai.azure.com/openai/v1"',
].join('\n');
expect(extractCodexProviderEnvKey(toml)).toBeNull();
});
it('returns null for empty or non-provider config', () => {
expect(extractCodexProviderEnvKey('')).toBeNull();
expect(extractCodexProviderEnvKey('model = "gpt-5"\n')).toBeNull();
});
});