diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py index ca850e84f..1a491c5a4 100644 --- a/src/documents/serialisers.py +++ b/src/documents/serialisers.py @@ -1969,6 +1969,8 @@ class BulkEditSerializer( return ownerUser def _validate_parameters_set_permissions(self, parameters) -> None: + if "set_permissions" not in parameters: + raise serializers.ValidationError("set_permissions not specified") parameters["set_permissions"] = self.validate_set_permissions( parameters["set_permissions"], ) diff --git a/src/documents/tests/test_api_bulk_edit.py b/src/documents/tests/test_api_bulk_edit.py index dd62f0c74..fd202a04a 100644 --- a/src/documents/tests/test_api_bulk_edit.py +++ b/src/documents/tests/test_api_bulk_edit.py @@ -1068,6 +1068,30 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertCountEqual(args[0], [self.doc2.id, self.doc3.id]) self.assertEqual(len(kwargs["set_permissions"]["view"]["users"]), 2) + @mock.patch("documents.serialisers.bulk_edit.set_permissions") + def test_set_permissions_requires_set_permissions_parameter(self, m) -> None: + self.setup_mock(m, "set_permissions") + + response = self.client.post( + "/api/documents/bulk_edit/", + json.dumps( + { + "documents": [self.doc2.id], + "method": "set_permissions", + "parameters": { + "owner": self.user.id, + "merge": True, + "permissions": {"view": {"users": [self.user.id]}}, + }, + }, + ), + content_type="application/json", + ) + + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertIn(b"set_permissions not specified", response.content) + m.assert_not_called() + @mock.patch("documents.serialisers.bulk_edit.set_permissions") def test_set_permissions_merge(self, m) -> None: self.setup_mock(m, "set_permissions")