test: vitest setup + auth/login/cookie banner tests
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
/* Tests du contexte d'authentification : login / logout */
|
||||
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
||||
import { renderHook, act } from '@testing-library/react';
|
||||
import { AuthProvider, useAuth } from '../context/AuthContext';
|
||||
import * as api from '../services/api';
|
||||
|
||||
describe('AuthContext', () => {
|
||||
beforeEach(() => {
|
||||
localStorage.clear();
|
||||
vi.restoreAllMocks();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
vi.restoreAllMocks();
|
||||
});
|
||||
|
||||
function wrapper({ children }) {
|
||||
return <AuthProvider>{children}</AuthProvider>;
|
||||
}
|
||||
|
||||
it('login renseigne l\'utilisateur, logout le vide', async () => {
|
||||
const fakeUser = { username: 'bob', role: 'Consultant' };
|
||||
vi.spyOn(api, 'login').mockResolvedValue(fakeUser);
|
||||
const clearSpy = vi.spyOn(api, 'clearToken').mockImplementation(() => {});
|
||||
|
||||
const { result } = renderHook(() => useAuth(), { wrapper });
|
||||
|
||||
expect(result.current.user).toBeNull();
|
||||
expect(result.current.isAuthenticated).toBe(false);
|
||||
|
||||
await act(async () => {
|
||||
await result.current.login('bob', 'pwd');
|
||||
});
|
||||
|
||||
expect(result.current.user).toEqual(fakeUser);
|
||||
expect(result.current.isAuthenticated).toBe(true);
|
||||
/* L'utilisateur est persisté dans le localStorage */
|
||||
expect(JSON.parse(localStorage.getItem('ds_user'))).toEqual(fakeUser);
|
||||
|
||||
act(() => {
|
||||
result.current.logout();
|
||||
});
|
||||
|
||||
expect(result.current.user).toBeNull();
|
||||
expect(result.current.isAuthenticated).toBe(false);
|
||||
expect(localStorage.getItem('ds_user')).toBeNull();
|
||||
expect(clearSpy).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user