From 66f3204349ec05632c861277aa9a5a6d7e645440 Mon Sep 17 00:00:00 2001 From: rain Date: Fri, 10 Jul 2026 16:29:31 +0800 Subject: [PATCH] fix: clear token after registration --- tests/api-client.test.js | 56 +++++++++++++++++++++++++++++++++++----- utils/ApiClient.js | 2 +- 2 files changed, 51 insertions(+), 7 deletions(-) diff --git a/tests/api-client.test.js b/tests/api-client.test.js index e22ef0b..ad44997 100644 --- a/tests/api-client.test.js +++ b/tests/api-client.test.js @@ -113,17 +113,61 @@ async function run() { assert.strictEqual(calls[7].data.grantType, 'sms'); assert.strictEqual(calls[7].data.tenantId, 'tenant-x'); assert.strictEqual(calls[7].data.clientId, 'client-x'); + assert.strictEqual(store.values['token-key'], 'server-token'); + + store.setItem('token-key', 'existing-token'); + const registerResponse = await client.register({ + phone: '13900000000', + password: 'register-md5', + nickName: 'new-user', + validToken: 'register-ticket' + }); + assert.deepStrictEqual(registerResponse, { + token: 'server-token', + url: '/genealogy/pc/auth/register' + }); + assert.strictEqual(calls[8].url, '/genealogy/pc/auth/register'); + assert.strictEqual(calls[8].headers.Authorization, undefined); + assert.strictEqual(calls[8].data.grantType, 'password'); + assert.strictEqual(calls[8].data.registerSource, 'PC'); + assert.strictEqual(store.getItem('token-key'), null); + + const failedRegisterStore = createStore({ + 'token-key': 'existing-token' + }); + const failedRegisterClient = GenealogyApi.createClient({ + baseUrl: 'https://test-genealogy-api.ddxcjp.cn', + clientId: 'client-x', + tenantId: 'tenant-x', + tokenKey: 'token-key', + tokenStore: failedRegisterStore, + axiosInstance: { + request: async () => { + throw new Error('register failed'); + } + } + }); + await assert.rejects( + failedRegisterClient.register({ + phone: '13900000001', + password: 'register-md5', + nickName: 'failed-user', + validToken: 'register-ticket' + }), + /register failed/ + ); + assert.strictEqual(failedRegisterStore.getItem('token-key'), 'existing-token'); await client.sendSmsCode({ sceneCode: 'WEB_H5_LOGIN', phone: '13800000000', validToken: 'captcha-ticket' }); - assert.strictEqual(calls[8].url, '/genealogy/pc/auth/sms/code'); - assert.strictEqual(calls[8].headers.Authorization, undefined); - assert.strictEqual(calls[8].data.grantType, 'sms'); - assert.strictEqual(calls[8].data.sceneCode, 'WEB_H5_LOGIN'); - assert.strictEqual(calls[8].data.validToken, 'captcha-ticket'); + assert.strictEqual(calls[9].url, '/genealogy/pc/auth/sms/code'); + assert.strictEqual(calls[9].headers.Authorization, undefined); + assert.strictEqual(calls[9].data.grantType, 'sms'); + assert.strictEqual(calls[9].data.sceneCode, 'WEB_H5_LOGIN'); + assert.strictEqual(calls[9].data.validToken, 'captcha-ticket'); assert.throws( () => client.listGenealogies(), @@ -133,7 +177,7 @@ async function run() { () => client.publicGenealogies(), (error) => error.code === 'PC_API_NOT_AVAILABLE' ); - assert.strictEqual(calls.length, 9); + assert.strictEqual(calls.length, 10); console.log('api-client tests passed'); } diff --git a/utils/ApiClient.js b/utils/ApiClient.js index b18c597..1e9f50b 100644 --- a/utils/ApiClient.js +++ b/utils/ApiClient.js @@ -178,7 +178,7 @@ auth: false, body: Object.assign({ grantType: 'password', registerSource: 'PC' }, withTenant(body)) }); - setToken(getTokenFromResponse(data)); + clearToken(); return data; }