Added tests

This commit is contained in:
Spitap
2023-02-24 14:47:51 +01:00
parent 2ad5bd283d
commit 2ebe8fea43
3 changed files with 56 additions and 6 deletions
+29
View File
@@ -485,3 +485,32 @@ class AlarmViewSetTestCase(ModoAPITestCase):
resp = self.client.get(url)
self.assertEqual(resp.status_code, 200)
self.assertEqual(len(resp.json()), 1)
def test_update_alarm(self):
"""Try updating alarm status and delete it afterward."""
domain = models.Domain.objects.filter(name="test.com")
alarm = models.Alarm.objects.create(
domain=domain.first(), mailbox=None, title="Test alarm 2")
alarm.save()
# Switch status of the alarm to close
url = reverse("v2:alarm-switch", args=[alarm.pk])
resp = self.client.patch(url, {"status": 2})
self.assertEqual(resp.status_code, 204)
# Check actual status
url = reverse("v2:alarm-detail", args=[alarm.pk])
resp = self.client.get(url)
self.assertEqual(resp.json()["status"], 2)
# Try to set an non-existant status
url = reverse("v2:alarm-switch", args=[alarm.pk])
resp = self.client.patch(url, {"status": 10})
self.assertEqual(resp.status_code, 400)
# Delete the alarm
url = reverse("v2:alarm-delete", args=[alarm.pk])
resp = self.client.delete(url)
self.assertEqual(resp.status_code, 204)
+1 -6
View File
@@ -10,7 +10,7 @@ from rest_framework import (
filters, mixins, parsers, pagination, permissions, response, status, viewsets
)
from rest_framework.decorators import action
from rest_framework.exceptions import PermissionDenied, ValidationError
from rest_framework.exceptions import PermissionDenied
from modoboa.admin.api.v1 import viewsets as v1_viewsets
from modoboa.core import models as core_models
@@ -352,8 +352,6 @@ class AlarmViewSet(GetThrottleViewsetMixin,
"""Custom delete method that accepts body arguments."""
alarm = self.get_object()
domain = models.Domain.objects.filter(pk=alarm.domain.pk)
if not domain.exists():
alarm.delete()
if not request.user.can_access(domain):
raise PermissionDenied(_("You don't have access to this domain"))
else:
@@ -367,9 +365,6 @@ class AlarmViewSet(GetThrottleViewsetMixin,
serializer = serializers.AlarmSwitchStatusSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
domain = models.Domain.objects.filter(pk=alarm.domain.pk)
if not domain.exists():
alarm.delete()
raise ValidationError(_("No alarm found"))
if not request.user.can_access(domain):
raise PermissionDenied(_("You don't have access to this domain"))
else:
+26
View File
@@ -0,0 +1,26 @@
"""Alarm related tests."""
from django.urls import reverse
from modoboa.lib.tests import ModoTestCase
from ..factories import populate_database
from ..models import Alarm, Domain
class AlarmsTestCase(ModoTestCase):
"""Alarm open/close test cases."""
def setUp(self):
super().setUp()
populate_database()
def test_set_forward(self):
domain = Domain.objects.all().first()
alarm = Alarm.objects.create(
domain=domain, mailbox=None, title="Test alarm 3")
alarm.save()
self.assertEqual(alarm.status, 1)
alarm.close()
self.assertEqual(alarm.status, 2)
alarm.reopen()
self.assertEqual(alarm.status, 1)