import { describe, expect, it } from 'vitest'; import { OPENAI_CODEX_RUNTIME_PROVIDER_KEY, filterActiveProviderKeysForUi, getOpenClawProviderKeyForType, isOpenClawOAuthPluginProviderKey, resolveOpenClawProviderKey, } from '@electron/utils/provider-keys'; describe('provider-keys', () => { it('maps OpenAI browser OAuth accounts to the openai-codex runtime key', () => { expect(resolveOpenClawProviderKey({ vendorId: 'openai', id: 'openai-personal', authMode: 'oauth_browser', })).toBe(OPENAI_CODEX_RUNTIME_PROVIDER_KEY); expect(resolveOpenClawProviderKey({ vendorId: 'openai', id: 'openai-personal', authMode: 'api_key', })).toBe('openai'); }); it('keeps custom multi-instance hashing behavior', () => { expect(getOpenClawProviderKeyForType('custom', 'my-local')).toBe('custom-mylocal'); }); it('treats openai-codex as an OAuth plugin provider key', () => { expect(isOpenClawOAuthPluginProviderKey('openai-codex')).toBe(true); }); it('drops bare openai from the UI list when only openai-codex OAuth is active', () => { expect(filterActiveProviderKeysForUi(['openai', 'openai-codex', 'anthropic'])).toEqual([ 'openai-codex', 'anthropic', ]); }); it('keeps openai in the UI list when an API key is configured alongside Codex OAuth', () => { expect(filterActiveProviderKeysForUi(['openai', 'openai-codex'], { hasConfiguredOpenAiApiKey: true, })).toEqual(['openai', 'openai-codex']); }); });