fix(web): 修复相对 OIDC 登录地址跳转
ci / verify (pull_request) Successful in 22m7s
ci / verify (pull_request) Successful in 22m7s
This commit is contained in:
@@ -26,6 +26,32 @@ describe('OIDC BFF navigation', () => {
|
||||
expect(target.searchParams.has('code_challenge')).toBe(false);
|
||||
});
|
||||
|
||||
it('resolves the production relative API base against the browser origin', async () => {
|
||||
vi.stubEnv('VITE_GATEWAY_API_BASE_URL', '/gateway-api');
|
||||
vi.stubGlobal('fetch', vi.fn().mockResolvedValue({
|
||||
ok: true,
|
||||
json: async () => ({
|
||||
enabled: true,
|
||||
oidcLogin: true,
|
||||
loginUrl: '/api/v1/auth/oidc/login',
|
||||
logoutUrl: '/api/v1/auth/oidc/logout',
|
||||
status: 'active',
|
||||
}),
|
||||
}));
|
||||
const assign = vi.fn();
|
||||
vi.stubGlobal('window', {
|
||||
location: { origin: 'https://ai.51easyai.com', pathname: '/workspace/overview', search: '', hash: '', assign },
|
||||
});
|
||||
|
||||
const { startOIDCLogin } = await import('./oidc');
|
||||
await startOIDCLogin();
|
||||
|
||||
const target = new URL(String(assign.mock.calls[0]?.[0]));
|
||||
expect(target.origin).toBe('https://ai.51easyai.com');
|
||||
expect(target.pathname).toBe('/gateway-api/api/v1/auth/oidc/login');
|
||||
expect(target.searchParams.get('returnTo')).toBe('/workspace/overview');
|
||||
});
|
||||
|
||||
it('submits logout as a top-level POST without exposing tokens', async () => {
|
||||
vi.stubEnv('VITE_GATEWAY_API_BASE_URL', 'https://gateway.example.com/gateway-api');
|
||||
vi.stubGlobal('fetch', vi.fn().mockResolvedValue({
|
||||
|
||||
Reference in New Issue
Block a user