75 行
2.6 KiB
TypeScript
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: '测试' }],
|
|
});
|
|
});
|
|
});
|