|
|
@ -0,0 +1,58 @@ |
|
|
|
# coding: utf-8 |
|
|
|
|
|
|
|
from datetime import timedelta as td |
|
|
|
from unittest import skipIf |
|
|
|
from unittest.mock import patch, Mock |
|
|
|
|
|
|
|
from django.utils.timezone import now |
|
|
|
from hc.api.models import Channel, Check, Notification |
|
|
|
from hc.test import BaseTestCase |
|
|
|
from django.test.utils import override_settings |
|
|
|
|
|
|
|
try: |
|
|
|
import apprise |
|
|
|
except ImportError: |
|
|
|
apprise = None |
|
|
|
|
|
|
|
|
|
|
|
@skipIf(apprise is None, "apprise not installed") |
|
|
|
class NotifyTestCase(BaseTestCase): |
|
|
|
def _setup_data(self, value, status="down", email_verified=True): |
|
|
|
self.check = Check(project=self.project) |
|
|
|
self.check.status = status |
|
|
|
self.check.last_ping = now() - td(minutes=61) |
|
|
|
self.check.save() |
|
|
|
|
|
|
|
self.channel = Channel(project=self.project) |
|
|
|
self.channel.kind = "apprise" |
|
|
|
self.channel.value = value |
|
|
|
self.channel.email_verified = email_verified |
|
|
|
self.channel.save() |
|
|
|
self.channel.checks.add(self.check) |
|
|
|
|
|
|
|
@patch("apprise.Apprise") |
|
|
|
@override_settings(APPRISE_ENABLED=True) |
|
|
|
def test_apprise_enabled(self, mock_apprise): |
|
|
|
self._setup_data("123") |
|
|
|
|
|
|
|
mock_aobj = Mock() |
|
|
|
mock_aobj.add.return_value = True |
|
|
|
mock_aobj.notify.return_value = True |
|
|
|
mock_apprise.return_value = mock_aobj |
|
|
|
self.channel.notify(self.check) |
|
|
|
self.assertEqual(Notification.objects.count(), 1) |
|
|
|
|
|
|
|
self.check.status = "up" |
|
|
|
self.assertEqual(Notification.objects.count(), 1) |
|
|
|
|
|
|
|
@patch("apprise.Apprise") |
|
|
|
@override_settings(APPRISE_ENABLED=False) |
|
|
|
def test_apprise_disabled(self, mock_apprise): |
|
|
|
self._setup_data("123") |
|
|
|
|
|
|
|
mock_aobj = Mock() |
|
|
|
mock_aobj.add.return_value = True |
|
|
|
mock_aobj.notify.return_value = True |
|
|
|
mock_apprise.return_value = mock_aobj |
|
|
|
self.channel.notify(self.check) |
|
|
|
self.assertEqual(Notification.objects.count(), 1) |