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: