mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
Improved coverage.
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
"""Tests cases for RQ jobs."""
|
||||
|
||||
from modoboa.lib.tests import ModoTestCase
|
||||
|
||||
from modoboa.amavis import factories, jobs, models
|
||||
|
||||
|
||||
class JobsTestCase(ModoTestCase):
|
||||
|
||||
databases = "__all__"
|
||||
|
||||
def test_qcleanup(self):
|
||||
factories.create_spam("user@test.com", rs="D")
|
||||
jobs.qcleanup()
|
||||
self.assertEqual(models.Quarantine.objects.count(), 0)
|
||||
self.assertEqual(models.Msgs.objects.count(), 0)
|
||||
self.assertEqual(models.Maddr.objects.count(), 0)
|
||||
self.assertEqual(models.Msgrcpt.objects.count(), 0)
|
||||
@@ -4,14 +4,13 @@ from unittest import mock
|
||||
from rq import SimpleWorker
|
||||
|
||||
from django.core import mail
|
||||
from django.core.management import call_command
|
||||
from django.test import override_settings
|
||||
from django.urls import reverse
|
||||
|
||||
import django_rq
|
||||
|
||||
from modoboa.admin import factories as admin_factories, models as admin_models
|
||||
from modoboa.amavis import factories, models
|
||||
from modoboa.amavis import factories, jobs, models
|
||||
from modoboa.amavis.utils import smart_str
|
||||
from modoboa.core import models as core_models
|
||||
from modoboa.lib.tests import ModoAPITestCase
|
||||
@@ -204,7 +203,7 @@ class QuarantineViewSetTestCase(TestDataMixin, ModoAPITestCase):
|
||||
self.assertEqual(self.msgrcpt.rs, "p")
|
||||
|
||||
# Send notification to admins
|
||||
call_command("amnotify")
|
||||
jobs.amnotify()
|
||||
self.assertEqual(len(mail.outbox), 1)
|
||||
|
||||
def _test_mark_selection(self, action, status):
|
||||
|
||||
@@ -18,6 +18,7 @@ from modoboa.lib.tests import ModoAPITestCase
|
||||
from modoboa.admin.factories import populate_database
|
||||
|
||||
from . import factories
|
||||
from . import jobs
|
||||
from . import models
|
||||
from . import mocks
|
||||
|
||||
@@ -106,7 +107,7 @@ class AccessRuleTestCase(ModoAPITestCase):
|
||||
self.assertEqual(cfg.get(section, "permissions"), "Rr")
|
||||
|
||||
# Call a second time
|
||||
management.call_command("generate_rights", verbosity=False)
|
||||
jobs.generate_rights()
|
||||
|
||||
def test_rights_file_generation_with_admin(self):
|
||||
self.set_global_parameter(
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
import datetime
|
||||
import logging
|
||||
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.utils import timezone
|
||||
|
||||
from modoboa.core.models import Log
|
||||
from modoboa.maillog.models import Maillog
|
||||
from modoboa.parameters import tools as param_tools
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
"""Command class."""
|
||||
|
||||
help = "Log table cleanup" # NOQA:A003
|
||||
|
||||
def add_arguments(self, parser):
|
||||
"""Add extra arguments to command line."""
|
||||
parser.add_argument(
|
||||
"--debug", action="store_true", default=False, help="Activate debug output"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--verbose",
|
||||
action="store_true",
|
||||
default=False,
|
||||
help="Display informational messages",
|
||||
)
|
||||
|
||||
def __vprint(self, msg):
|
||||
if not self.verbose:
|
||||
return
|
||||
print(msg)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
if options["debug"]:
|
||||
log = logging.getLogger("django.db.backends")
|
||||
log.setLevel(logging.DEBUG)
|
||||
log.addHandler(logging.StreamHandler())
|
||||
self.verbose = options["verbose"]
|
||||
|
||||
log_maximum_age = param_tools.get_global_parameter("log_maximum_age")
|
||||
self.__vprint(f"Deleting logs older than {log_maximum_age} days...")
|
||||
limit = timezone.now() - datetime.timedelta(log_maximum_age)
|
||||
Log.objects.filter(date_created__lt=limit).delete()
|
||||
message_history_maximum_age = param_tools.get_global_parameter(
|
||||
"message_history_maximum_age"
|
||||
)
|
||||
self.__vprint(
|
||||
f"Deleting messages in history older than {message_history_maximum_age} days..."
|
||||
)
|
||||
limit = timezone.now() - datetime.timedelta(message_history_maximum_age)
|
||||
Maillog.objects.filter(date__lt=limit).delete()
|
||||
self.__vprint("Done.")
|
||||
@@ -16,7 +16,6 @@ from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
|
||||
from modoboa.lib.tests import ModoTestCase, SimpleModoTestCase
|
||||
from modoboa.maillog import factories as maillog_factories, models as maillog_models
|
||||
from .. import factories, mocks, models
|
||||
|
||||
|
||||
@@ -59,19 +58,6 @@ class ManagementCommandsTestCase(SimpleModoTestCase):
|
||||
management.call_command("load_initial_data", "--admin-username", "modoadmin")
|
||||
self.assertTrue(self.client.login(username="modoadmin", password="password"))
|
||||
|
||||
def test_clean_logs(self):
|
||||
"""Run cleanlogs command."""
|
||||
management.call_command("load_initial_data", "--no-frontend")
|
||||
log1 = factories.LogFactory()
|
||||
factories.LogFactory()
|
||||
log1.date_created -= relativedelta(years=2)
|
||||
log1.save(update_fields=["date_created"])
|
||||
maillog_factories.MaillogFactory(date=timezone.now() - relativedelta(days=190))
|
||||
maillog_factories.MaillogFactory()
|
||||
management.call_command("cleanlogs")
|
||||
self.assertEqual(models.Log.objects.count(), 1)
|
||||
self.assertEqual(maillog_models.Maillog.objects.count(), 1)
|
||||
|
||||
def test_init_data_non_duplicate_client_creation(self):
|
||||
"""Test that the load_initial_data command does not create duplicates
|
||||
client for the frontend deployment."""
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
"""Tests cases for RQ jobs."""
|
||||
|
||||
from dateutil.relativedelta import relativedelta
|
||||
import httmock
|
||||
|
||||
from django.core import mail
|
||||
from django.core import management
|
||||
from django.utils import timezone
|
||||
|
||||
from modoboa.core import factories, jobs, mocks, models
|
||||
from modoboa.lib.tests import SimpleModoTestCase
|
||||
from modoboa.maillog import factories as maillog_factories, models as maillog_models
|
||||
|
||||
|
||||
class JobsTestCase(SimpleModoTestCase):
|
||||
|
||||
def test_clean_logs(self):
|
||||
"""Check clean_logs job."""
|
||||
management.call_command("load_initial_data", "--no-frontend")
|
||||
log1 = factories.LogFactory()
|
||||
factories.LogFactory()
|
||||
log1.date_created -= relativedelta(years=2)
|
||||
log1.save(update_fields=["date_created"])
|
||||
maillog_factories.MaillogFactory(date=timezone.now() - relativedelta(days=190))
|
||||
maillog_factories.MaillogFactory()
|
||||
jobs.clean_logs()
|
||||
self.assertEqual(models.Log.objects.count(), 1)
|
||||
self.assertEqual(maillog_models.Maillog.objects.count(), 1)
|
||||
|
||||
def test_communicate_with_public_api(self):
|
||||
"""Check that job starts fine."""
|
||||
with httmock.HTTMock(
|
||||
mocks.modo_api_instance_search,
|
||||
mocks.modo_api_instance_create,
|
||||
mocks.modo_api_instance_update,
|
||||
mocks.modo_api_versions,
|
||||
):
|
||||
jobs.communicate_with_public_api()
|
||||
self.assertEqual(models.LocalConfig.objects.first().api_pk, 100)
|
||||
self.assertEqual(len(mail.outbox), 0)
|
||||
@@ -11,6 +11,7 @@ from django.test import override_settings
|
||||
|
||||
from modoboa.admin import factories as admin_factories
|
||||
from modoboa.lib.tests import SimpleModoTestCase
|
||||
from modoboa.maillog import jobs
|
||||
|
||||
|
||||
class RunCommandsMixin:
|
||||
@@ -36,14 +37,14 @@ class RunCommandsMixin:
|
||||
with open(path, "w") as fp:
|
||||
fp.write(content)
|
||||
self.set_global_parameter("logfile", path)
|
||||
call_command("logparser")
|
||||
jobs.logparser()
|
||||
|
||||
def run_update_statistics(self, rebuild=False):
|
||||
"""Run update_statistics command."""
|
||||
args = []
|
||||
if rebuild:
|
||||
args.append("--rebuild")
|
||||
call_command("update_statistics", *args)
|
||||
call_command("update_statistics", ["--rebuild"])
|
||||
else:
|
||||
jobs.update_statistics()
|
||||
|
||||
|
||||
@override_settings(RRDTOOL_TEST_MODE=True)
|
||||
|
||||
Reference in New Issue
Block a user