From 2b23f5a9be9274a418241d04fc86104bd9526966 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Lebleu?= Date: Fri, 3 Jan 2020 15:16:36 +0100 Subject: [PATCH] admin: fix account removal from domain admins --- modoboa/admin/forms/account.py | 3 +-- modoboa/admin/tests/test_account.py | 35 +++++++++++++++++++++++++++-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/modoboa/admin/forms/account.py b/modoboa/admin/forms/account.py index b3b871984..644ddabec 100644 --- a/modoboa/admin/forms/account.py +++ b/modoboa/admin/forms/account.py @@ -494,8 +494,7 @@ class AccountPermissionsForm(forms.Form, DynamicForm): domain.add_admin(self.account) for domain in models.Domain.objects.get_for_admin(self.account): - if not filter(lambda name: self.cleaned_data[name] == domain.name, - self.cleaned_data.keys()): + if domain.name not in self.cleaned_data.values(): domain.remove_admin(self.account) diff --git a/modoboa/admin/tests/test_account.py b/modoboa/admin/tests/test_account.py index ead26e6a1..10e43ca6b 100644 --- a/modoboa/admin/tests/test_account.py +++ b/modoboa/admin/tests/test_account.py @@ -504,19 +504,50 @@ class PermissionsTestCase(ModoTestCase): self.client.logout() def test_domain_admins(self): + factories.DomainFactory(name="test2.com") + self.ajax_post( reverse("admin:account_change", args=[self.user.id]), self.values ) self.assertEqual(self.user.role, "DomainAdmins") + self.values["mailboxes_limit"] = "0" + self.values["mailbox_aliases_limit"] = "0" + self.values["domains"] = "" + self.values["domains_1"] = "test.com" + self.values["domains_2"] = "test2.com" + self.ajax_post( + reverse("admin:account_change", args=[self.user.id]), + self.values + ) + self.assertIn( + self.user, models.Domain.objects.get(name="test.com").admins.all() + ) + self.assertIn( + self.user, models.Domain.objects.get(name="test2.com").admins.all() + ) + + del self.values["domains_2"] + self.ajax_post( + reverse("admin:account_change", args=[self.user.id]), + self.values + ) + self.assertIn( + self.user, models.Domain.objects.get(name="test.com").admins.all() + ) + self.assertNotIn( + self.user, models.Domain.objects.get(name="test2.com").admins.all() + ) + self.values["role"] = "SimpleUsers" self.ajax_post( reverse("admin:account_change", args=[self.user.id]), self.values ) - self.assertNotEqual( - self.user.groups.first().name, "DomainAdmins") + self.assertFalse( + self.user.groups.filter(name="DomainAdmins").exists() + ) def test_superusers(self): self.values["role"] = "SuperAdmins"