Improved coverage

This commit is contained in:
Antoine Nguyen
2026-02-18 13:45:59 +01:00
parent 24c800a68d
commit eeb09d10cb
3 changed files with 53 additions and 6 deletions
+2
View File
@@ -187,6 +187,8 @@ class DomainSerializer(v1_serializers.DomainSerializer):
if (
instance._loaded_values.get("enable_dkim") != instance.enable_dkim
and instance.enable_dkim
) or (
instance._loaded_values.get("dkim_key_length") != instance.dkim_key_length
):
instance.generate_dkim_key()
if transport_def and instance.type == "relaydomain":
+9 -3
View File
@@ -4,11 +4,14 @@ import os
import shutil
import tempfile
from rq import SimpleWorker
from testfixtures import compare
from django.core.management import call_command
from django.urls import reverse
import django_rq
from modoboa.core.models import User
from modoboa.lib.tests import ModoAPITestCase, SETTINGS_SAMPLE
@@ -194,7 +197,7 @@ class DKIMTestCase(ModoAPITestCase):
self.assertEqual(domain.dkim_private_key_path, "")
def test_dkim_key_length_modification(self):
""" """
"""Check that key length change triggers a new key creation."""
self.set_global_parameter("dkim_keys_storage_dir", self.workdir)
values = {
"name": "pouet.com",
@@ -207,9 +210,12 @@ class DKIMTestCase(ModoAPITestCase):
url = reverse("v2:domain-list")
response = self.client.post(url, values, format="json")
self.assertEqual(response.status_code, 201)
call_command("modo", "manage_dkim_keys")
queue = django_rq.get_queue("dkim")
worker = SimpleWorker([queue], connection=queue.connection)
worker.work(burst=True)
key_path = os.path.join(self.workdir, "{}.pem".format(values["name"]))
self.assertTrue(os.path.exists(key_path))
dom = Domain.objects.get(name="pouet.com")
values["dkim_key_length"] = 4096
response = self.client.put(
@@ -219,5 +225,5 @@ class DKIMTestCase(ModoAPITestCase):
dom.refresh_from_db()
self.assertEqual(dom.dkim_private_key_path, "")
os.unlink(key_path)
call_command("modo", "manage_dkim_keys")
worker.work(burst=True)
self.assertTrue(os.path.exists(key_path))
+42 -3
View File
@@ -1,10 +1,14 @@
import os
import shutil
from django.core import management
from rq import SimpleWorker
from testfixtures import LogCapture
from django.test import modify_settings
from django.urls import reverse
import django_rq
from modoboa.admin import factories as admin_factories, models as admin_models
from modoboa.lib.tests import ModoAPITestCase
from modoboa.rspamd import jobs
@@ -38,8 +42,18 @@ class ManagementCommandTestCase(ModoAPITestCase):
def test_job(self):
self.unconfigure()
with self.assertRaises(management.CommandError):
management.call_command("manage_rspamd_maps")
with LogCapture("modoboa.jobs") as log:
jobs.update_rspamd_maps(
list(admin_models.Domain.objects.all().values_list("id", flat=True))
)
log.check(
(
"modoboa.jobs",
"ERROR",
"path map path and/or selector map path "
"not set in modoboa rspamd settings.",
)
)
self.configure()
jobs.update_rspamd_maps(
@@ -68,6 +82,31 @@ class ManagementCommandTestCase(ModoAPITestCase):
content = fp.read()
self.assertNotIn(domain.name, content)
def test_signal_handler(self):
self.set_global_parameter("dkim_keys_storage_dir", self.workdir, app="admin")
self.configure()
values = {
"name": "pouet.com",
"quota": 1000,
"default_mailbox_quota": 100,
"type": "domain",
"enable_dkim": True,
}
url = reverse("v2:domain-list")
response = self.client.post(url, values, format="json")
self.assertEqual(response.status_code, 201)
queue = django_rq.get_queue("dkim")
worker = SimpleWorker([queue], connection=queue.connection)
worker.work(burst=True)
queue = django_rq.get_queue("modoboa")
worker = SimpleWorker([queue], connection=queue.connection)
worker.work(burst=True)
self.assertTrue(os.path.exists(self.key_map_path))
self.assertTrue(os.path.exists(self.selector_map_path))
class ParametersAPITestCase(ModoAPITestCase):