From a0f40d66daeb17cf645df2cf6aae86b513f70a40 Mon Sep 17 00:00:00 2001 From: Kipchirchir Sigei Date: Mon, 29 Aug 2022 12:02:36 +0300 Subject: [PATCH] Remove username max_length constraint in ShareProjectSerializer Signed-off-by: Kipchirchir Sigei --- .../serializers/share_project_serializer.py | 2 +- .../test_share_project_serializer.py | 35 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/onadata/libs/serializers/share_project_serializer.py b/onadata/libs/serializers/share_project_serializer.py index 0e8eddf1b2..f145573219 100644 --- a/onadata/libs/serializers/share_project_serializer.py +++ b/onadata/libs/serializers/share_project_serializer.py @@ -30,7 +30,7 @@ class ShareProjectSerializer(serializers.Serializer): """ project = ProjectField() - username = serializers.CharField(max_length=255) + username = serializers.CharField(required=True) role = serializers.CharField(max_length=50) def create(self, validated_data): diff --git a/onadata/libs/tests/serializers/test_share_project_serializer.py b/onadata/libs/tests/serializers/test_share_project_serializer.py index 368fe9c180..f99747d605 100644 --- a/onadata/libs/tests/serializers/test_share_project_serializer.py +++ b/onadata/libs/tests/serializers/test_share_project_serializer.py @@ -193,3 +193,38 @@ def test_error_on_inactive_user(self): self.assertFalse(serializer.is_valid()) self.assertEqual(str(serializer.errors['username'][0]), "The following user(s) is/are not active: dave, john") + + def test_no_username_char_limit(self): + """ + Test that the 255 char max_length constraint validation error is not + raised when trying to share a project with multiple users + """ + self._publish_xls_form_to_project() + project = Project.objects.last() + + # Test that it can share to multiple users + users_list = [ + "cowmirowlanchaharmonicabrownbreadokratea", + "harmonicaantlambchopdoggoatgarlicbread", + "pureenchantingjunopancakeshoagsobjectbat", + "toystoryshrimprhythmzebraaceventuraran", + "riversandwichnovaowlhighnoonstyxgiraffe", + "mayonnaiseearthyinceptionbatplanetarlog", + "fitnessleoiantgollumnotesmelodypinecone" + ] + for user in users_list: + # create users + _user = self._create_user(user, user) + self.assertFalse(ReadOnlyRole.user_has_role(_user, project)) + # check usernames length is > 255 chars + usernames = ','.join(users_list) + self.assertTrue(len(usernames) > 255) + data = { + 'project': project.id, + 'username': usernames, + 'role': ReadOnlyRole.name + } + + serializer = ShareProjectSerializer(data=data) + self.assertTrue(serializer.is_valid()) + self.assertFalse(len(serializer.errors) > 0)