From de1b345c742da10582071f7f7509a93b12ede77a Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Wed, 28 Jun 2017 11:36:49 +0200 Subject: [PATCH] [admin] fixed account update API endpoint. see #1160 --- modoboa/admin/serializers.py | 2 +- modoboa/admin/tests/test_api.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/modoboa/admin/serializers.py b/modoboa/admin/serializers.py index 6a12a4b06..a43a6d61d 100644 --- a/modoboa/admin/serializers.py +++ b/modoboa/admin/serializers.py @@ -293,7 +293,7 @@ class WritableAccountSerializer(AccountSerializer): def update(self, instance, validated_data): """Update account and associated objects.""" - mailbox_data = validated_data.pop("mailbox") + mailbox_data = validated_data.pop("mailbox", None) password = validated_data.pop("password", None) domains = validated_data.pop("domains", []) for key, value in validated_data.items(): diff --git a/modoboa/admin/tests/test_api.py b/modoboa/admin/tests/test_api.py index 44f146bcb..c1799e957 100644 --- a/modoboa/admin/tests/test_api.py +++ b/modoboa/admin/tests/test_api.py @@ -11,6 +11,7 @@ from django.core.urlresolvers import reverse from rest_framework.authtoken.models import Token from modoboa.admin import models as admin_models +from modoboa.core import factories as core_factories from modoboa.core import models as core_models from modoboa.lib.tests import ModoAPITestCase @@ -358,6 +359,19 @@ class AccountAPITestCase(ModoAPITestCase): account.refresh_from_db() self.assertTrue(account.check_password("Toto1234")) + def test_update_account_with_no_mailbox(self): + """Try to disable an account.""" + account = core_factories.UserFactory( + username="reseller", groups=("Resellers", )) + url = reverse("api:account-detail", args=[account.pk]) + data = { + "username": "reseller", + "role": account.role, + "is_active": False + } + response = self.client.put(url, data, format="json") + self.assertEqual(response.status_code, 200) + def test_patch_account(self): """Try to patch an account.""" account = core_models.User.objects.get(username="user@test.com")