diff --git a/modoboa/admin/api/v2/serializers.py b/modoboa/admin/api/v2/serializers.py index de29a9f21..49dbb27ff 100644 --- a/modoboa/admin/api/v2/serializers.py +++ b/modoboa/admin/api/v2/serializers.py @@ -725,10 +725,14 @@ class AliasSerializer(v1_serializers.AliasSerializer): class UserForwardSerializer(serializers.Serializer): """Serializer to define user forward.""" - recipients = serializers.CharField(required=False) + recipients = serializers.CharField( + required=False, allow_blank=True, allow_null=True + ) keepcopies = serializers.BooleanField(default=False) def validate_recipients(self, value): + if not value: + return value value = value.strip() recipients = [] if not value: diff --git a/modoboa/admin/api/v2/tests.py b/modoboa/admin/api/v2/tests.py index 3cfdb869d..155ce5e6e 100644 --- a/modoboa/admin/api/v2/tests.py +++ b/modoboa/admin/api/v2/tests.py @@ -727,12 +727,24 @@ class UserAccountViewSetTestCase(ModoAPITestCase): url = reverse("v2:user_account-forward") resp = self.client.get(url) self.assertEqual(resp.status_code, 200) - self.assertNotIn("recipients", resp.json()) + self.assertIs(resp.json()["recipients"], None) + self.assertEqual( + models.Alias.objects.filter( + internal=False, address=self.da.username + ).count(), + 0, + ) data = {"recipients": "user@domain.ext"} resp = self.client.post(url, data, format="json") self.assertEqual(resp.status_code, 200) self.assertEqual(self.da.mailbox.aliasrecipient_set.count(), 1) + self.assertEqual( + models.Alias.objects.filter( + internal=False, address=self.da.username + ).count(), + 1, + ) data = {"recipients": "user@domain.ext", "keepcopies": True} resp = self.client.post(url, data, format="json") @@ -753,6 +765,16 @@ class UserAccountViewSetTestCase(ModoAPITestCase): models.Alias.objects.filter(address=self.da.username).count(), 1 ) + data = {"recipients": "", "keepcopies": False} + resp = self.client.post(url, data, format="json") + self.assertEqual(resp.status_code, 200) + self.assertEqual( + models.Alias.objects.filter( + internal=False, address=self.da.username + ).count(), + 0, + ) + class AlarmViewSetTestCase(ModoAPITestCase): @classmethod