test-credential-service.ts 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #!/usr/bin/env npx tsx
  2. /**
  3. * Pacifica凭据管理服务测试脚本
  4. */
  5. import fs from 'fs';
  6. import { PacificaCredentialService } from './src/app/credential-service.js';
  7. async function testCredentialService() {
  8. console.log('🧪 开始测试Pacifica凭据管理服务');
  9. // 创建测试配置
  10. const testConfig = {
  11. pacifica: [
  12. {
  13. accountId: 'test-account',
  14. alias: '测试账户',
  15. privateKey: '5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3', // 测试私钥
  16. environment: 'development'
  17. }
  18. ]
  19. };
  20. const configPath = './credentials.test.json';
  21. fs.writeFileSync(configPath, JSON.stringify(testConfig, null, 2));
  22. let service: PacificaCredentialService | undefined;
  23. try {
  24. // 启动服务
  25. service = new PacificaCredentialService(configPath, 3002);
  26. await service.start();
  27. console.log('✅ 服务启动成功');
  28. // 测试1:获取服务状态
  29. console.log('\n📊 测试1: 获取服务状态');
  30. const statusResponse = await fetch('http://localhost:3002/api/v1/status');
  31. const statusData = await statusResponse.json();
  32. console.log('状态:', statusData.data.status);
  33. console.log('账户数量:', statusData.data.accounts.total);
  34. // 测试2:执行签名
  35. console.log('\n🔏 测试2: 执行Pacifica签名');
  36. const signRequest = {
  37. platformId: 'pacifica',
  38. accountId: 'test-account',
  39. data: {
  40. instruction: {
  41. type: 'place_order',
  42. market: 'BTC-USD',
  43. side: 'bid',
  44. amount: '0.001',
  45. price: '65000'
  46. },
  47. nonce: Date.now()
  48. }
  49. };
  50. const signResponse = await fetch('http://localhost:3002/api/v1/sign', {
  51. method: 'POST',
  52. headers: { 'Content-Type': 'application/json' },
  53. body: JSON.stringify(signRequest)
  54. });
  55. const signData = await signResponse.json();
  56. console.log('签名成功:', signData.success);
  57. console.log('算法:', signData.data.algorithm);
  58. console.log('签名长度:', signData.data.signature.length);
  59. console.log('执行时间:', signData.data.metadata.executionTimeMs, 'ms');
  60. // 测试3:获取账户列表
  61. console.log('\n📋 测试3: 获取账户列表');
  62. const accountsResponse = await fetch('http://localhost:3002/api/v1/accounts?platform=pacifica');
  63. const accountsData = await accountsResponse.json();
  64. console.log('账户数量:', accountsData.data.total);
  65. console.log('第一个账户ID:', accountsData.data.accounts[0].accountId);
  66. console.log('\n✅ 所有测试通过!');
  67. } catch (error) {
  68. console.error('❌ 测试失败:', error);
  69. } finally {
  70. // 清理
  71. if (service) {
  72. await service.stop();
  73. }
  74. if (fs.existsSync(configPath)) {
  75. fs.unlinkSync(configPath);
  76. }
  77. console.log('🧹 清理完成');
  78. }
  79. }
  80. // 运行测试
  81. if (import.meta.url === `file://${process.argv[1]}`) {
  82. testCredentialService().catch(console.error);
  83. }