Files
easyai-ai-gateway/apps/web/src/lib/auth-storage.test.ts
chengcheng 46bac51703 feat: 将 Gateway Web 迁移到 BFF 会话
浏览器只通过 HttpOnly Cookie 恢复统一认证状态,不再访问认证中心 Token Endpoint 或保存 OIDC Token。同步更新错误提示、部署配置和接入文档。
2026-07-13 19:09:57 +08:00

36 lines
1.5 KiB
TypeScript

import { beforeEach, describe, expect, it, vi } from 'vitest';
import { persistAccessToken, readStoredAccessToken } from './auth-storage';
class MemoryStorage {
private values = new Map<string, string>();
getItem(key: string) { return this.values.get(key) ?? null; }
setItem(key: string, value: string) { this.values.set(key, value); }
removeItem(key: string) { this.values.delete(key); }
}
describe('auth storage', () => {
beforeEach(() => {
vi.stubGlobal('window', { localStorage: new MemoryStorage(), sessionStorage: new MemoryStorage() });
});
it('persists only explicit local or externally supplied bearer tokens', () => {
persistAccessToken('local-token');
expect(readStoredAccessToken()).toBe('local-token');
expect(window.localStorage.getItem('easyai_ai_gateway_access_token')).toBe('local-token');
expect(window.sessionStorage.getItem('easyai_ai_gateway_oidc_access_token')).toBeNull();
});
it('removes and never reads a legacy OIDC browser token', () => {
window.sessionStorage.setItem('easyai_ai_gateway_oidc_access_token', 'legacy-oidc-token');
expect(readStoredAccessToken()).toBe('');
expect(window.sessionStorage.getItem('easyai_ai_gateway_oidc_access_token')).toBeNull();
});
it('clears both token stores on logout', () => {
window.sessionStorage.setItem('easyai_ai_gateway_oidc_access_token', 'legacy-oidc-token');
persistAccessToken('local-token');
persistAccessToken('');
expect(readStoredAccessToken()).toBe('');
});
});