优化
This commit is contained in:
@@ -104,4 +104,38 @@ describe('API error diagnostics', () => {
|
||||
expect(refresh).toHaveBeenCalledTimes(1)
|
||||
expect(expired).toHaveBeenCalledTimes(1)
|
||||
})
|
||||
|
||||
it('refreshes once and replays the original request with the rotated access token', async () => {
|
||||
const refresh = vi.fn(async () => 'access-rotated')
|
||||
const expired = vi.fn()
|
||||
let orderRequests = 0
|
||||
registerAuthRefreshHandler(refresh)
|
||||
registerAuthSessionExpiredHandler(expired)
|
||||
http.defaults.adapter = async (config) => {
|
||||
if (config.url === '/platform/v1/orders' && orderRequests++ === 0) {
|
||||
throw new axios.AxiosError('Unauthorized', 'ERR_BAD_REQUEST', config, undefined, {
|
||||
status: 401,
|
||||
statusText: 'Unauthorized',
|
||||
headers: {},
|
||||
config,
|
||||
data: { code: 'A0401', message: '登录状态已过期' },
|
||||
})
|
||||
}
|
||||
return {
|
||||
status: 200,
|
||||
statusText: 'OK',
|
||||
headers: {},
|
||||
config,
|
||||
data: { code: '200', message: 'success', data: [{ id: 'order-1' }] },
|
||||
}
|
||||
}
|
||||
|
||||
const response = await http.get('/platform/v1/orders')
|
||||
|
||||
expect(refresh).toHaveBeenCalledTimes(1)
|
||||
expect(expired).not.toHaveBeenCalled()
|
||||
expect(orderRequests).toBe(2)
|
||||
expect(response.config.headers.Authorization).toBe('Bearer access-rotated')
|
||||
expect(response.data).toEqual([{ id: 'order-1' }])
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user