const axios = require('axios');
|
|
const BASE_URL = 'http://localhost:8080';
|
|
async function testJwtWxOpenidFixed() {
|
console.log('=== 测试修复后的JWT token和wxopenid处理 ===\n');
|
|
try {
|
// 1. 测试微信登录(匿名用户)
|
console.log('1. 测试微信登录(匿名用户)...');
|
const wxLoginResponse = await axios.post(`${BASE_URL}/api/auth/wx-login`, {
|
code: 'test_code_' + Date.now(),
|
wxOpenid: 'test_openid_' + Date.now(),
|
wxUnionid: 'test_unionid_' + Date.now(),
|
loginIp: '127.0.0.1',
|
deviceInfo: 'test_device',
|
phoneAuthorized: false
|
});
|
|
if (wxLoginResponse.data.success) {
|
console.log('✅ 微信登录成功');
|
console.log('- Token:', wxLoginResponse.data.token ? '已生成' : '未生成');
|
console.log('- 用户类型:', wxLoginResponse.data.userInfo?.userType);
|
|
const token = wxLoginResponse.data.token;
|
|
// 2. 使用匿名用户token保存用户信息
|
console.log('\n2. 使用匿名用户token保存用户信息...');
|
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: '测试用户',
|
phone: '13800138000',
|
gender: 'MALE',
|
birthday: '1990-01-01'
|
}
|
}
|
}, {
|
headers: {
|
'Authorization': `Bearer ${token}`,
|
'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);
|
|
// 3. 验证wxopenid是否正确记录
|
if (user.wxOpenId) {
|
console.log('✅ wxopenid已正确记录到数据库');
|
} else {
|
console.log('❌ wxopenid未记录到数据库');
|
}
|
|
// 4. 再次保存相同电话号码的用户信息(测试更新逻辑)
|
console.log('\n3. 测试重复保存(更新现有用户)...');
|
const updateUserResponse = 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: '测试用户(更新)',
|
phone: '13800138000',
|
gender: 'FEMALE',
|
birthday: '1991-02-02'
|
}
|
}
|
}, {
|
headers: {
|
'Authorization': `Bearer ${token}`,
|
'Content-Type': 'application/json'
|
}
|
});
|
|
if (updateUserResponse.data.data?.saveUserInfo?.success) {
|
console.log('✅ 更新用户信息成功');
|
const updatedUser = updateUserResponse.data.data.saveUserInfo.user;
|
console.log('- 用户ID:', updatedUser.id);
|
console.log('- 姓名:', updatedUser.name);
|
console.log('- 电话:', updatedUser.phone);
|
console.log('- wxOpenId:', updatedUser.wxOpenId);
|
console.log('- 性别:', updatedUser.gender);
|
console.log('- 生日:', updatedUser.birthday);
|
|
// 验证是否为同一用户(ID应该相同)
|
if (user.id === updatedUser.id) {
|
console.log('✅ 正确更新了现有用户,未创建新用户');
|
} else {
|
console.log('❌ 错误地创建了新用户,应该更新现有用户');
|
}
|
|
// 验证wxopenid是否保持一致
|
if (user.wxOpenId === updatedUser.wxOpenId) {
|
console.log('✅ wxopenid保持一致');
|
} else {
|
console.log('❌ wxopenid发生了变化');
|
}
|
} else {
|
console.log('❌ 更新用户信息失败');
|
console.log('错误:', updateUserResponse.data.errors || updateUserResponse.data.data?.saveUserInfo?.message);
|
}
|
|
} else {
|
console.log('❌ 保存用户信息失败');
|
console.log('错误:', saveUserResponse.data.errors || saveUserResponse.data.data?.saveUserInfo?.message);
|
}
|
|
} else {
|
console.log('❌ 微信登录失败');
|
console.log('错误:', wxLoginResponse.data.message);
|
}
|
|
} catch (error) {
|
console.error('❌ 测试过程中发生错误:', error.response?.data || error.message);
|
}
|
}
|
|
// 运行测试
|
testJwtWxOpenidFixed();
|