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

31 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 

7 

8class ClientRegistrationTests(APITestCase): 

9 def setUp(self): 

10 self.url = reverse('register-client') 

11 self.valid_data = { 

12 'email': 'client@example.com', 

13 'password': 'Strongpassword123#', 

14 'nom': 'Dupont', 

15 'prenom': 'Jean', 

16 'telephone': '0601020304' 

17 } 

18 

19 def test_register_client_success(self): 

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

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

22 self.assertTrue(User.objects.filter(email=self.valid_data['email']).exists()) 

23 

24 def test_register_client_missing_fields(self): 

25 incomplete_data = self.valid_data.copy() 

26 incomplete_data.pop('nom') # Suppression d’un champ obligatoire 

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

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

29 self.assertIn('nom', response.data) 

30 

31 def test_register_client_missing_email(self): 

32 incomplete_data = self.valid_data.copy() 

33 incomplete_data.pop('email') 

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

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

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

37 

38 def test_register_client_duplicate_email(self): 

39 User.objects.create_user(email=self.valid_data['email'], password='dummy', role='client') 

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

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

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