Unit tests added.

see #799
This commit is contained in:
Antoine Nguyen
2016-04-20 14:31:56 +02:00
parent 58c859febb
commit 12139ddfe6
4 changed files with 82 additions and 6 deletions
+1 -1
View File
@@ -76,7 +76,7 @@ class AliasForm(forms.ModelForm, DynamicForm):
raise forms.ValidationError(
_("You don't have access to this domain")
)
if self.instance.pk:
if not self.instance.pk:
try:
core_signals.can_create_object.send(
sender=self.__class__, context=domain,
+3 -1
View File
@@ -40,6 +40,8 @@ DEFAULT_DOMAIN_LIMITS = collections.OrderedDict((
"help": _("Maximum number of mailboxes allowed for this domain.")}),
("mailbox_aliases", {
"relation": "alias_set", "label": _("Mailbox aliases"),
"help": _("Maximum number of mailbox aliases allowed for this domain.")
"help": _(
"Maximum number of mailbox aliases allowed for this domain."),
"extra_filters": {"internal": False}
})
))
+6 -2
View File
@@ -120,6 +120,10 @@ class DomainObjectLimit(ObjectLimitMixin, models.Model):
@property
def current_value(self):
"""Return the current number of objects."""
if not self.definition:
definition = self.definition
if not definition:
raise RuntimeError("Bad limit {}".format(self.name))
return getattr(self.domain, self.definition["relation"]).count()
relation = getattr(self.domain, definition["relation"])
if "extra_filters" in definition:
relation = relation.filter(**definition["extra_filters"])
return relation.count()
+72 -2
View File
@@ -240,7 +240,8 @@ class ResellerTestCase(ResourceTestCase):
)
self._check_limit('domain_admins', 2, 2)
self.user.userobjectlimit_set.filter(name="mailboxes").update(max_value=3)
self.user.userobjectlimit_set.filter(
name="mailboxes").update(max_value=3)
self._create_account('user1@domain.tld')
user = User.objects.get(username='user1@domain.tld')
values = {
@@ -269,7 +270,8 @@ class ResellerTestCase(ResourceTestCase):
)
def test_domain_admins_limit_from_domain_tpl(self):
self.user.userobjectlimit_set.filter(name="domains").update(max_value=3)
self.user.userobjectlimit_set.filter(
name="domains").update(max_value=3)
self._create_domain('domain1.tld', withtpl=True)
self._create_domain('domain2.tld', withtpl=True)
self._check_limit('domain_admins', 2, 2)
@@ -455,8 +457,36 @@ class DomainLimitsTestCase(ModoTestCase):
domain.domainobjectlimit_set.get(
name="domain_aliases").max_value, 3)
def test_domain_aliases_limit(self):
"""Try to exceed defined limit."""
# Import
# API
domain = Domain.objects.get(name="test.com")
limit = domain.domainobjectlimit_set.get(name="domain_aliases")
self.assertFalse(limit.is_exceeded())
values = {
"name": domain.name, "quota": domain.quota,
"enabled": domain.enabled, "type": "domain",
"mailboxes_limit": 2, "mailbox_aliases_limit": 2,
"domain_aliases_limit": 2,
"aliases": "alias1.com", "aliases_1": "alias2.com"
}
self.ajax_post(
reverse("admin:domain_change", args=[domain.id]),
values
)
self.assertTrue(limit.is_exceeded())
values["aliases_2"] = "alias3.com"
self.ajax_post(
reverse("admin:domain_change", args=[domain.id]),
values, 403
)
def test_mailboxes_limit(self):
"""Try to exceed defined limits."""
# Import
# API
# LDAP ?
domain = Domain.objects.get(name="test.com")
domain.domainobjectlimit_set.filter(name="mailboxes").update(
max_value=3)
@@ -475,3 +505,43 @@ class DomainLimitsTestCase(ModoTestCase):
username = "titi@test.com"
self.ajax_post(reverse("admin:account_add"), values, 400)
def test_mailbox_aliases_limit(self):
"""Try to exceed defined limits."""
# Import
# API
domain = Domain.objects.get(name="test.com")
user = User.objects.get(username="user@test.com")
limit = domain.domainobjectlimit_set.get(name="mailbox_aliases")
limit.max_value = 4
limit.save()
self.assertFalse(limit.is_exceeded())
values = {
"username": user.username, "role": user.group,
"is_active": user.is_active, "email": user.email,
"quota_act": True,
"aliases": "alias@test.com", "aliases_1": "alias1@test.com"
}
self.ajax_post(
reverse("admin:account_change", args=[user.id]),
values
)
self.assertTrue(limit.is_exceeded())
values["aliases_2"] = "alias2@test.com"
self.ajax_post(
reverse("admin:account_change", args=[user.id]),
values, 403
)
limit.max_value = 5
limit.save()
values = {
"address": "forward2@test.com", "recipients": "user@test.com",
"enabled": True
}
self.ajax_post(reverse("admin:alias_add"), values)
self.assertTrue(limit.is_exceeded())
values["address"] = "forward3@test.com"
self.ajax_post(reverse("admin:alias_add"), values, 400)