mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
Added tests
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user