From c5ee613b592fb992f10cc42aabc868808fda3443 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Sat, 7 Jun 2025 11:03:23 +0200 Subject: [PATCH] More fixes --- frontend/src/components/account/ProfileForm.vue | 2 -- modoboa/admin/api/v1/tests.py | 2 +- modoboa/admin/api/v2/serializers.py | 3 +++ modoboa/admin/app_settings.py | 11 +++++++---- modoboa/admin/tests/test_domain.py | 4 ++-- modoboa/admin/tests/test_mailbox_operations.py | 3 ++- modoboa/core/tests/test_core.py | 1 + test_project/test_project/settings.py | 2 +- 8 files changed, 17 insertions(+), 11 deletions(-) diff --git a/frontend/src/components/account/ProfileForm.vue b/frontend/src/components/account/ProfileForm.vue index 19258ac78..2594d5cdd 100644 --- a/frontend/src/components/account/ProfileForm.vue +++ b/frontend/src/components/account/ProfileForm.vue @@ -123,8 +123,6 @@ async function updateGeneralSettings() { .updateAccount(form.value) .then(() => { busStore.displayNotification({ msg: $gettext('Profile updated') }) - console.log(authStore.accountLanguage) - console.log(available) if (!(authStore.accountLanguage in available)) { languageError.value = $gettext('Language does no exist') } diff --git a/modoboa/admin/api/v1/tests.py b/modoboa/admin/api/v1/tests.py index c2f916e5a..2b8963b9b 100644 --- a/modoboa/admin/api/v1/tests.py +++ b/modoboa/admin/api/v1/tests.py @@ -87,7 +87,7 @@ class DomainAPITestCase(ModoAPITestCase): self.assertEqual(dom.name, "pouét.com") self.assertEqual(dom.quota, 1000) self.assertEqual(dom.default_mailbox_quota, 100) - self.assertEqual(dom.enabled, False) + self.assertTrue(dom.enabled) self.assertFalse(dom.admins) @mock.patch.object(dns.resolver.Resolver, "resolve") diff --git a/modoboa/admin/api/v2/serializers.py b/modoboa/admin/api/v2/serializers.py index 573533569..6e7544c48 100644 --- a/modoboa/admin/api/v2/serializers.py +++ b/modoboa/admin/api/v2/serializers.py @@ -1,6 +1,7 @@ """Admin API v2 serializers.""" import ipaddress +import os from typing import List from django.conf import settings @@ -262,6 +263,8 @@ class AdminGlobalParametersSerializer(serializers.Serializer): raise serializers.ValidationError( _("openssl not found, please make sure it is installed.") ) + if not os.path.exists(value): + raise serializers.ValidationError(_("Directory not found.")) return value def validate_valid_mxs(self, value): diff --git a/modoboa/admin/app_settings.py b/modoboa/admin/app_settings.py index 392f0834f..6047dbbfd 100644 --- a/modoboa/admin/app_settings.py +++ b/modoboa/admin/app_settings.py @@ -1,6 +1,7 @@ """Modoboa admin settings.""" import collections +import copy import os from django.conf import settings @@ -242,7 +243,8 @@ GLOBAL_PARAMETERS_STRUCT = collections.OrderedDict( ) -def init_structure(): +def init_structure() -> dict: + structure = copy.deepcopy(GLOBAL_PARAMETERS_STRUCT) hide_fields = False dpath = None code, output = exec_cmd("which dovecot") @@ -269,7 +271,8 @@ def init_structure(): else: hide_fields = True if hide_fields: - del GLOBAL_PARAMETERS_STRUCT["mailboxes"]["params"]["handle_mailboxes"] + del structure["mailboxes"]["params"]["handle_mailboxes"] + return structure def load_admin_settings(): @@ -277,11 +280,11 @@ def load_admin_settings(): from modoboa.parameters import tools as param_tools from .api.v2 import serializers - init_structure() + structure = init_structure() param_tools.registry.add2( "global", "admin", gettext_lazy("Administration"), - GLOBAL_PARAMETERS_STRUCT, + structure, serializers.AdminGlobalParametersSerializer, ) diff --git a/modoboa/admin/tests/test_domain.py b/modoboa/admin/tests/test_domain.py index 803d72add..7f949a56c 100644 --- a/modoboa/admin/tests/test_domain.py +++ b/modoboa/admin/tests/test_domain.py @@ -114,8 +114,8 @@ class DKIMTestCase(ModoAPITestCase): response = self.client.put(url, settings, format="json") self.assertEqual(response.status_code, 400) compare(response.json(), {"dkim_keys_storage_dir": ["Directory not found."]}) - settings["admin-dkim_keys_storage_dir"] = self.workdir - response = self.client.post(url, settings, format="json") + settings["dkim_keys_storage_dir"] = self.workdir + response = self.client.put(url, settings, format="json") self.assertEqual(response.status_code, 200) def test_dkim_key_creation(self): diff --git a/modoboa/admin/tests/test_mailbox_operations.py b/modoboa/admin/tests/test_mailbox_operations.py index 42eefb4f0..94a910c1c 100644 --- a/modoboa/admin/tests/test_mailbox_operations.py +++ b/modoboa/admin/tests/test_mailbox_operations.py @@ -65,9 +65,10 @@ class MailboxOperationTestCase(ModoAPITestCase): "language": "en", "mailbox": {"use_domain_quota": True}, } - self.client.post( + response = self.client.put( reverse("v2:account-detail", args=[mb.user.pk]), values, format="json" ) + self.assertEqual(response.status_code, 200) path = f"{self.workdir}/test.com/admin2" mail_home_mock.__get__ = mock.Mock(return_value=path) call_command("handle_mailbox_operations") diff --git a/modoboa/core/tests/test_core.py b/modoboa/core/tests/test_core.py index 6c73b5d8d..f47097c18 100644 --- a/modoboa/core/tests/test_core.py +++ b/modoboa/core/tests/test_core.py @@ -124,6 +124,7 @@ class APICommunicationTestCase(ModoTestCase): # Enable notifications self.set_global_parameter("send_new_versions_email", True) + self.set_global_parameter("new_versions_email_rcpt", "postmaster@domain.test") with httmock.HTTMock( mocks.modo_api_instance_search, mocks.modo_api_instance_create, diff --git a/test_project/test_project/settings.py b/test_project/test_project/settings.py index 5712d7433..bdd0dcc51 100644 --- a/test_project/test_project/settings.py +++ b/test_project/test_project/settings.py @@ -233,7 +233,7 @@ OAUTH2_PROVIDER = { REST_FRAMEWORK = { "DEFAULT_THROTTLE_RATES": { "user": "400/minute", - "ddos": "10/second", + "ddos": "50/second", "ddos_lesser": "200/minute", "login": "10/minute", "password_recovery_request": "12/hour",