Files
PromptX/src/tests/integration/dacp-integration.test.js

141 lines
3.7 KiB
JavaScript

const PouchCLI = require('../../lib/core/pouch/PouchCLI');
// Mock fetch for DACP service calls
global.fetch = jest.fn();
describe('DACP Integration Tests', () => {
let pouchCLI;
beforeEach(async () => {
pouchCLI = new PouchCLI();
await pouchCLI.initialize();
fetch.mockClear();
});
test('应该能够通过PouchCLI调用DACP命令', async () => {
const mockDACPResponse = {
request_id: 'req_123',
success: true,
data: {
execution_result: {
message_id: 'msg_456',
status: 'sent',
recipients: ['demo@example.com'],
subject: '会议通知',
body: '您好,\n\n给张三发个会议提醒邮件\n\n此邮件由DACP邮件服务自动生成。'
},
evaluation: {
criteria_met: true,
quality_score: 95
},
applied_guidelines: [
'HTML格式提升阅读体验',
'专业邮件签名'
],
performance_metrics: {
response_time: '150ms',
delivery_rate: 100
}
}
};
fetch.mockResolvedValueOnce({
ok: true,
json: async () => mockDACPResponse
});
const args = {
service_id: 'dacp-email-service',
action: 'send_email',
parameters: {
user_request: '给张三发个会议提醒邮件',
context: { urgency: 'high' }
}
};
const result = await pouchCLI.execute('dacp', args);
// 验证DACP服务被正确调用
expect(fetch).toHaveBeenCalledWith('http://localhost:3001/dacp', expect.objectContaining({
method: 'POST',
headers: { 'Content-Type': 'application/json' }
}));
// 验证请求体格式
const requestBody = JSON.parse(fetch.mock.calls[0][1].body);
expect(requestBody).toEqual({
service_id: 'dacp-email-service',
action: 'send_email',
parameters: {
user_request: '给张三发个会议提醒邮件',
context: { urgency: 'high' }
},
request_id: expect.stringMatching(/^req_\d+$/)
});
// 验证返回结果
expect(result).toEqual(mockDACPResponse);
});
test('应该正确处理DACP服务不可用的情况', async () => {
fetch.mockRejectedValueOnce(new Error('Connection refused'));
const args = {
service_id: 'dacp-email-service',
action: 'send_email',
parameters: {
user_request: '测试邮件'
}
};
await expect(pouchCLI.execute('dacp', args))
.rejects.toThrow('DACP服务调用失败: Connection refused');
});
test('应该正确处理未知DACP服务的情况', async () => {
const args = {
service_id: 'unknown-service',
action: 'some_action',
parameters: {
user_request: '测试请求'
}
};
await expect(pouchCLI.execute('dacp', args))
.rejects.toThrow('未找到DACP服务: unknown-service');
});
test('应该正确处理参数验证错误', async () => {
const args = {
service_id: 'dacp-email-service',
// 缺少action参数
parameters: {
user_request: '测试邮件'
}
};
await expect(pouchCLI.execute('dacp', args))
.rejects.toThrow('缺少必需参数: action');
});
test('应该支持多个DACP服务路由', async () => {
const mockResponse = { success: true };
fetch.mockResolvedValueOnce({
ok: true,
json: async () => mockResponse
});
// 测试日程服务路由
const args = {
service_id: 'dacp-calendar-service',
action: 'create_meeting',
parameters: {
user_request: '创建明天的会议'
}
};
await pouchCLI.execute('dacp', args);
expect(fetch).toHaveBeenCalledWith('http://localhost:3002/dacp', expect.any(Object));
});
});