parent
2e81be7721
commit
f5e3344bfc
3 changed files with 70 additions and 0 deletions
|
@ -20,5 +20,10 @@
|
||||||
"abort": {
|
"abort": {
|
||||||
"already_configured": "This NextDNS profile is already configured."
|
"already_configured": "This NextDNS profile is already configured."
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"system_health": {
|
||||||
|
"info": {
|
||||||
|
"can_reach_server": "Reach server"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
25
homeassistant/components/nextdns/system_health.py
Normal file
25
homeassistant/components/nextdns/system_health.py
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
"""Provide info to system health."""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
from nextdns.const import API_ENDPOINT
|
||||||
|
|
||||||
|
from homeassistant.components import system_health
|
||||||
|
from homeassistant.core import HomeAssistant, callback
|
||||||
|
|
||||||
|
|
||||||
|
@callback
|
||||||
|
def async_register( # pylint:disable=unused-argument
|
||||||
|
hass: HomeAssistant,
|
||||||
|
register: system_health.SystemHealthRegistration,
|
||||||
|
) -> None:
|
||||||
|
"""Register system health callbacks."""
|
||||||
|
register.async_register_info(system_health_info)
|
||||||
|
|
||||||
|
|
||||||
|
async def system_health_info(hass: HomeAssistant) -> dict[str, Any]:
|
||||||
|
"""Get info for the info page."""
|
||||||
|
return {
|
||||||
|
"can_reach_server": system_health.async_check_can_reach_url(hass, API_ENDPOINT)
|
||||||
|
}
|
40
tests/components/nextdns/test_system_health.py
Normal file
40
tests/components/nextdns/test_system_health.py
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
"""Test NextDNS system health."""
|
||||||
|
import asyncio
|
||||||
|
|
||||||
|
from aiohttp import ClientError
|
||||||
|
from nextdns.const import API_ENDPOINT
|
||||||
|
|
||||||
|
from homeassistant.components.nextdns.const import DOMAIN
|
||||||
|
from homeassistant.setup import async_setup_component
|
||||||
|
|
||||||
|
from tests.common import get_system_health_info
|
||||||
|
|
||||||
|
|
||||||
|
async def test_nextdns_system_health(hass, aioclient_mock):
|
||||||
|
"""Test NextDNS system health."""
|
||||||
|
aioclient_mock.get(API_ENDPOINT, text="")
|
||||||
|
hass.config.components.add(DOMAIN)
|
||||||
|
assert await async_setup_component(hass, "system_health", {})
|
||||||
|
|
||||||
|
info = await get_system_health_info(hass, DOMAIN)
|
||||||
|
|
||||||
|
for key, val in info.items():
|
||||||
|
if asyncio.iscoroutine(val):
|
||||||
|
info[key] = await val
|
||||||
|
|
||||||
|
assert info == {"can_reach_server": "ok"}
|
||||||
|
|
||||||
|
|
||||||
|
async def test_nextdns_system_health_fail(hass, aioclient_mock):
|
||||||
|
"""Test NextDNS system health."""
|
||||||
|
aioclient_mock.get(API_ENDPOINT, exc=ClientError)
|
||||||
|
hass.config.components.add(DOMAIN)
|
||||||
|
assert await async_setup_component(hass, "system_health", {})
|
||||||
|
|
||||||
|
info = await get_system_health_info(hass, DOMAIN)
|
||||||
|
|
||||||
|
for key, val in info.items():
|
||||||
|
if asyncio.iscoroutine(val):
|
||||||
|
info[key] = await val
|
||||||
|
|
||||||
|
assert info == {"can_reach_server": {"type": "failed", "error": "unreachable"}}
|
Loading…
Add table
Add a link
Reference in a new issue