core/tests/components/uptimerobot/test_diagnostics.py

78 lines
2.0 KiB
Python

"""Test UptimeRobot diagnostics."""
import json
from unittest.mock import patch
from pyuptimerobot import UptimeRobotException
from homeassistant.core import HomeAssistant
from .common import (
MOCK_UPTIMEROBOT_ACCOUNT,
MOCK_UPTIMEROBOT_API_KEY,
MOCK_UPTIMEROBOT_EMAIL,
MockApiResponseKey,
mock_uptimerobot_api_response,
setup_uptimerobot_integration,
)
from tests.components.diagnostics import get_diagnostics_for_config_entry
from tests.typing import ClientSessionGenerator
async def test_entry_diagnostics(
hass: HomeAssistant,
hass_client: ClientSessionGenerator,
) -> None:
"""Test config entry diagnostics."""
entry = await setup_uptimerobot_integration(hass)
with patch(
"pyuptimerobot.UptimeRobot.async_get_account_details",
return_value=mock_uptimerobot_api_response(
key=MockApiResponseKey.ACCOUNT,
data=MOCK_UPTIMEROBOT_ACCOUNT,
),
):
result = await get_diagnostics_for_config_entry(
hass,
hass_client,
entry,
)
assert result["account"] == {
"down_monitors": 0,
"paused_monitors": 0,
"up_monitors": 1,
}
assert result["monitors"] == [
{"id": 1234, "interval": 0, "status": 2, "type": "MonitorType.HTTP"}
]
assert list(result.keys()) == ["account", "monitors"]
result_dump = json.dumps(result)
assert MOCK_UPTIMEROBOT_EMAIL not in result_dump
assert MOCK_UPTIMEROBOT_API_KEY not in result_dump
async def test_entry_diagnostics_exception(
hass: HomeAssistant,
hass_client: ClientSessionGenerator,
) -> None:
"""Test config entry diagnostics with exception."""
entry = await setup_uptimerobot_integration(hass)
with patch(
"pyuptimerobot.UptimeRobot.async_get_account_details",
side_effect=UptimeRobotException("Test exception"),
):
result = await get_diagnostics_for_config_entry(
hass,
hass_client,
entry,
)
assert result["account"] == "Test exception"