52 lines
1.4 KiB
TypeScript
Executable File
52 lines
1.4 KiB
TypeScript
Executable File
import { describe, it, expect, beforeEach, afterEach, jest } from '@jest/globals';
|
|
import { setAuthTokens, clearAuthTokens, getAccessToken } from '@/api/client';
|
|
|
|
// The interceptor internals rely on axios, which is hard to unit-test without
|
|
// a real HTTP stack. These tests focus on the exported token-management helpers
|
|
// that the interceptors and auth store both depend on.
|
|
|
|
describe('ApiClient token management', () => {
|
|
beforeEach(() => {
|
|
clearAuthTokens();
|
|
localStorage.clear();
|
|
});
|
|
|
|
afterEach(() => {
|
|
clearAuthTokens();
|
|
});
|
|
|
|
describe('WhenTokensAreSet', () => {
|
|
it('ThenGetAccessTokenReturnsTheAccessToken', () => {
|
|
setAuthTokens('access-abc', 'refresh-xyz');
|
|
|
|
expect(getAccessToken()).toBe('access-abc');
|
|
});
|
|
});
|
|
|
|
describe('WhenTokensAreCleared', () => {
|
|
it('ThenGetAccessTokenReturnsNull', () => {
|
|
setAuthTokens('access-abc', 'refresh-xyz');
|
|
clearAuthTokens();
|
|
|
|
expect(getAccessToken()).toBeNull();
|
|
});
|
|
});
|
|
|
|
describe('WhenSetAuthTokensIsCalledWithNull', () => {
|
|
it('ThenGetAccessTokenReturnsNull', () => {
|
|
setAuthTokens(null, null);
|
|
|
|
expect(getAccessToken()).toBeNull();
|
|
});
|
|
});
|
|
|
|
describe('WhenTokensAreUpdated', () => {
|
|
it('ThenGetAccessTokenReturnsTheLatestToken', () => {
|
|
setAuthTokens('first-token', 'first-refresh');
|
|
setAuthTokens('second-token', 'second-refresh');
|
|
|
|
expect(getAccessToken()).toBe('second-token');
|
|
});
|
|
});
|
|
});
|