test-apifox-skill.js 3.3 KB
#!/usr/bin/env node

/**
 * 测试 Apifox Skill 连接
 */

const path = require('path');
const ApifoxClient = require('/Users/huyirui/.claude/skills/apifox/apifox-client.js');

// 测试配置
const testConfig = {
  VITE_APIFOX_TOKEN: 'APS-jkT1Q61MCKgzgvfCL2euIR2TcgKsnSyc',
  VITE_APIFOX_PROJECT_ID: '6084040',
  VITE_APIFOX_CACHE_TIME: 3600
};

console.log('🧪 Apifox Skill 连接测试');
console.log('='.repeat(50));
console.log('');

// 显示配置信息
console.log('📝 测试配置:');
console.log(`  Token: ${testConfig.VITE_APIFOX_TOKEN.substring(0, 20)}...`);
console.log(`  项目 ID: ${testConfig.VITE_APIFOX_PROJECT_ID}`);
console.log('');

async function testConnection() {
  const client = new ApifoxClient(testConfig);

  try {
    // 测试 1: 获取项目信息
    console.log('📊 测试 1/3: 获取项目信息...');
    const project = await client.getProjectInfo();

    console.log('✅ 项目信息获取成功');
    console.log(`  项目名称: ${project.name || '未设置'}`);
    console.log(`  项目 ID: ${project.id}`);
    console.log(`  描述: ${project.description || '无'}`);
    console.log('');

    // 测试 2: 获取接口列表
    console.log('📋 测试 2/3: 获取接口列表...');
    const apis = await client.listAllApis();

    console.log(`✅ 接口列表获取成功,共 ${apis.length} 个接口`);
    console.log('');

    // 测试 3: 显示前 5 个接口
    console.log('🔍 测试 3/3: 显示前 5 个接口...');
    const sampleApis = apis.slice(0, 5);

    sampleApis.forEach((api, index) => {
      const method = (api.attributes?.method || 'GET').toUpperCase();
      const path = api.attributes?.path || '/';
      const name = api.attributes?.name || '未命名';

      console.log(`  ${index + 1}. ${method} ${path}`);
      console.log(`     ${name}`);
    });

    if (apis.length > 5) {
      console.log(`  ... 还有 ${apis.length - 5} 个接口`);
    }

    console.log('');
    console.log('='.repeat(50));
    console.log('✅ 所有测试通过!');
    console.log('');
    console.log('🎉 Token 和 Project ID 验证成功!');
    console.log('💡 你现在可以使用 Apifox Skill 了');

  } catch (error) {
    console.log('');
    console.log('❌ 测试失败');
    console.log('');

    if (error.message.includes('401')) {
      console.log('错误原因: HTTP 401 - Token 无效或已过期');
      console.log('');
      console.log('解决方案:');
      console.log('  1. 检查 Token 是否正确');
      console.log('  2. 在 Apifox 中重新生成 Token');
      console.log('  3. 更新 .env.apifox 文件');
    } else if (error.message.includes('403') || error.message.includes('404')) {
      console.log('错误原因: HTTP 403/404 - 项目不存在或无权限');
      console.log('');
      console.log('解决方案:');
      console.log('  1. 检查项目 ID 是否正确');
      console.log('  2. 确认账号有该项目的访问权限');
      console.log('  3. 在 Apifox 中检查项目设置');
    } else {
      console.log('错误原因:', error.message);
      console.log('');
      console.log('详细错误:');
      console.error(error);
    }

    process.exit(1);
  }
}

// 运行测试
testConnection().catch(err => {
  console.error('');
  console.error('❌ 测试失败:', err.message);
  console.error('');
  process.exit(1);
});