Codex Assistant
昨天 58d9f460b2f8c34430285115e2557d18333c5cab
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
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();