/**
 * 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)
  })
})
