fix(backends): validate backends.default and enabled backend set
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
import { configSchema } from '../config/schema.js';
|
||||
import { createConfiguredExternalBackend, createConfiguredExternalBackends } from './index.js';
|
||||
import { createConfiguredExternalBackend, createConfiguredExternalBackends, validateBackendConfig } from './index.js';
|
||||
|
||||
describe('createConfiguredExternalBackend', () => {
|
||||
const base = configSchema.parse({
|
||||
@@ -69,3 +69,38 @@ describe('createConfiguredExternalBackend', () => {
|
||||
expect(configured.backends.gemini?.name).toBe('gemini');
|
||||
});
|
||||
});
|
||||
|
||||
describe('validateBackendConfig', () => {
|
||||
const base = configSchema.parse({
|
||||
telegram: { bot_token: 'test', allowed_chat_ids: [1] },
|
||||
models: { default: { provider: 'anthropic', model: 'claude-3' } },
|
||||
});
|
||||
|
||||
it('throws when no backend is enabled', () => {
|
||||
const cfg = {
|
||||
...base,
|
||||
backends: {
|
||||
...base.backends,
|
||||
native: { enabled: false },
|
||||
codex: { ...base.backends.codex, enabled: false },
|
||||
claude_code: { ...base.backends.claude_code, enabled: false },
|
||||
opencode: { ...base.backends.opencode, enabled: false },
|
||||
gemini: { ...base.backends.gemini, enabled: false },
|
||||
},
|
||||
};
|
||||
expect(() => validateBackendConfig(cfg)).toThrow('No backend enabled');
|
||||
});
|
||||
|
||||
it('throws when backends.default points to a disabled backend', () => {
|
||||
const cfg = {
|
||||
...base,
|
||||
backends: {
|
||||
...base.backends,
|
||||
default: 'gemini' as const,
|
||||
codex: { ...base.backends.codex, enabled: true },
|
||||
gemini: { ...base.backends.gemini, enabled: false },
|
||||
},
|
||||
};
|
||||
expect(() => validateBackendConfig(cfg)).toThrow('backends.default=gemini is not enabled');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user