]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Fix: Dont allow null custom_fields property via API (#5063)
authorshamoon <4887959+shamoon@users.noreply.github.com>
Tue, 19 Dec 2023 21:53:56 +0000 (13:53 -0800)
committerGitHub <noreply@github.com>
Tue, 19 Dec 2023 21:53:56 +0000 (21:53 +0000)
src/documents/serialisers.py
src/documents/tests/test_api_custom_fields.py

index b1cc1d7f0c2c9527993b58c03bc95274b82407ad..c6837b247e60a2e2dea42b856a929ca86c19174a 100644 (file)
@@ -591,7 +591,11 @@ class DocumentSerializer(
     archived_file_name = SerializerMethodField()
     created_date = serializers.DateField(required=False)
 
-    custom_fields = CustomFieldInstanceSerializer(many=True, allow_null=True)
+    custom_fields = CustomFieldInstanceSerializer(
+        many=True,
+        allow_null=False,
+        required=False,
+    )
 
     owner = serializers.PrimaryKeyRelatedField(
         queryset=User.objects.all(),
index 2eb46e3882e60a7f27dc5f601af9bd7c7f41c212..15abcd05358525a2a99faae6a2c174e9af2efc0f 100644 (file)
@@ -400,6 +400,32 @@ class TestCustomField(DirectoriesMixin, APITestCase):
         self.assertEqual(CustomFieldInstance.objects.count(), 0)
         self.assertEqual(len(doc.custom_fields.all()), 0)
 
+    def test_custom_field_not_null(self):
+        """
+        GIVEN:
+            - Existing document
+        WHEN:
+            - API request with custom_fields set to null
+        THEN:
+            - HTTP 400 is returned
+        """
+        doc = Document.objects.create(
+            title="WOW",
+            content="the content",
+            checksum="123",
+            mime_type="application/pdf",
+        )
+
+        resp = self.client.patch(
+            f"/api/documents/{doc.id}/",
+            data={
+                "custom_fields": None,
+            },
+            format="json",
+        )
+
+        self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST)
+
     def test_bidirectional_doclink_fields(self):
         """
         GIVEN: