mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-31 10:37:12 -04:00 
			
		
		
		
	Fix python tests with auth on API endpoints, add python tests for User/Group endpoints
This commit is contained in:
		
							parent
							
								
									cf53d0866a
								
							
						
					
					
						commit
						0ffc9955b2
					
				| @ -19,6 +19,7 @@ except ImportError: | ||||
| 
 | ||||
| import pytest | ||||
| from django.conf import settings | ||||
| from django.contrib.auth.models import Group | ||||
| from django.contrib.auth.models import User | ||||
| from django.test import override_settings | ||||
| from django.utils import timezone | ||||
| @ -1152,8 +1153,8 @@ class TestDocumentApi(DirectoriesMixin, APITestCase): | ||||
|         ) | ||||
| 
 | ||||
|     def test_saved_views(self): | ||||
|         u1 = User.objects.create_user("user1") | ||||
|         u2 = User.objects.create_user("user2") | ||||
|         u1 = User.objects.create_superuser("user1") | ||||
|         u2 = User.objects.create_superuser("user2") | ||||
| 
 | ||||
|         v1 = SavedView.objects.create( | ||||
|             user=u1, | ||||
| @ -2664,7 +2665,7 @@ class TestApiStoragePaths(DirectoriesMixin, APITestCase): | ||||
|     def setUp(self) -> None: | ||||
|         super().setUp() | ||||
| 
 | ||||
|         user = User.objects.create(username="temp_admin") | ||||
|         user = User.objects.create_superuser(username="temp_admin") | ||||
|         self.client.force_authenticate(user=user) | ||||
| 
 | ||||
|         self.sp1 = StoragePath.objects.create(name="sp1", path="Something/{checksum}") | ||||
| @ -2929,3 +2930,262 @@ class TestTasks(APITestCase): | ||||
|         returned_data = response.data[0] | ||||
| 
 | ||||
|         self.assertEqual(returned_data["task_file_name"], "anothertest.pdf") | ||||
| 
 | ||||
| 
 | ||||
| class TestApiUser(APITestCase): | ||||
|     ENDPOINT = "/api/users/" | ||||
| 
 | ||||
|     def setUp(self): | ||||
|         super().setUp() | ||||
| 
 | ||||
|         self.user = User.objects.create_superuser(username="temp_admin") | ||||
|         self.client.force_authenticate(user=self.user) | ||||
| 
 | ||||
|     def test_get_users(self): | ||||
|         """ | ||||
|         GIVEN: | ||||
|             - Configured users | ||||
|         WHEN: | ||||
|             - API call is made to get users | ||||
|         THEN: | ||||
|             - Configured users are provided | ||||
|         """ | ||||
| 
 | ||||
|         user1 = User.objects.create( | ||||
|             username="testuser", | ||||
|             password="test", | ||||
|             first_name="Test", | ||||
|             last_name="User", | ||||
|         ) | ||||
| 
 | ||||
|         response = self.client.get(self.ENDPOINT) | ||||
| 
 | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertEqual(response.data["count"], 2) | ||||
|         returned_user1 = response.data["results"][1] | ||||
| 
 | ||||
|         from pprint import pprint | ||||
| 
 | ||||
|         pprint(returned_user1) | ||||
| 
 | ||||
|         self.assertEqual(returned_user1["username"], user1.username) | ||||
|         self.assertEqual(returned_user1["password"], "**********") | ||||
|         self.assertEqual(returned_user1["first_name"], user1.first_name) | ||||
|         self.assertEqual(returned_user1["last_name"], user1.last_name) | ||||
| 
 | ||||
|     def test_create_user(self): | ||||
|         """ | ||||
|         WHEN: | ||||
|             - API request is made to add a user account | ||||
|         THEN: | ||||
|             - A new user account is created | ||||
|         """ | ||||
| 
 | ||||
|         user1 = { | ||||
|             "username": "testuser", | ||||
|             "password": "test", | ||||
|             "first_name": "Test", | ||||
|             "last_name": "User", | ||||
|         } | ||||
| 
 | ||||
|         response = self.client.post( | ||||
|             self.ENDPOINT, | ||||
|             data=user1, | ||||
|         ) | ||||
| 
 | ||||
|         self.assertEqual(response.status_code, 201) | ||||
| 
 | ||||
|         returned_user1 = User.objects.get(username="testuser") | ||||
| 
 | ||||
|         from pprint import pprint | ||||
| 
 | ||||
|         pprint(returned_user1) | ||||
| 
 | ||||
|         self.assertEqual(returned_user1.username, user1["username"]) | ||||
|         self.assertEqual(returned_user1.first_name, user1["first_name"]) | ||||
|         self.assertEqual(returned_user1.last_name, user1["last_name"]) | ||||
| 
 | ||||
|     def test_delete_user(self): | ||||
|         """ | ||||
|         GIVEN: | ||||
|             - Existing user account | ||||
|         WHEN: | ||||
|             - API request is made to delete a user account | ||||
|         THEN: | ||||
|             - Account is deleted | ||||
|         """ | ||||
| 
 | ||||
|         user1 = User.objects.create( | ||||
|             username="testuser", | ||||
|             password="test", | ||||
|             first_name="Test", | ||||
|             last_name="User", | ||||
|         ) | ||||
| 
 | ||||
|         nUsers = len(User.objects.all()) | ||||
| 
 | ||||
|         response = self.client.delete( | ||||
|             f"{self.ENDPOINT}{user1.pk}/", | ||||
|         ) | ||||
| 
 | ||||
|         self.assertEqual(response.status_code, 204) | ||||
| 
 | ||||
|         self.assertEqual(len(User.objects.all()), nUsers - 1) | ||||
| 
 | ||||
|     def test_update_user(self): | ||||
|         """ | ||||
|         GIVEN: | ||||
|             - Existing user accounts | ||||
|         WHEN: | ||||
|             - API request is made to update user account | ||||
|         THEN: | ||||
|             - The user account is updated, password only updated if not '****' | ||||
|         """ | ||||
| 
 | ||||
|         user1 = User.objects.create( | ||||
|             username="testuser", | ||||
|             password="test", | ||||
|             first_name="Test", | ||||
|             last_name="User", | ||||
|         ) | ||||
| 
 | ||||
|         initial_password = user1.password | ||||
| 
 | ||||
|         response = self.client.patch( | ||||
|             f"{self.ENDPOINT}{user1.pk}/", | ||||
|             data={ | ||||
|                 "first_name": "Updated Name 1", | ||||
|                 "password": "******", | ||||
|             }, | ||||
|         ) | ||||
| 
 | ||||
|         self.assertEqual(response.status_code, 200) | ||||
| 
 | ||||
|         returned_user1 = User.objects.get(pk=user1.pk) | ||||
|         self.assertEqual(returned_user1.first_name, "Updated Name 1") | ||||
|         self.assertEqual(returned_user1.password, initial_password) | ||||
| 
 | ||||
|         response = self.client.patch( | ||||
|             f"{self.ENDPOINT}{user1.pk}/", | ||||
|             data={ | ||||
|                 "first_name": "Updated Name 2", | ||||
|                 "password": "123xyz", | ||||
|             }, | ||||
|         ) | ||||
| 
 | ||||
|         self.assertEqual(response.status_code, 200) | ||||
| 
 | ||||
|         returned_user2 = User.objects.get(pk=user1.pk) | ||||
|         self.assertEqual(returned_user2.first_name, "Updated Name 2") | ||||
|         self.assertNotEqual(returned_user2.password, initial_password) | ||||
| 
 | ||||
| 
 | ||||
| class TestApiGroup(APITestCase): | ||||
|     ENDPOINT = "/api/groups/" | ||||
| 
 | ||||
|     def setUp(self): | ||||
|         super().setUp() | ||||
| 
 | ||||
|         self.user = User.objects.create_superuser(username="temp_admin") | ||||
|         self.client.force_authenticate(user=self.user) | ||||
| 
 | ||||
|     def test_get_groups(self): | ||||
|         """ | ||||
|         GIVEN: | ||||
|             - Configured groups | ||||
|         WHEN: | ||||
|             - API call is made to get groups | ||||
|         THEN: | ||||
|             - Configured groups are provided | ||||
|         """ | ||||
| 
 | ||||
|         group1 = Group.objects.create( | ||||
|             name="Test Group", | ||||
|         ) | ||||
| 
 | ||||
|         response = self.client.get(self.ENDPOINT) | ||||
| 
 | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertEqual(response.data["count"], 1) | ||||
|         returned_group1 = response.data["results"][0] | ||||
| 
 | ||||
|         from pprint import pprint | ||||
| 
 | ||||
|         pprint(returned_group1) | ||||
| 
 | ||||
|         self.assertEqual(returned_group1["name"], group1.name) | ||||
| 
 | ||||
|     def test_create_group(self): | ||||
|         """ | ||||
|         WHEN: | ||||
|             - API request is made to add a group | ||||
|         THEN: | ||||
|             - A new group is created | ||||
|         """ | ||||
| 
 | ||||
|         group1 = { | ||||
|             "name": "Test Group", | ||||
|         } | ||||
| 
 | ||||
|         response = self.client.post( | ||||
|             self.ENDPOINT, | ||||
|             data=group1, | ||||
|         ) | ||||
| 
 | ||||
|         self.assertEqual(response.status_code, 201) | ||||
| 
 | ||||
|         returned_group1 = Group.objects.get(name="Test Group") | ||||
| 
 | ||||
|         from pprint import pprint | ||||
| 
 | ||||
|         pprint(returned_group1) | ||||
| 
 | ||||
|         self.assertEqual(returned_group1.name, group1["name"]) | ||||
| 
 | ||||
|     def test_delete_group(self): | ||||
|         """ | ||||
|         GIVEN: | ||||
|             - Existing group | ||||
|         WHEN: | ||||
|             - API request is made to delete a group | ||||
|         THEN: | ||||
|             - Group is deleted | ||||
|         """ | ||||
| 
 | ||||
|         group1 = Group.objects.create( | ||||
|             name="Test Group", | ||||
|         ) | ||||
| 
 | ||||
|         response = self.client.delete( | ||||
|             f"{self.ENDPOINT}{group1.pk}/", | ||||
|         ) | ||||
| 
 | ||||
|         self.assertEqual(response.status_code, 204) | ||||
| 
 | ||||
|         self.assertEqual(len(Group.objects.all()), 0) | ||||
| 
 | ||||
|     def test_update_group(self): | ||||
|         """ | ||||
|         GIVEN: | ||||
|             - Existing groups | ||||
|         WHEN: | ||||
|             - API request is made to update group | ||||
|         THEN: | ||||
|             - The group is updated | ||||
|         """ | ||||
| 
 | ||||
|         group1 = Group.objects.create( | ||||
|             name="Test Group", | ||||
|         ) | ||||
| 
 | ||||
|         response = self.client.patch( | ||||
|             f"{self.ENDPOINT}{group1.pk}/", | ||||
|             data={ | ||||
|                 "name": "Updated Name 1", | ||||
|             }, | ||||
|         ) | ||||
| 
 | ||||
|         self.assertEqual(response.status_code, 200) | ||||
| 
 | ||||
|         returned_group1 = Group.objects.get(pk=group1.pk) | ||||
|         self.assertEqual(returned_group1.name, "Updated Name 1") | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user