43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
import { clearStoredApiKey, getStoredApiKey, setStoredApiKey } from './auth';
|
|
|
|
describe('API key storage', () => {
|
|
beforeEach(() => {
|
|
window.localStorage.clear();
|
|
});
|
|
|
|
it('stores and reads the API key from local storage', () => {
|
|
setStoredApiKey('write-secret');
|
|
|
|
expect(getStoredApiKey()).toBe('write-secret');
|
|
expect(window.localStorage.getItem('ctv-api-key')).toBe('write-secret');
|
|
});
|
|
|
|
it('trims blank API keys and clears storage', () => {
|
|
setStoredApiKey(' ');
|
|
|
|
expect(getStoredApiKey()).toBeNull();
|
|
expect(window.localStorage.getItem('ctv-api-key')).toBeNull();
|
|
});
|
|
|
|
it('clears a stored API key', () => {
|
|
setStoredApiKey('write-secret');
|
|
|
|
clearStoredApiKey();
|
|
|
|
expect(getStoredApiKey()).toBeNull();
|
|
});
|
|
|
|
it('ignores unavailable local storage when reading the API key', () => {
|
|
const localStorageGetter = vi
|
|
.spyOn(window, 'localStorage', 'get')
|
|
.mockImplementation(() => {
|
|
throw new Error('localStorage unavailable');
|
|
});
|
|
|
|
expect(getStoredApiKey()).toBeNull();
|
|
|
|
localStorageGetter.mockRestore();
|
|
});
|
|
});
|