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; 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: '测试' }], }); }); });