audit follow-up: continue warning burn-down in factory and service tests
This commit is contained in:
@@ -3,18 +3,20 @@ import { tmpdir } from 'os';
|
||||
import { join } from 'path';
|
||||
import { describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import { AnthropicClient } from '../models/anthropic.js';
|
||||
import { OpenAIClient } from '../models/openai.js';
|
||||
import { OllamaClient } from '../models/local/ollama.js';
|
||||
import { LlamaCppClient } from '../models/local/llamacpp.js';
|
||||
import { GeminiClient } from '../models/gemini.js';
|
||||
import { BedrockClient } from '../models/bedrock.js';
|
||||
import { GitHubModelsClient } from '../models/github.js';
|
||||
|
||||
async function loadFactory(): Promise<typeof import('./index.js')> {
|
||||
return import('./index.js');
|
||||
}
|
||||
|
||||
function getUseOAuth(client: unknown): boolean | undefined {
|
||||
const obj = client as { useOAuth?: boolean };
|
||||
return obj.useOAuth;
|
||||
}
|
||||
|
||||
function getConstructorName(value: unknown): string {
|
||||
const obj = value as { constructor?: { name?: string } };
|
||||
return obj.constructor?.name ?? '';
|
||||
}
|
||||
|
||||
describe('createClientFromConfig', () => {
|
||||
it('creates AnthropicClient for anthropic provider', async () => {
|
||||
const { createClientFromConfig } = await loadFactory();
|
||||
@@ -283,7 +285,7 @@ describe('createClientFromConfig', () => {
|
||||
api_key: 'sk-test',
|
||||
});
|
||||
expect(client.constructor.name).toBe('OpenAIClient');
|
||||
expect((client as any).useOAuth).toBe(false);
|
||||
expect(getUseOAuth(client)).toBe(false);
|
||||
});
|
||||
|
||||
it('auth_mode oauth selects Anthropic auth_token without requiring api_key', async () => {
|
||||
@@ -338,7 +340,7 @@ describe('createClientFromConfig', () => {
|
||||
auth_mode: 'oauth',
|
||||
});
|
||||
expect(client.constructor.name).toBe('OpenAIClient');
|
||||
expect((client as any).useOAuth).toBe(true);
|
||||
expect(getUseOAuth(client)).toBe(true);
|
||||
} finally {
|
||||
process.env.HOME = originalHome;
|
||||
}
|
||||
@@ -407,7 +409,7 @@ describe('createAutoFallbackClient', () => {
|
||||
model: 'claude-sonnet-4-20250514',
|
||||
});
|
||||
expect(client).toBeDefined();
|
||||
expect((client as any).constructor.name).toBe('GitHubModelsClient');
|
||||
expect(getConstructorName(client)).toBe('GitHubModelsClient');
|
||||
});
|
||||
|
||||
it('returns undefined for non-anthropic providers', async () => {
|
||||
|
||||
@@ -2,6 +2,11 @@ import { describe, it, expect } from 'vitest';
|
||||
import { discoverServices } from './services.js';
|
||||
import { ChannelRegistry } from '../../channels/registry.js';
|
||||
import type { Config } from '../../config/index.js';
|
||||
import type { CronJobConfig } from '../../config/schema.js';
|
||||
|
||||
function withMutableConfig(config: Config): Config & Record<string, unknown> {
|
||||
return config as Config & Record<string, unknown>;
|
||||
}
|
||||
|
||||
function makeBaseConfig(): Config {
|
||||
return {
|
||||
@@ -47,7 +52,7 @@ describe('discoverServices', () => {
|
||||
|
||||
it('marks configured channels as disconnected when adapter is not registered', () => {
|
||||
const cfg = makeBaseConfig();
|
||||
(cfg as any).telegram = { bot_token: 'x', allowed_chat_ids: [123] };
|
||||
withMutableConfig(cfg).telegram = { bot_token: 'x', allowed_chat_ids: [123] };
|
||||
|
||||
const reg = new ChannelRegistry();
|
||||
const services = discoverServices(cfg, reg);
|
||||
@@ -57,7 +62,7 @@ describe('discoverServices', () => {
|
||||
|
||||
it('uses adapter status when channel adapter is registered', () => {
|
||||
const cfg = makeBaseConfig();
|
||||
(cfg as any).telegram = { bot_token: 'x', allowed_chat_ids: [123] };
|
||||
withMutableConfig(cfg).telegram = { bot_token: 'x', allowed_chat_ids: [123] };
|
||||
|
||||
const reg = new ChannelRegistry();
|
||||
reg.register({
|
||||
@@ -77,8 +82,8 @@ describe('discoverServices', () => {
|
||||
const cfg = makeBaseConfig();
|
||||
cfg.automation.cron = [
|
||||
{ name: 'job', schedule: '0 0 * * *', message: 'hi', output: { channel: 'webchat', peer: 'x' }, enabled: true },
|
||||
] as any;
|
||||
cfg.mcp.servers = [{ name: 'srv', command: 'x', args: [] }] as any;
|
||||
] as CronJobConfig[];
|
||||
cfg.mcp.servers = [{ name: 'srv', command: 'x', args: [] }];
|
||||
|
||||
const reg = new ChannelRegistry();
|
||||
const services = discoverServices(cfg, reg);
|
||||
@@ -90,7 +95,14 @@ describe('discoverServices', () => {
|
||||
|
||||
it('marks audio transcription as configured and includes endpoint metadata', () => {
|
||||
const cfg = makeBaseConfig();
|
||||
(cfg as any).audio = { enabled: true, provider: { type: 'custom', endpoint: 'http://localhost:18801/v1/audio/transcriptions', model: 'whisper-1' } };
|
||||
withMutableConfig(cfg).audio = {
|
||||
enabled: true,
|
||||
provider: {
|
||||
type: 'custom',
|
||||
endpoint: 'http://localhost:18801/v1/audio/transcriptions',
|
||||
model: 'whisper-1',
|
||||
},
|
||||
};
|
||||
|
||||
const reg = new ChannelRegistry();
|
||||
const services = discoverServices(cfg, reg);
|
||||
|
||||
Reference in New Issue
Block a user