Files
cn-rdms-web/tests/request-session-expired-message.test.ts
hongawen 387eb41412 fix(auth): 修复令牌过期处理和会话失效通知机制
- 移除 VITE_SERVICE_LOGOUT_CODES 中的 1002023000 状态码
- 将 VITE_SERVICE_EXPIRED_TOKEN_CODES 从 1002023001 改为 1002023000
- 修改 fetchRefreshToken 函数使用 params 传递 refreshToken 并设置 skipAuth
- 添加 skipAuth 配置选项避免给公开接口带上过期 access 头
- 实现 notifySessionExpired 函数确保并发请求只弹一次会话失效提示
- 在登录成功后复位会话失效标志以支持下次正常提示
- 更新 handleExpiredRequest 使用 refreshTokenPromise 替代 refreshTokenFn
2026-05-18 08:29:51 +08:00

79 lines
1.9 KiB
TypeScript

import assert from 'node:assert/strict';
import { describe, it } from 'node:test';
import {
SESSION_EXPIRED_MESSAGE,
shouldDeferBackendFailToCaller,
shouldSuppressErrorMessage
} from '../src/service/request/error-message';
describe('request session expired message handling', () => {
it('uses the unified session expired message', () => {
assert.equal(SESSION_EXPIRED_MESSAGE, '登录已失效,请重新登录');
});
it('suppresses raw backend errors when the request is marked silent', () => {
assert.equal(
shouldSuppressErrorMessage({
backendErrorCode: '500',
suppressErrorMessage: true,
logoutCodes: [],
modalLogoutCodes: [],
expiredTokenCodes: []
}),
true
);
});
it('lets refresh-token callers handle every backend failure silently', () => {
assert.equal(
shouldDeferBackendFailToCaller({
suppressErrorMessage: true,
skipTokenRefresh: true
}),
true
);
});
it('suppresses auth lifecycle error codes handled by request flow', () => {
assert.equal(
shouldSuppressErrorMessage({
backendErrorCode: '401',
logoutCodes: ['401'],
modalLogoutCodes: [],
expiredTokenCodes: []
}),
true
);
assert.equal(
shouldSuppressErrorMessage({
backendErrorCode: '7777',
logoutCodes: [],
modalLogoutCodes: ['7777'],
expiredTokenCodes: []
}),
true
);
assert.equal(
shouldSuppressErrorMessage({
backendErrorCode: '1002023000',
logoutCodes: [],
modalLogoutCodes: [],
expiredTokenCodes: ['1002023000']
}),
true
);
});
it('keeps normal backend errors visible', () => {
assert.equal(
shouldSuppressErrorMessage({
backendErrorCode: '500',
logoutCodes: ['401'],
modalLogoutCodes: ['7777'],
expiredTokenCodes: ['1002023000']
}),
false
);
});
});