treefmt / nix fmt (pull_request) Successful in 5s
pytest / pytest (pull_request) Successful in 24s
build_systems / build-bob (pull_request) Successful in 45s
build_systems / build-brain (pull_request) Successful in 45s
build_systems / build-rhapsody-in-green (pull_request) Successful in 58s
build_systems / build-jeeves (pull_request) Successful in 2m15s
treefmt / nix fmt (push) Successful in 5s
build_systems / build-jeeves (push) Successful in 9s
pytest / pytest (push) Successful in 24s
build_systems / build-brain (push) Successful in 30s
build_systems / build-bob (push) Successful in 32s
build_systems / build-rhapsody-in-green (push) Successful in 44s
Move signal_alert out of python/common.py into a dedicated python/signal_alert.py module and update its importers (validate_system.py, snapshot_manager.py) to the new path. Relocate the signal_alert tests from tests/test_common.py into tests/test_signal_alert.py, repatching python.signal_alert.logger and python.signal_alert.Apprise to match the new module.
42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
"""test_signal_alert."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from os import environ
|
|
from typing import TYPE_CHECKING
|
|
|
|
from apprise import Apprise
|
|
|
|
from python.signal_alert import signal_alert
|
|
|
|
if TYPE_CHECKING:
|
|
from pytest_mock import MockerFixture
|
|
|
|
|
|
def test_signal_alert(mocker: MockerFixture) -> None:
|
|
"""test_signal_alert."""
|
|
environ["SIGNAL_ALERT_FROM_PHONE"] = "1234567890"
|
|
environ["SIGNAL_ALERT_TO_PHONE"] = "0987654321"
|
|
|
|
mock_logger = mocker.patch("python.signal_alert.logger")
|
|
mock_apprise_client = mocker.MagicMock(spec=Apprise)
|
|
mocker.patch("python.signal_alert.Apprise", return_value=mock_apprise_client)
|
|
|
|
signal_alert("test")
|
|
|
|
mock_logger.info.assert_not_called()
|
|
mock_apprise_client.add.assert_called_once_with("signal://localhost:8989/1234567890/0987654321")
|
|
mock_apprise_client.notify.assert_called_once_with(title="", body="test")
|
|
|
|
|
|
def test_signal_alert_no_phones(mocker: MockerFixture) -> None:
|
|
"""test_signal_alert_no_phones."""
|
|
if "SIGNAL_ALERT_FROM_PHONE" in environ:
|
|
del environ["SIGNAL_ALERT_FROM_PHONE"]
|
|
if "SIGNAL_ALERT_TO_PHONE" in environ:
|
|
del environ["SIGNAL_ALERT_TO_PHONE"]
|
|
mock_logger = mocker.patch("python.signal_alert.logger")
|
|
signal_alert("test")
|
|
|
|
mock_logger.info.assert_called_once_with("SIGNAL_ALERT_FROM_PHONE or SIGNAL_ALERT_TO_PHONE not set")
|