supervisor/tests/api/test_dns.py
Stefan Agner f6faa18409
Bump pre-commit ruff to 0.5.7 and reformat (#5242)
It seems that the codebase is not formatted with the latest ruff
version. This PR reformats the codebase with ruff 0.5.7.
2024-08-13 20:53:56 +02:00

72 lines
2.4 KiB
Python

"""Test DNS API."""
from unittest.mock import MagicMock, patch
from aiohttp.test_utils import TestClient
from supervisor.coresys import CoreSys
from supervisor.dbus.resolved import Resolved
from tests.api import common_test_api_advanced_logs
from tests.dbus_service_mocks.base import DBusServiceMock
from tests.dbus_service_mocks.resolved import Resolved as ResolvedService
async def test_llmnr_mdns_info(
api_client: TestClient,
coresys: CoreSys,
all_dbus_services: dict[str, DBusServiceMock | dict[str, DBusServiceMock]],
):
"""Test llmnr and mdns in info api."""
resolved_service: ResolvedService = all_dbus_services["resolved"]
# pylint: disable=protected-access
coresys.host.sys_dbus._resolved = Resolved()
# pylint: enable=protected-access
resp = await api_client.get("/dns/info")
result = await resp.json()
assert result["data"]["llmnr"] is False
assert result["data"]["mdns"] is False
await coresys.dbus.resolved.connect(coresys.dbus.bus)
resp = await api_client.get("/dns/info")
result = await resp.json()
assert result["data"]["llmnr"] is True
assert result["data"]["mdns"] is True
resolved_service.emit_properties_changed({"LLMNR": "no", "MulticastDNS": "no"})
await resolved_service.ping()
resp = await api_client.get("/dns/info")
result = await resp.json()
assert result["data"]["llmnr"] is False
assert result["data"]["mdns"] is False
async def test_options(api_client: TestClient, coresys: CoreSys):
"""Test options api."""
assert coresys.plugins.dns.servers == []
assert coresys.plugins.dns.fallback is True
with patch.object(type(coresys.plugins.dns), "restart") as restart:
await api_client.post(
"/dns/options", json={"servers": ["dns://8.8.8.8"], "fallback": False}
)
assert coresys.plugins.dns.servers == ["dns://8.8.8.8"]
assert coresys.plugins.dns.fallback is False
restart.assert_called_once()
restart.reset_mock()
await api_client.post("/dns/options", json={"fallback": True})
assert coresys.plugins.dns.servers == ["dns://8.8.8.8"]
assert coresys.plugins.dns.fallback is True
restart.assert_called_once()
async def test_api_dns_logs(api_client: TestClient, journald_logs: MagicMock):
"""Test dns logs."""
await common_test_api_advanced_logs("/dns", "hassio_dns", api_client, journald_logs)