minitor/tests/alert_test.py

56 lines
1.7 KiB
Python
Raw Permalink Normal View History

from datetime import datetime
from unittest.mock import patch
import pytest
from minitor.main import Alert
from minitor.main import Monitor
from tests.util import assert_called_once_with
class TestAlert(object):
@pytest.fixture
def monitor(self):
2022-04-05 03:23:15 +00:00
return Monitor(
{
"name": "Dummy Monitor",
"command": ["echo", "foo"],
}
)
@pytest.fixture
def echo_alert(self):
return Alert(
2022-04-05 03:23:15 +00:00
"log",
{
2022-04-05 03:23:15 +00:00
"command": [
"echo",
(
"{monitor_name} has failed {failure_count} time(s)!\n"
"We have alerted {alert_count} time(s)\n"
"Last success was {last_success}\n"
"Last output was: {last_output}"
),
]
2022-04-05 03:23:15 +00:00
},
)
@pytest.mark.parametrize(
2022-04-05 03:23:15 +00:00
"last_success,expected_success",
[(None, "Never"), (datetime(2018, 4, 10), "2018-04-10T00:00:00")],
)
2022-04-05 03:23:15 +00:00
def test_simple_alert(self, monitor, echo_alert, last_success, expected_success):
monitor.alert_count = 1
2022-04-05 03:23:15 +00:00
monitor.last_output = "beep boop"
monitor.last_success = last_success
monitor.total_failure_count = 1
2022-04-05 03:23:15 +00:00
with patch.object(echo_alert._logger, "error") as mock_error:
echo_alert.alert("Exception message", monitor)
assert_called_once_with(
mock_error,
2022-04-05 03:23:15 +00:00
"Dummy Monitor has failed 1 time(s)!\n"
"We have alerted 1 time(s)\n"
"Last success was " + expected_success + "\n"
"Last output was: beep boop",
)