const axios = require('axios');
|
|
const BASE_URL = 'http://localhost:8080/api';
|
|
async function testJwtParsing() {
|
console.log('=== 测试JWT token解析功能 ===\n');
|
|
try {
|
// 使用一个已知的有效token进行测试
|
// 这个token应该是之前生成的匿名用户token
|
const testToken = 'eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiItNzE5NzI4IiwiaWF0IjoxNzU5ODQzNzI5LCJleHAiOjE3NTk5MzAxMjksIndqb3BlbmlkIjoidGVzdF9vcGVuaWRfMTc1OTg0MzcyOTI5NSJ9.invalid'; // 这只是示例,需要使用真实token
|
|
console.log('1. 测试使用有效token查询用户信息...');
|
|
// 先测试userProfile查询
|
const userProfileResponse = await axios.post(`${BASE_URL}/graphql`, {
|
query: `
|
query {
|
userProfile {
|
id
|
name
|
phone
|
wxOpenId
|
gender
|
birthday
|
}
|
}
|
`
|
}, {
|
headers: {
|
'Authorization': `Bearer ${testToken}`,
|
'Content-Type': 'application/json'
|
}
|
});
|
|
if (userProfileResponse.data.data?.userProfile) {
|
console.log('✅ 用户信息查询成功');
|
const user = userProfileResponse.data.data.userProfile;
|
console.log('- 用户ID:', user.id);
|
console.log('- 姓名:', user.name);
|
console.log('- 电话:', user.phone);
|
console.log('- wxOpenId:', user.wxOpenId);
|
} else {
|
console.log('❌ 用户信息查询失败');
|
console.log('错误:', userProfileResponse.data.errors);
|
}
|
|
// 测试saveUserInfo
|
console.log('\n2. 测试保存用户信息...');
|
const saveUserResponse = await axios.post(`${BASE_URL}/graphql`, {
|
query: `
|
mutation SaveUserInfo($input: SaveUserInfoInput!) {
|
saveUserInfo(input: $input) {
|
success
|
message
|
user {
|
id
|
name
|
phone
|
wxOpenId
|
gender
|
birthday
|
}
|
}
|
}
|
`,
|
variables: {
|
input: {
|
name: '测试JWT解析',
|
phone: '13900139000',
|
gender: 'MALE',
|
birthday: '1990-01-01'
|
}
|
}
|
}, {
|
headers: {
|
'Authorization': `Bearer ${testToken}`,
|
'Content-Type': 'application/json'
|
}
|
});
|
|
if (saveUserResponse.data.data?.saveUserInfo?.success) {
|
console.log('✅ 保存用户信息成功');
|
const user = saveUserResponse.data.data.saveUserInfo.user;
|
console.log('- 用户ID:', user.id);
|
console.log('- 姓名:', user.name);
|
console.log('- 电话:', user.phone);
|
console.log('- wxOpenId:', user.wxOpenId);
|
console.log('- 性别:', user.gender);
|
console.log('- 生日:', user.birthday);
|
} else {
|
console.log('❌ 保存用户信息失败');
|
console.log('错误:', saveUserResponse.data.errors || saveUserResponse.data.data?.saveUserInfo?.message);
|
}
|
|
} catch (error) {
|
console.error('❌ 测试过程中发生错误:', error.response?.data || error.message);
|
|
// 如果是认证错误,说明token无效,我们需要先获取一个有效的token
|
if (error.response?.status === 401) {
|
console.log('\n尝试获取新的token...');
|
await getValidTokenAndTest();
|
}
|
}
|
}
|
|
async function getValidTokenAndTest() {
|
try {
|
// 尝试通过手机号登录获取token
|
console.log('尝试通过手机号登录获取token...');
|
const loginResponse = await axios.post(`${BASE_URL}/auth/login`, {
|
phone: '13981970816',
|
verificationCode: '123456'
|
});
|
|
if (loginResponse.data.success) {
|
console.log('✅ 登录成功,获得token');
|
const token = loginResponse.data.token;
|
|
// 使用这个token测试
|
await testWithToken(token);
|
} else {
|
console.log('❌ 登录失败:', loginResponse.data.message);
|
}
|
} catch (error) {
|
console.log('❌ 登录过程中发生错误:', error.response?.data || error.message);
|
}
|
}
|
|
async function testWithToken(token) {
|
console.log('\n使用有效token测试...');
|
|
try {
|
const saveUserResponse = await axios.post(`${BASE_URL}/graphql`, {
|
query: `
|
mutation SaveUserInfo($input: SaveUserInfoInput!) {
|
saveUserInfo(input: $input) {
|
success
|
message
|
user {
|
id
|
name
|
phone
|
wxOpenId
|
gender
|
birthday
|
}
|
}
|
}
|
`,
|
variables: {
|
input: {
|
name: '测试JWT解析(有效token)',
|
phone: '13981970816',
|
gender: 'MALE',
|
birthday: '1990-01-01'
|
}
|
}
|
}, {
|
headers: {
|
'Authorization': `Bearer ${token}`,
|
'Content-Type': 'application/json'
|
}
|
});
|
|
if (saveUserResponse.data.data?.saveUserInfo?.success) {
|
console.log('✅ 使用有效token保存用户信息成功');
|
const user = saveUserResponse.data.data.saveUserInfo.user;
|
console.log('- 用户ID:', user.id);
|
console.log('- 姓名:', user.name);
|
console.log('- 电话:', user.phone);
|
console.log('- wxOpenId:', user.wxOpenId);
|
} else {
|
console.log('❌ 保存用户信息失败');
|
console.log('错误:', saveUserResponse.data.errors || saveUserResponse.data.data?.saveUserInfo?.message);
|
}
|
} catch (error) {
|
console.error('❌ 测试过程中发生错误:', error.response?.data || error.message);
|
}
|
}
|
|
// 运行测试
|
testJwtParsing();
|