From 15aa99e02ffd4aafa087e08923a2aa4d7a8e60b8 Mon Sep 17 00:00:00 2001 From: ml bonhomme <bonhomme@teklia.com> Date: Tue, 9 Jan 2024 08:36:51 +0000 Subject: [PATCH] Human readable file max size error in file import --- arkindex/process/serializers/files.py | 3 +++ arkindex/process/tests/test_datafile_api.py | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/arkindex/process/serializers/files.py b/arkindex/process/serializers/files.py index 32efdb8c4d..497aa2e5f5 100644 --- a/arkindex/process/serializers/files.py +++ b/arkindex/process/serializers/files.py @@ -71,6 +71,9 @@ class DataFileCreateSerializer(serializers.ModelSerializer): "s3_put_url", ) read_only_fields = ("id", "status", "s3_url", "s3_put_url") + extra_kwargs = { + "size": {"error_messages": {"max_value": "File size exceeds maximum limit of 2GB."}} + } def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/arkindex/process/tests/test_datafile_api.py b/arkindex/process/tests/test_datafile_api.py index 053f36a749..2d673ad00c 100644 --- a/arkindex/process/tests/test_datafile_api.py +++ b/arkindex/process/tests/test_datafile_api.py @@ -74,6 +74,18 @@ class TestDataFileApi(FixtureAPITestCase): ["some text", 1, "http://s3/upload_put_url"] ) + @patch("arkindex.project.aws.s3.meta.client.generate_presigned_url") + def test_create_datafile_size_exceeded(self, s3_presigned_url_mock): + self.client.force_login(self.user) + s3_presigned_url_mock.return_value = "http://s3/upload_put_url" + request = self.build_file_create_request(size=3147483647) + response = self.client.post(reverse("api:file-create"), request) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertDictEqual( + response.json(), + {"size": ["File size exceeds maximum limit of 2GB."]} + ) + @patch("arkindex.project.aws.s3.Object") def test_check_uploaded_datafile(self, s3_object): s3_object().content_length = 42 -- GitLab