mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-11-25 18:48:08 +00:00
* Strip ANSI escape color sequences from /latest log responses Strip ANSI sequences of CSI commands [1] used for log coloring from /latest log endpoints. These endpoint were primarily designed for log downloads and colors are mostly not wanted in those. Add optional argument for stripping the colors from the logs and enable it for the /latest endpoints. [1] https://en.wikipedia.org/wiki/ANSI_escape_code#CSIsection * Refactor advanced logs' tests to use fixture factory Introduce `advanced_logs_tester` fixture to simplify testing of advanced logs in the API tests, declaring all the needed fixture in a single place. # Please enter the commit message for your changes. Lines starting
71 lines
2.3 KiB
Python
71 lines
2.3 KiB
Python
"""Test DNS API."""
|
|
|
|
from unittest.mock import patch
|
|
|
|
from aiohttp.test_utils import TestClient
|
|
|
|
from supervisor.coresys import CoreSys
|
|
from supervisor.dbus.resolved import Resolved
|
|
|
|
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(advanced_logs_tester):
|
|
"""Test dns logs."""
|
|
await advanced_logs_tester("/dns", "hassio_dns")
|