48 lines
1.9 KiB
JavaScript
48 lines
1.9 KiB
JavaScript
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']
|
|
});
|
|
});
|