78 lines
2.0 KiB
JavaScript
78 lines
2.0 KiB
JavaScript
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
import { useAuth } from '../../../src/composables/useAuth.js';
|
|
|
|
/**
|
|
* Tests for useAuth composable
|
|
* Tests authentication state management
|
|
*/
|
|
describe('useAuth Composable', () => {
|
|
beforeEach(() => {
|
|
// Clear localStorage
|
|
localStorage.clear();
|
|
|
|
// Mock apiClient
|
|
vi.mock('../../../src/utilities/api-client.js', () => ({
|
|
apiClient: {
|
|
post: vi.fn(),
|
|
get: vi.fn(),
|
|
setDefaultHeader: vi.fn(),
|
|
removeDefaultHeader: vi.fn()
|
|
}
|
|
}));
|
|
});
|
|
|
|
afterEach(() => {
|
|
localStorage.clear();
|
|
vi.clearAllMocks();
|
|
});
|
|
|
|
it('creates useAuth composable', () => {
|
|
const auth = useAuth();
|
|
expect(auth).toBeDefined();
|
|
expect(auth.token).toBeDefined();
|
|
expect(auth.user).toBeDefined();
|
|
});
|
|
|
|
it('has authentication state properties', () => {
|
|
const auth = useAuth();
|
|
|
|
expect(auth.token.value).toBeNull();
|
|
expect(auth.user.value).toBeNull();
|
|
expect(auth.isAuthenticated.value).toBe(false);
|
|
expect(auth.isAdmin.value).toBe(false);
|
|
});
|
|
|
|
it('has authentication methods', () => {
|
|
const auth = useAuth();
|
|
|
|
expect(typeof auth.login).toBe('function');
|
|
expect(typeof auth.logout).toBe('function');
|
|
expect(typeof auth.initializeAuth).toBe('function');
|
|
expect(typeof auth.hasPermission).toBe('function');
|
|
});
|
|
|
|
it('exports setupAuthInterceptor function', () => {
|
|
const auth = useAuth();
|
|
expect(typeof auth.setupAuthInterceptor).toBe('function');
|
|
});
|
|
|
|
it('has hasPermission method', () => {
|
|
const auth = useAuth();
|
|
|
|
// Should handle missing user
|
|
expect(auth.hasPermission('admin')).toBe(false);
|
|
});
|
|
|
|
it('initializes with no token by default', () => {
|
|
const auth = useAuth();
|
|
expect(auth.token.value).toBeNull();
|
|
expect(auth.isAuthenticated.value).toBe(false);
|
|
});
|
|
|
|
it('has isLoading and error state', () => {
|
|
const auth = useAuth();
|
|
expect(auth.isLoading.value).toBe(false);
|
|
expect(auth.error.value).toBeNull();
|
|
});
|
|
});
|