Files
admin-web/src/api/http.test.ts
T

44 lines
1.4 KiB
TypeScript
Raw Normal View History

2026-07-30 17:59:43 +08:00
import axios, { AxiosHeaders } from 'axios'
import { describe, expect, it } from 'vitest'
import { ApiResponseError, getApiErrorDetails, unwrapApiResponse } from './http'
describe('API error diagnostics', () => {
it('keeps business request and trace identifiers when unwrapping fails', () => {
expect(() => unwrapApiResponse({
code: 'A0403',
message: '无权限',
data: null,
requestId: 'request-1',
traceId: 'trace-1',
})).toThrow(ApiResponseError)
try {
unwrapApiResponse({ code: 'A0403', message: '无权限', data: null, requestId: 'request-1', traceId: 'trace-1' })
} catch (error) {
expect(getApiErrorDetails(error)).toEqual({
message: '无权限',
code: 'A0403',
requestId: 'request-1',
traceId: 'trace-1',
})
}
})
it('extracts identifiers from an HTTP error envelope', () => {
const error = new axios.AxiosError('Request failed', 'ERR_BAD_RESPONSE', undefined, undefined, {
status: 503,
statusText: 'Service Unavailable',
headers: {},
config: { headers: new AxiosHeaders() },
data: { code: 'S0503', message: '服务不可用', requestId: 'request-2', traceId: 'trace-2' },
})
expect(getApiErrorDetails(error)).toEqual({
message: '服务不可用',
code: 'S0503',
requestId: 'request-2',
traceId: 'trace-2',
})
})
})