Coverage for authentication\test\test_EmployeRegistration.py: 100%

45 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2025-10-13 15:18 +0200

1from django.urls import reverse 

2from rest_framework import status 

3from rest_framework.test import APITestCase 

4from users.models.base_user import User 

5from rest_framework.response import Response 

6from typing import cast 

7from rest_framework.test import APIClient 

8 

9class EmployeeRegistrationTests(APITestCase): 

10 

11 def setUp(self): 

12 self.client: APIClient 

13 self.url = reverse('register-employe') 

14 self.valid_data = { 

15 'email': 'employe@example.com', 

16 'password': 'Password123!', 

17 'nom': 'Smith', 

18 'prenom': 'John', 

19 'matricule': 'EMP001', 

20 'identifiant_telephone': '1234567890' 

21 } 

22 

23 self.admin_user = User.objects.create_user( 

24 email='admin@example.com', 

25 password='AdminPassword123!', 

26 role='admin', 

27 is_staff=True 

28 ) 

29 self.client.force_authenticate(user=self.admin_user) 

30 

31 def test_register_employee_success(self): 

32 response = self.client.post(self.url, self.valid_data, format='json') 

33 self.assertEqual(response.status_code, status.HTTP_201_CREATED) 

34 self.assertTrue(User.objects.filter(email='employe@example.com').exists()) 

35 user = User.objects.get(email='employe@example.com') 

36 self.assertEqual(user.role, 'employe') 

37 self.assertTrue(hasattr(user, 'employe_profile')) 

38 self.assertEqual(user.employe_profile.matricule, 'EMP001') 

39 

40 def test_register_employee_missing_fields(self): 

41 incomplete_data = self.valid_data.copy() 

42 incomplete_data.pop('matricule') 

43 response = cast(Response, self.client.post(self.url, incomplete_data, format='json')) 

44 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) 

45 self.assertIn('matricule', response.data) 

46 

47 def test_register_employee_duplicate_email(self): 

48 User.objects.create_user(email='employe@example.com', password='dummy', role='employe') 

49 response = cast(Response, self.client.post(self.url, self.valid_data, format='json')) 

50 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) 

51 self.assertIn('email', response.data) 

52 

53 def test_register_employee_invalid_email(self): 

54 invalid_data = self.valid_data.copy() 

55 invalid_data['email'] = 'not-an-email' 

56 response = cast(Response, self.client.post(self.url, invalid_data, format='json')) 

57 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) 

58 self.assertIn('email', response.data) 

59 

60 def test_register_employee_short_password(self): 

61 invalid_data = self.valid_data.copy() 

62 invalid_data['password'] = '123' 

63 response = cast(Response, self.client.post(self.url, invalid_data, format='json')) 

64 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) 

65 self.assertIn('password', response.data)