文件
OmniCard/backend/test/modules/ai/admin-deepseek.test.ts

75 行
2.6 KiB
TypeScript

import { AdminDeepSeekController } from '../../../src/modules/ai/controller/admin/deepseek';
import { DeepSeekService } from '../../../src/modules/ai/service/deepseek';
describe('T32 AdminDeepSeekController 后台接口测试', () => {
let controller: AdminDeepSeekController;
let mockService: jest.Mocked<DeepSeekService>;
beforeEach(() => {
mockService = {
getConfig: jest.fn().mockReturnValue({
apiKey: 'sk-1234567890abcdef',
baseUrl: 'https://api.deepseek.com',
model: 'deepseek-chat',
temperature: 0.7,
maxTokens: 2048,
timeoutMs: 30000,
enabled: true,
}),
updateConfig: jest.fn(),
isConfigured: jest.fn().mockReturnValue(true),
testConnection: jest.fn().mockResolvedValue({
success: true,
latencyMs: 120,
model: 'deepseek-chat',
message: 'DeepSeek API 连通成功',
}),
chatCompletion: jest.fn().mockResolvedValue('你好!我是 DeepSeek 智能模型。'),
} as any;
controller = new AdminDeepSeekController();
controller.deepSeekService = mockService;
// mock controller.ok
(controller as any).ok = (data: any) => ({ code: 1000, message: 'success', data });
});
it('1. POST /config 获取配置且正确脱敏 API Key', async () => {
const res: any = await controller.config();
expect(res.code).toBe(1000);
expect(res.data.isConfigured).toBe(true);
expect(res.data.apiKey).toBe('sk-1****cdef');
expect(res.data.baseUrl).toBe('https://api.deepseek.com');
});
it('2. POST /config 提交更新配置并返回新状态', async () => {
const res: any = await controller.config({
apiKey: 'sk-new-key-abcdef123456',
model: 'deepseek-reasoner',
});
expect(res.code).toBe(1000);
expect(mockService.updateConfig).toHaveBeenCalledWith({
apiKey: 'sk-new-key-abcdef123456',
model: 'deepseek-reasoner',
});
});
it('3. POST /test-connection 连通性测试', async () => {
const res: any = await controller.testConnection('sk-test-pass');
expect(res.code).toBe(1000);
expect(res.data.success).toBe(true);
expect(res.data.latencyMs).toBe(120);
expect(mockService.testConnection).toHaveBeenCalledWith('sk-test-pass');
});
it('4. POST /chat 调试对话调用', async () => {
const res: any = await controller.chat({
messages: [{ role: 'user', content: '测试' }],
});
expect(res.code).toBe(1000);
expect(res.data.reply).toBe('你好!我是 DeepSeek 智能模型。');
expect(mockService.chatCompletion).toHaveBeenCalledWith({
messages: [{ role: 'user', content: '测试' }],
});
});
});