mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	Expand edit_pdf validation tests in bulk edit API
This commit is contained in:
		| @@ -1369,7 +1369,8 @@ class BulkEditSerializer( | ||||
|             return bulk_edit.delete_pages | ||||
|         elif method == "edit_pdf": | ||||
|             return bulk_edit.edit_pdf | ||||
|         else: | ||||
|         else:  # pragma: no cover | ||||
|             # This will never happen as it is handled by the ChoiceField | ||||
|             raise serializers.ValidationError("Unsupported method.") | ||||
|  | ||||
|     def _validate_parameters_tags(self, parameters): | ||||
|   | ||||
| @@ -1393,6 +1393,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): | ||||
|         self.assertEqual(kwargs["user"], self.user) | ||||
|  | ||||
|     def test_edit_pdf_invalid_params(self): | ||||
|         # multiple documents | ||||
|         response = self.client.post( | ||||
|             "/api/documents/bulk_edit/", | ||||
|             json.dumps( | ||||
| @@ -1404,10 +1405,10 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): | ||||
|             ), | ||||
|             content_type="application/json", | ||||
|         ) | ||||
|  | ||||
|         self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) | ||||
|         self.assertIn(b"Edit PDF method only supports one document", response.content) | ||||
|  | ||||
|         # no operations specified | ||||
|         response = self.client.post( | ||||
|             "/api/documents/bulk_edit/", | ||||
|             json.dumps( | ||||
| @@ -1419,10 +1420,141 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): | ||||
|             ), | ||||
|             content_type="application/json", | ||||
|         ) | ||||
|  | ||||
|         self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) | ||||
|         self.assertIn(b"operations not specified", response.content) | ||||
|  | ||||
|         # operations not a list | ||||
|         response = self.client.post( | ||||
|             "/api/documents/bulk_edit/", | ||||
|             json.dumps( | ||||
|                 { | ||||
|                     "documents": [self.doc2.id], | ||||
|                     "method": "edit_pdf", | ||||
|                     "parameters": {"operations": "not_a_list"}, | ||||
|                 }, | ||||
|             ), | ||||
|             content_type="application/json", | ||||
|         ) | ||||
|         self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) | ||||
|         self.assertIn(b"operations must be a list", response.content) | ||||
|  | ||||
|         # invalid operation | ||||
|         response = self.client.post( | ||||
|             "/api/documents/bulk_edit/", | ||||
|             json.dumps( | ||||
|                 { | ||||
|                     "documents": [self.doc2.id], | ||||
|                     "method": "edit_pdf", | ||||
|                     "parameters": {"operations": ["invalid_operation"]}, | ||||
|                 }, | ||||
|             ), | ||||
|             content_type="application/json", | ||||
|         ) | ||||
|         self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) | ||||
|         self.assertIn(b"invalid operation entry", response.content) | ||||
|  | ||||
|         # page not an int | ||||
|         response = self.client.post( | ||||
|             "/api/documents/bulk_edit/", | ||||
|             json.dumps( | ||||
|                 { | ||||
|                     "documents": [self.doc2.id], | ||||
|                     "method": "edit_pdf", | ||||
|                     "parameters": {"operations": [{"page": "not_an_int"}]}, | ||||
|                 }, | ||||
|             ), | ||||
|             content_type="application/json", | ||||
|         ) | ||||
|         self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) | ||||
|         self.assertIn(b"page must be an integer", response.content) | ||||
|  | ||||
|         # rotate not an int | ||||
|         response = self.client.post( | ||||
|             "/api/documents/bulk_edit/", | ||||
|             json.dumps( | ||||
|                 { | ||||
|                     "documents": [self.doc2.id], | ||||
|                     "method": "edit_pdf", | ||||
|                     "parameters": {"operations": [{"page": 1, "rotate": "not_an_int"}]}, | ||||
|                 }, | ||||
|             ), | ||||
|             content_type="application/json", | ||||
|         ) | ||||
|         self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) | ||||
|         self.assertIn(b"rotate must be an integer", response.content) | ||||
|  | ||||
|         # doc not an int | ||||
|         response = self.client.post( | ||||
|             "/api/documents/bulk_edit/", | ||||
|             json.dumps( | ||||
|                 { | ||||
|                     "documents": [self.doc2.id], | ||||
|                     "method": "edit_pdf", | ||||
|                     "parameters": {"operations": [{"page": 1, "doc": "not_an_int"}]}, | ||||
|                 }, | ||||
|             ), | ||||
|             content_type="application/json", | ||||
|         ) | ||||
|         self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) | ||||
|         self.assertIn(b"doc must be an integer", response.content) | ||||
|  | ||||
|         # update_document not a boolean | ||||
|         response = self.client.post( | ||||
|             "/api/documents/bulk_edit/", | ||||
|             json.dumps( | ||||
|                 { | ||||
|                     "documents": [self.doc2.id], | ||||
|                     "method": "edit_pdf", | ||||
|                     "parameters": { | ||||
|                         "update_document": "not_a_bool", | ||||
|                         "operations": [{"page": 1}], | ||||
|                     }, | ||||
|                 }, | ||||
|             ), | ||||
|             content_type="application/json", | ||||
|         ) | ||||
|         self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) | ||||
|         self.assertIn(b"update_document must be a boolean", response.content) | ||||
|  | ||||
|         # include_metadata not a boolean | ||||
|         response = self.client.post( | ||||
|             "/api/documents/bulk_edit/", | ||||
|             json.dumps( | ||||
|                 { | ||||
|                     "documents": [self.doc2.id], | ||||
|                     "method": "edit_pdf", | ||||
|                     "parameters": { | ||||
|                         "include_metadata": "not_a_bool", | ||||
|                         "operations": [{"page": 1}], | ||||
|                     }, | ||||
|                 }, | ||||
|             ), | ||||
|             content_type="application/json", | ||||
|         ) | ||||
|         self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) | ||||
|         self.assertIn(b"include_metadata must be a boolean", response.content) | ||||
|  | ||||
|         # update_document True but output would be multiple documents | ||||
|         response = self.client.post( | ||||
|             "/api/documents/bulk_edit/", | ||||
|             json.dumps( | ||||
|                 { | ||||
|                     "documents": [self.doc2.id], | ||||
|                     "method": "edit_pdf", | ||||
|                     "parameters": { | ||||
|                         "update_document": True, | ||||
|                         "operations": [{"page": 1, "doc": 1}, {"page": 2, "doc": 2}], | ||||
|                     }, | ||||
|                 }, | ||||
|             ), | ||||
|             content_type="application/json", | ||||
|         ) | ||||
|         self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) | ||||
|         self.assertIn( | ||||
|             b"update_document only allowed with a single output document", | ||||
|             response.content, | ||||
|         ) | ||||
|  | ||||
|     @override_settings(AUDIT_LOG_ENABLED=True) | ||||
|     def test_bulk_edit_audit_log_enabled_simple_field(self): | ||||
|         """ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 shamoon
					shamoon