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

35 statements  

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

1from rest_framework.test import APITestCase 

2from rest_framework import status 

3from django.urls import reverse 

4from users.models.base_user import User 

5from rest_framework_simplejwt.tokens import RefreshToken 

6from rest_framework.test import APIClient 

7 

8 

9def get_token_for_user(user): 

10 refresh = RefreshToken.for_user(user) 

11 return str(refresh.access_token) 

12 

13class EmployeePermissionTests(APITestCase): 

14 def setUp(self): 

15 self.client: APIClient = APIClient() 

16 self.url = reverse("register-employe") 

17 

18 # Admin 

19 self.admin_user = User.objects.create_user( 

20 email="admin@example.com", 

21 password="adminpass123", 

22 role="admin", 

23 is_staff=True 

24 ) 

25 

26 # Client 

27 self.client_user = User.objects.create_user( 

28 email="client@example.com", 

29 password="clientpass123", 

30 role="client" 

31 ) 

32 

33 # Employé 

34 self.employee_user = User.objects.create_user( 

35 email="employee@example.com", 

36 password="employeepass123", 

37 role="employe" 

38 ) 

39 

40 def test_admin_can_access_employee_register(self): 

41 token = get_token_for_user(self.admin_user) 

42 self.client.credentials(HTTP_AUTHORIZATION=f'Bearer {token}') 

43 

44 data = { 

45 "email": "newemp@example.com", 

46 "password": "StrongPass123#", 

47 "nom": "Test", 

48 "prenom": "User", 

49 "matricule": "EMP999", 

50 "identifiant_telephone": "0102030405" 

51 } 

52 

53 response = self.client.post(self.url, data, format="json") 

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

55 

56 def test_client_cannot_access_employee_register(self): 

57 token = get_token_for_user(self.client_user) 

58 self.client.credentials(HTTP_AUTHORIZATION=f'Bearer {token}') 

59 

60 response = self.client.post(self.url, {}, format="json") 

61 self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) 

62 

63 def test_employee_cannot_access_employee_register(self): 

64 token = get_token_for_user(self.employee_user) 

65 self.client.credentials(HTTP_AUTHORIZATION=f'Bearer {token}') 

66 

67 response = self.client.post(self.url, {}, format="json") 

68 self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) 

69 

70 def test_unauthenticated_user_cannot_access_employee_register(self): 

71 response = self.client.post(self.url, {}, format="json") 

72 self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)