Server IP : 85.214.239.14 / Your IP : 3.142.98.5 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /srv/modoboa/env/lib/python3.5/site-packages/modoboa/limits/tests/ |
Upload File : |
"""Test cases for the limits extension.""" from django.urls import reverse from modoboa.admin import factories as admin_factories from modoboa.admin.models import Domain from modoboa.core import factories as core_factories from modoboa.core.models import User from modoboa.lib import tests as lib_tests from .. import utils class DomainLimitsTestCase(lib_tests.ModoTestCase): """Per-domain limits tests.""" @classmethod def setUpTestData(cls): # NOQA:N802 """Create test data.""" super(DomainLimitsTestCase, cls).setUpTestData() cls.localconfig.parameters.set_values({ "enable_admin_limits": False, "enable_domain_limits": True }) for name, _definition in utils.get_domain_limit_templates(): cls.localconfig.parameters.set_value( "deflt_domain_{0}_limit".format(name), 2) cls.localconfig.save() admin_factories.populate_database() def test_set_limits(self): """Try to set limits for a given domain.""" domain = Domain.objects.get(name="test.com") values = { "name": domain.name, "quota": domain.quota, "default_mailbox_quota": domain.default_mailbox_quota, "enabled": domain.enabled, "type": "domain", "mailboxes_limit": 3, "mailbox_aliases_limit": 3, "domain_aliases_limit": 3, "domain_admins_limit": 3 } self.ajax_post( reverse("admin:domain_change", args=[domain.id]), values ) domain.refresh_from_db() self.assertEqual( domain.domainobjectlimit_set.get(name="mailboxes").max_value, 3) self.assertEqual( domain.domainobjectlimit_set.get( name="mailbox_aliases").max_value, 3) self.assertEqual( domain.domainobjectlimit_set.get( name="domain_aliases").max_value, 3) self.assertEqual( domain.domainobjectlimit_set.get( name="domain_admins").max_value, 3) def test_domain_aliases_limit(self): """Try to exceed defined limit.""" 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, "default_mailbox_quota": domain.default_mailbox_quota, "enabled": domain.enabled, "type": "domain", "mailboxes_limit": 2, "mailbox_aliases_limit": 2, "domain_aliases_limit": 2, "domain_admins_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_domain_admins_limit(self): """Try to exceed defined limit.""" domain = Domain.objects.get(name="test.com") limit = domain.domainobjectlimit_set.get(name="domain_admins") self.assertFalse(limit.is_exceeded()) user = User.objects.get(username="admin@test2.com") values = { "username": user.username, "role": user.role, "is_active": user.is_active, "email": user.email, "quota_act": True, "domains": "test2.com", "domains_1": "test.com", "language": "en" } self.ajax_post( reverse("admin:account_change", args=[user.id]), values ) self.assertTrue(limit.is_exceeded()) user = core_factories.UserFactory( username="admin1000@test.com", groups=("DomainAdmins", )) self.ajax_post( reverse("admin:account_change", args=[user.id]), values, 400 ) def test_mailboxes_limit(self): """Try to exceed defined limits.""" domain = Domain.objects.get(name="test.com") domain.domainobjectlimit_set.filter(name="mailboxes").update( max_value=3) limit = domain.domainobjectlimit_set.get(name="mailboxes") self.assertFalse(limit.is_exceeded()) username = "toto@test.com" values = { "username": "toto@test.com", "first_name": "Tester", "last_name": "Toto", "password1": "Toto1234", "password2": "Toto1234", "role": "SimpleUsers", "quota_act": True, "is_active": True, "email": username, "stepid": "step2", } self.ajax_post(reverse("admin:account_add"), values, 200) self.assertTrue(limit.is_exceeded()) values["username"] = "titi@test.com" values["email"] = "titi@test.com" self.ajax_post(reverse("admin:account_add"), values, 400) # Set unlimited value limit.max_value = -1 limit.save(update_fields=["max_value"]) self.ajax_post(reverse("admin:account_add"), values) self.assertFalse(limit.is_exceeded()) def test_mailbox_aliases_limit(self): """Try to exceed defined limits.""" 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.role, "is_active": user.is_active, "email": user.email, "quota_act": True, "aliases": "alias@test.com", "aliases_1": "alias1@test.com", "language": "en" } 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)