Additional checks on account import.

fix #539
This commit is contained in:
Antoine Nguyen
2014-04-07 17:41:09 +02:00
parent 056a70c412
commit 4e4bd80074
2 changed files with 35 additions and 3 deletions
+11 -3
View File
@@ -153,7 +153,7 @@ def import_account_mailbox(user, account, row):
:param list rom: list of fields (strings)
"""
account.email = row[0].strip()
if account.email != "":
if account.email:
account.save()
mailbox, domname = split_mailbox(account.email)
try:
@@ -169,8 +169,16 @@ def import_account_mailbox(user, account, row):
except Mailbox.DoesNotExist:
pass
else:
raise Conflict(_("Mailbox %s already exists" % account.email))
quota = int(row[1].strip())
raise Conflict(_("Mailbox %s already exists" % account.email))
if len(row) == 1:
quota = None
else:
try:
quota = int(row[1].strip())
except ValueError:
raise BadRequest(
_("Account import failed (%s): wrong quota value" % account.username)
)
use_domain_quota = True if not quota else False
mb = Mailbox(address=mailbox, domain=domain,
user=account, use_domain_quota=use_domain_quota)
+24
View File
@@ -104,6 +104,16 @@ dlist; dlist@test.com; True; user1@test.com; user@extdomain.com
self.assertTrue(admin.is_owner(dlist))
def test_import_invalid_quota(self):
f = ContentFile(b"""
account; user1@test.com; toto; User; One; True; SimpleUsers; user1@test.com; ; test.com
""", name="identities.csv")
resp = self.clt.post(
reverse("modoboa.extensions.admin.views.import.import_identities"),
{"sourcefile": f, "crypt_password": True}
)
self.assertIn('wrong quota value', resp.content)
def test_import_quota_too_big(self):
self.clt.logout()
self.clt.login(username="admin@test.com", password="toto")
f = ContentFile(b"""
@@ -115,6 +125,20 @@ account; user1@test.com; toto; User; One; True; SimpleUsers; user1@test.com; 20
)
self.assertIn('Quota is greater than the allowed', resp.content)
def test_import_missing_quota(self):
f = ContentFile(b"""
account; user1@test.com; toto; User; One; True; SimpleUsers; user1@test.com
""", name="identities.csv")
resp = self.clt.post(
reverse("modoboa.extensions.admin.views.import.import_identities"),
{"sourcefile": f, "crypt_password": True}
)
account = User.objects.get(username="user1@test.com")
self.assertEqual(
account.mailbox_set.all()[0].quota,
account.mailbox_set.all()[0].domain.quota
)
def test_import_duplicate(self):
f = ContentFile(b"""
account; admin@test.com; toto; Admin; ; True; DomainAdmins; admin@test.com; 0; test.com