/** * A7 regression: ModelConfigLoader auth_ref + api_key deprecation * Bug: api_key stored plaintext in YAML config. * Fix: added auth_ref field; api_key triggers deprecation warning. */ import { describe, it, expect } from 'bun:test' import { ModelConfigLoader } from '../src/ModelConfigLoader.js' import { writeFileSync, mkdirSync, rmSync, existsSync } from 'fs' import { join } from 'path' import { tmpdir } from 'os' describe('A7: ModelConfigLoader auth_ref', () => { const test_dir = join(tmpdir(), 'test-model-config-' + Date.now()) it('loads auth_ref from YAML config', () => { mkdirSync(test_dir, { recursive: true }) const config_path = join(test_dir, 'models.yaml') writeFileSync(config_path, [ 'test-model:', ' provider: anthropic', ' model: claude-3', ' auth_ref: env:ANTHROPIC_API_KEY', ].join('\n')) const loader = new ModelConfigLoader(config_path) const config = loader.get_model('test-model') expect(config).not.toBeUndefined() expect(config!.auth_ref).toBe('env:ANTHROPIC_API_KEY') expect(config!.provider).toBe('anthropic') rmSync(test_dir, { recursive: true, force: true }) }) it('validates config with auth_ref succeeds', () => { const loader = new ModelConfigLoader() const result = loader.validate({ provider: 'anthropic', model: 'claude-3', auth_ref: 'env:ANTHROPIC_API_KEY', }) expect(result.valid).toBe(true) }) it('validate requires provider and model', () => { const loader = new ModelConfigLoader() expect(loader.validate({ provider: '', model: 'x' } as any).valid).toBe(false) expect(loader.validate({ provider: 'x', model: '' } as any).valid).toBe(false) }) })