const { test } = require('node:test'); const assert = require('node:assert/strict'); const ENV_KEYS = ['TRANSCRIBE_PROVIDER']; function withEnv(overrides, fn) { const previous = {}; ENV_KEYS.forEach((key) => { previous[key] = process.env[key]; delete process.env[key]; }); Object.entries(overrides).forEach(([key, value]) => { process.env[key] = value; }); try { return fn(); } finally { ENV_KEYS.forEach((key) => { if (previous[key] === undefined) delete process.env[key]; else process.env[key] = previous[key]; }); } } test('STT provider respects explicit provider override', () => { const sttProvider = require('../src/utils/sttProvider'); withEnv({ TRANSCRIBE_PROVIDER: 'litellm' }, () => { assert.equal(sttProvider.getSTTProvider({ google: true }), 'litellm'); }); }); test('STT provider auto-detects in existing priority order', () => { const sttProvider = require('../src/utils/sttProvider'); withEnv({}, () => { assert.equal(sttProvider.getSTTProvider({ google: true, aws: true, local: true, litellm: true, openai: true }), 'google'); assert.equal(sttProvider.getSTTProvider({ aws: true, local: true, litellm: true, openai: true }), 'aws'); assert.equal(sttProvider.getSTTProvider({ local: true, litellm: true, openai: true }), 'local'); assert.equal(sttProvider.getSTTProvider({ litellm: true, openai: true }), 'litellm'); assert.equal(sttProvider.getSTTProvider({ openai: true }), 'openai'); assert.equal(sttProvider.getSTTProvider({}), 'none'); }); }); test('STT model lists preserve admin defaults', () => { const sttProvider = require('../src/utils/sttProvider'); assert.deepEqual(sttProvider.getSTTModelLists(), { google: ['gemini-2.0-flash', 'gemini-2.5-flash', 'gemini-2.0-flash-lite'], aws: ['standard', 'medical'], openai: ['whisper-1'], litellm: ['whisper-1', 'gemini-2.0-flash', 'gemini-2.5-flash'], local: ['tiny', 'base', 'small', 'medium', 'large'] }); });