From 8e432d344eb23c23f4efeb0e97481739aabaec46 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Tue, 31 Jan 2012 17:09:13 +0100 Subject: [PATCH] * Fixed broken unit tests (see #196) * No more fixtures for the 'limits' extension (were causing problems when running tests) (see #105) --- admin/fixtures/test_content.json | 2 +- admin/models.py | 15 +++++---- admin/tests.py | 35 ++++++++++---------- extensions/limits/__init__.py | 14 ++++++-- extensions/limits/fixtures/initial_data.json | 1 - 5 files changed, 39 insertions(+), 28 deletions(-) delete mode 100644 extensions/limits/fixtures/initial_data.json diff --git a/admin/fixtures/test_content.json b/admin/fixtures/test_content.json index 16964d753..7bed0447d 100644 --- a/admin/fixtures/test_content.json +++ b/admin/fixtures/test_content.json @@ -1 +1 @@ -[{"pk": 1, "model": "auth.User", "fields": {"username": "admin", "is_active": "True", "is_superuser": "True", "password": "sha1$94caa$79b64705ef5551b9cff704952f0b47294310ca07"}},{"pk": 2, "model": "auth.User", "fields": {"username": "user@test.com", "is_active": "True", "is_superuser": "False", "password": "sha1$94caa$79b64705ef5551b9cff704952f0b47294310ca07"}},{"pk": 1, "model": "admin.ObjectDates", "fields": {"creation": "2011-09-07 09:27:07.579603"}}, {"pk": 1, "model": "admin.Domain", "fields": {"name" : "test.com", "quota" : "100", "dates": "1"}}, {"pk": 1, "model": "admin.Mailbox", "fields": {"name": "Test user", "address": "user", "domain": "1", "dates": "1", "uid": "1001", "gid": "1001", "path": "user", "quota": "10", "user": "2"}}] +[{"pk": 2, "model": "admin.User", "fields": {"username": "user@test.com", "is_active": "True", "is_superuser": "False", "password": "{CLEAN}toto"}},{"pk": 1, "model": "admin.ObjectDates", "fields": {"creation": "2011-09-07 09:27:07.579603"}}, {"pk": 1, "model": "admin.Domain", "fields": {"name" : "test.com", "quota" : "100", "dates": "1"}}, {"pk": 1, "model": "admin.Mailbox", "fields": {"address": "user", "domain": "1", "dates": "1", "uid": "1001", "gid": "1001", "path": "user", "quota": "10", "user": "2"}}] diff --git a/admin/models.py b/admin/models.py index d88fe5a81..e75ae0898 100644 --- a/admin/models.py +++ b/admin/models.py @@ -481,13 +481,14 @@ class Mailbox(DatesAware): user.username = user.email = "%s@%s" % (self.address, self.domain.name) if kwargs.has_key("enabled"): user.is_active = kwargs["enabled"] - try: - fname, lname = kwargs["name"].split() - except ValueError: - fname = kwargs["name"] - lname = "" - user.first_name = fname - user.last_name = lname + if kwargs.has_key("name"): + try: + fname, lname = kwargs["name"].split() + except ValueError: + fname = kwargs["name"] + lname = "" + user.first_name = fname + user.last_name = lname if kwargs.has_key("password"): user.set_password(kwargs["password"]) try: diff --git a/admin/tests.py b/admin/tests.py index 45ba6f0ed..7806fca9c 100644 --- a/admin/tests.py +++ b/admin/tests.py @@ -52,16 +52,18 @@ class MailboxTestCase(TestCase): def test(self): dom = Domain.objects.get(name="test.com") mb = Mailbox() - mb.name = "Tester Toto" mb.address = "tester" mb.domain = dom - mb.save(password="toto", enabled=True) + mb.save(name="Tester toto", password="toto", enabled=True) self.assertEqual(mb.full_address, "tester@test.com") self.assertEqual(os.path.exists(mb.full_path), True) self.assertEqual(mb.quota, 100) self.assertEqual(mb.enabled, True) self.assertIsNotNone(mb.user) self.assertEqual(mb.user.username, mb.full_address) + self.assertTrue(mb.user.check_password("toto")) + self.assertEqual(mb.user.first_name, "Tester") + self.assertEqual(mb.user.last_name, "toto") self.assertEqual(dom.mailbox_count, 2) mb.address = "pouet" @@ -82,9 +84,9 @@ class MailboxTestCase(TestCase): * A normal user changes his password """ clt = Client() - self.assertEqual(clt.login(username="admin", password="toto"), True) + self.assertEqual(clt.login(username="admin", password="password"), True) response = clt.post("/modoboa/userprefs/changepassword/", - {"oldpassword" : "toto", + {"oldpassword" : "password", "newpassword" : "titi", "confirmation" : "titi"}) self.assertEqual(response.status_code, 200) obj = simplejson.loads(response.content) @@ -132,41 +134,40 @@ class PermissionsTestCase(TestCase): def setUp(self): self.clt = Client() - self.clt.login(username="admin", password="toto") - self.mb = Mailbox.objects.get(pk=1) + self.clt.login(username="admin", password="password") + self.user = User.objects.get(username="user@test.com") def tearDown(self): self.clt.logout() def test_domain_admins(self): - response = self.clt.post("/modoboa/admin/permissions/add/", - {"role" : "domain_admins", - "domain" : "1", "user" : "1"}) + response = self.clt.post("/modoboa/admin/permissions/domainadmin/promote/", + {"name" : self.user.username}) self.assertEqual(response.status_code, 200) obj = simplejson.loads(response.content) self.assertEqual(obj["status"], "ok") - self.assertEqual(is_domain_admin(self.mb.user), True) + self.assertEqual(self.user.belongs_to_group('DomainAdmins'), True) response = self.clt.get("/modoboa/admin/permissions/delete/", - {"role" : "domain_admins", "selection" : "1"}) + {"role" : "domain_admins", + "selection" : self.user.id}) self.assertEqual(response.status_code, 200) obj = simplejson.loads(response.content) self.assertEqual(obj["status"], "ok") - self.assertEqual(is_domain_admin(self.mb.user), False) - + self.assertEqual(self.user.belongs_to_group('DomainAdmins'), False) def test_superusers(self): response = self.clt.post("/modoboa/admin/permissions/add/", - {"role" : "super_admins", "user" : "2"}) + {"role" : "super_admins", "user" : self.user.id}) self.assertEqual(response.status_code, 200) obj = simplejson.loads(response.content) self.assertEqual(obj["status"], "ok") - self.assertEqual(User.objects.get(pk=2).is_superuser, True) + self.assertEqual(User.objects.get(username="user@test.com").is_superuser, True) response = self.clt.get("/modoboa/admin/permissions/delete/", - {"role" : "super_admins", "selection" : "2"}) + {"role" : "super_admins", "selection" : self.user.id}) self.assertEqual(response.status_code, 200) obj = simplejson.loads(response.content) self.assertEqual(obj["status"], "ok") - self.assertEqual(User.objects.get(pk=2).is_superuser, False) + self.assertEqual(User.objects.get(username="user@test.com").is_superuser, False) diff --git a/extensions/limits/__init__.py b/extensions/limits/__init__.py index b7f89e1c5..ffea693a2 100644 --- a/extensions/limits/__init__.py +++ b/extensions/limits/__init__.py @@ -21,10 +21,19 @@ baseurl = "limits" def init(): ct = ContentType.objects.get(app_label="admin", model="domain") - grp = Group.objects.get(name="DomainAdmins") + dagrp = Group.objects.get(name="DomainAdmins") for pname in ["view_domains", "add_domain", "change_domain", "delete_domain"]: perm = Permission.objects.get(content_type=ct, codename=pname) - grp.permissions.add(perm) + dagrp.permissions.add(perm) + dagrp.save() + + grp = Group(name="Resellers") + grp.save() + grp.permissions.add(*dagrp.permissions.all()) + ct = ContentType.objects.get_for_model(Permission) + grp.permissions.add(Permission.objects.get( + content_type=ct, codename="view_permissions" + )) grp.save() for user in User.objects.filter(groups__name='DomainAdmins'): @@ -40,6 +49,7 @@ def destroy(): perm = Permission.objects.get(content_type=ct, codename=pname) grp.permissions.remove(perm) grp.save() + Group.objects.get(name="Resellers").delete() def infos(): return { diff --git a/extensions/limits/fixtures/initial_data.json b/extensions/limits/fixtures/initial_data.json deleted file mode 100644 index 7f05e0df4..000000000 --- a/extensions/limits/fixtures/initial_data.json +++ /dev/null @@ -1 +0,0 @@ -[{"pk": 3, "model": "auth.group", "fields": {"name": "Resellers", "permissions": [["add_domain", "admin", "domain"], ["change_domain", "admin", "domain"], ["delete_domain", "admin", "domain"], ["view_domains", "admin", "domain"], ["add_mailbox", "admin", "mailbox"], ["change_mailbox", "admin", "mailbox"], ["delete_mailbox", "admin", "mailbox"], ["add_alias", "admin", "alias"], ["change_alias", "admin", "alias"], ["delete_alias", "admin", "alias"], ["view_domain", "admin", "domain"], ["view_mailboxes", "admin", "mailbox"], ["view_aliases", "admin", "alias"], ["view_domaliases", "admin", "domainalias"], ["add_domainalias", "admin", "domainalias"], ["change_domainalias", "admin", "domainalias"], ["delete_domainalias", "admin", "domainalias"], ["view_permissions", "auth", "permission"]]}}]