| import { afterEach, describe, expect, it, vi } from 'vitest'; |
|
|
| import { api } from '../src/api'; |
|
|
| describe('vis web api auth token handling', () => { |
| afterEach(() => { |
| vi.unstubAllGlobals(); |
| }); |
|
|
| it('scrubs token parameters from the browser URL after persisting the token', async () => { |
| const setItem = vi.fn(); |
| const getItem = vi.fn(); |
| const replaceState = vi.fn(); |
| const location = new URL('http://localhost:3001/?foo=bar&token=secret#token=secret&tab=wire'); |
|
|
| vi.stubGlobal('window', { |
| history: { replaceState }, |
| localStorage: { getItem, setItem }, |
| location, |
| }); |
| const fetchMock = vi.fn( |
| async () => |
| new Response('[]', { |
| headers: { 'content-type': 'application/json' }, |
| status: 200, |
| }), |
| ); |
| vi.stubGlobal('fetch', fetchMock); |
|
|
| await api.listSessions(); |
|
|
| expect(setItem).toHaveBeenCalledWith('kimi-vis-auth-token', 'secret'); |
| expect(fetchMock).toHaveBeenCalledWith('/api/sessions', { |
| headers: { accept: 'application/json', authorization: 'Bearer secret' }, |
| method: 'GET', |
| }); |
| expect(replaceState).toHaveBeenCalledWith(null, '', 'http://localhost:3001/?foo=bar#tab=wire'); |
| }); |
| }); |
|
|