56 lines
1.7 KiB
Python
56 lines
1.7 KiB
Python
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):
|
|
return Monitor(
|
|
{
|
|
"name": "Dummy Monitor",
|
|
"command": ["echo", "foo"],
|
|
}
|
|
)
|
|
|
|
@pytest.fixture
|
|
def echo_alert(self):
|
|
return Alert(
|
|
"log",
|
|
{
|
|
"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}"
|
|
),
|
|
]
|
|
},
|
|
)
|
|
|
|
@pytest.mark.parametrize(
|
|
"last_success,expected_success",
|
|
[(None, "Never"), (datetime(2018, 4, 10), "2018-04-10T00:00:00")],
|
|
)
|
|
def test_simple_alert(self, monitor, echo_alert, last_success, expected_success):
|
|
monitor.alert_count = 1
|
|
monitor.last_output = "beep boop"
|
|
monitor.last_success = last_success
|
|
monitor.total_failure_count = 1
|
|
with patch.object(echo_alert._logger, "error") as mock_error:
|
|
echo_alert.alert("Exception message", monitor)
|
|
assert_called_once_with(
|
|
mock_error,
|
|
"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",
|
|
)
|