const axios = require('axios');
|
|
async function testFriendlyErrors() {
|
console.log('🔍 测试友好错误信息');
|
console.log('='.repeat(50));
|
|
const graphqlUrl = 'http://localhost:8080/api/graphql';
|
|
// 测试1: 新版API - 无效code
|
console.log('1️⃣ 测试新版API - 无效code');
|
try {
|
const query1 = `
|
mutation {
|
getPhoneNumberByCode(code: "invalid_test_code_12345") {
|
phoneNumber
|
purePhoneNumber
|
countryCode
|
}
|
}
|
`;
|
|
const response1 = await axios.post(graphqlUrl, { query: query1 });
|
|
if (response1.data.errors) {
|
console.log('错误信息:', response1.data.errors[0].message);
|
|
// 检查是否包含友好的错误信息
|
const errorMsg = response1.data.errors[0].message;
|
if (errorMsg.includes('授权码已过期或无效')) {
|
console.log('✅ 友好错误信息正常工作');
|
} else if (errorMsg.includes('RuntimeException')) {
|
console.log('⚠️ 仍显示技术错误信息:', errorMsg);
|
} else {
|
console.log('📝 错误信息:', errorMsg);
|
}
|
}
|
} catch (error) {
|
console.log('❌ 请求异常:', error.message);
|
}
|
|
// 测试2: 旧版API - 无效数据
|
console.log('\n2️⃣ 测试旧版API - 无效数据');
|
try {
|
const query2 = `
|
mutation {
|
decryptPhoneNumber(
|
encryptedData: "invalid_data"
|
iv: "invalid_iv"
|
sessionKey: "invalid_session_key"
|
) {
|
phoneNumber
|
purePhoneNumber
|
countryCode
|
}
|
}
|
`;
|
|
const response2 = await axios.post(graphqlUrl, { query: query2 });
|
|
if (response2.data.errors) {
|
console.log('错误信息:', response2.data.errors[0].message);
|
|
// 检查是否包含友好的错误信息
|
const errorMsg = response2.data.errors[0].message;
|
if (errorMsg.includes('授权数据格式错误') || errorMsg.includes('授权数据已过期')) {
|
console.log('✅ 友好错误信息正常工作');
|
} else if (errorMsg.includes('RuntimeException')) {
|
console.log('⚠️ 仍显示技术错误信息:', errorMsg);
|
} else {
|
console.log('📝 错误信息:', errorMsg);
|
}
|
}
|
} catch (error) {
|
console.log('❌ 请求异常:', error.message);
|
}
|
|
// 测试3: 空code参数
|
console.log('\n3️⃣ 测试空code参数');
|
try {
|
const query3 = `
|
mutation {
|
getPhoneNumberByCode(code: "") {
|
phoneNumber
|
purePhoneNumber
|
countryCode
|
}
|
}
|
`;
|
|
const response3 = await axios.post(graphqlUrl, { query: query3 });
|
|
if (response3.data.errors) {
|
console.log('错误信息:', response3.data.errors[0].message);
|
}
|
} catch (error) {
|
console.log('❌ 请求异常:', error.message);
|
}
|
|
console.log('\n🔧 诊断结果:');
|
console.log('如果仍然显示"RuntimeException",可能的原因:');
|
console.log('1. GraphQL异常处理器覆盖了我们的友好错误信息');
|
console.log('2. 需要修改GraphQL配置以传递原始错误信息');
|
console.log('3. 异常在传递过程中被包装了');
|
}
|
|
testFriendlyErrors().catch(console.error);
|