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
« 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
9def get_token_for_user(user):
10 refresh = RefreshToken.for_user(user)
11 return str(refresh.access_token)
13class EmployeePermissionTests(APITestCase):
14 def setUp(self):
15 self.client: APIClient = APIClient()
16 self.url = reverse("register-employe")
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 )
26 # Client
27 self.client_user = User.objects.create_user(
28 email="client@example.com",
29 password="clientpass123",
30 role="client"
31 )
33 # Employé
34 self.employee_user = User.objects.create_user(
35 email="employee@example.com",
36 password="employeepass123",
37 role="employe"
38 )
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}')
44 data = {
45 "email": "newemp@example.com",
46 "password": "StrongPass123#",
47 "nom": "Test",
48 "prenom": "User",
49 "matricule": "EMP999",
50 "identifiant_telephone": "0102030405"
51 }
53 response = self.client.post(self.url, data, format="json")
54 self.assertEqual(response.status_code, status.HTTP_201_CREATED)
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}')
60 response = self.client.post(self.url, {}, format="json")
61 self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
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}')
67 response = self.client.post(self.url, {}, format="json")
68 self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
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)