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 { describe, expect, it } from 'vitest';
|
||||||
|
|
||||||
import { configSchema } from '../config/schema.js';
|
import { configSchema } from '../config/schema.js';
|
||||||
import { createConfiguredExternalBackend, createConfiguredExternalBackends } from './index.js';
|
import { createConfiguredExternalBackend, createConfiguredExternalBackends, validateBackendConfig } from './index.js';
|
||||||
|
|
||||||
describe('createConfiguredExternalBackend', () => {
|
describe('createConfiguredExternalBackend', () => {
|
||||||
const base = configSchema.parse({
|
const base = configSchema.parse({
|
||||||
@@ -69,3 +69,38 @@ describe('createConfiguredExternalBackend', () => {
|
|||||||
expect(configured.backends.gemini?.name).toBe('gemini');
|
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