mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-11-09 02:49:43 +00:00
Add MDNS and LLMNR status to API (#3545)
* Add mdns and llmnr status to API * Add broadcast info to host/info and move constants * Fix new test and isort error
This commit is contained in:
@@ -7,18 +7,110 @@ from supervisor.coresys import CoreSys
|
||||
# pylint: disable=protected-access
|
||||
|
||||
|
||||
@pytest.fixture(name="coresys_disk_info")
|
||||
async def fixture_coresys_disk_info(coresys: CoreSys) -> CoreSys:
|
||||
"""Mock basic disk information for host APIs."""
|
||||
coresys.hardware.disk.get_disk_life_time = lambda _: 0
|
||||
coresys.hardware.disk.get_disk_free_space = lambda _: 5000
|
||||
coresys.hardware.disk.get_disk_total_space = lambda _: 50000
|
||||
coresys.hardware.disk.get_disk_used_space = lambda _: 45000
|
||||
|
||||
yield coresys
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_api_host_info(api_client, tmp_path, coresys: CoreSys):
|
||||
async def test_api_host_info(api_client, coresys_disk_info: CoreSys):
|
||||
"""Test host info api."""
|
||||
coresys = coresys_disk_info
|
||||
|
||||
await coresys.dbus.agent.connect()
|
||||
await coresys.dbus.agent.update()
|
||||
|
||||
coresys.hardware.disk.get_disk_life_time = lambda x: 0
|
||||
coresys.hardware.disk.get_disk_free_space = lambda x: 5000
|
||||
coresys.hardware.disk.get_disk_total_space = lambda x: 50000
|
||||
coresys.hardware.disk.get_disk_used_space = lambda x: 45000
|
||||
|
||||
resp = await api_client.get("/host/info")
|
||||
result = await resp.json()
|
||||
|
||||
assert result["data"]["apparmor_version"] == "2.13.2"
|
||||
|
||||
|
||||
async def test_api_host_features(api_client, coresys_disk_info: CoreSys):
|
||||
"""Test host info features."""
|
||||
coresys = coresys_disk_info
|
||||
|
||||
coresys.host.sys_dbus.systemd.is_connected = False
|
||||
coresys.host.sys_dbus.network.is_connected = False
|
||||
coresys.host.sys_dbus.hostname.is_connected = False
|
||||
coresys.host.sys_dbus.timedate.is_connected = False
|
||||
coresys.host.sys_dbus.agent.is_connected = False
|
||||
coresys.host.sys_dbus.resolved.is_connected = False
|
||||
|
||||
resp = await api_client.get("/host/info")
|
||||
result = await resp.json()
|
||||
assert "reboot" not in result["data"]["features"]
|
||||
assert "services" not in result["data"]["features"]
|
||||
assert "shutdown" not in result["data"]["features"]
|
||||
assert "network" not in result["data"]["features"]
|
||||
assert "hostname" not in result["data"]["features"]
|
||||
assert "timedate" not in result["data"]["features"]
|
||||
assert "os_agent" not in result["data"]["features"]
|
||||
assert "resolved" not in result["data"]["features"]
|
||||
|
||||
coresys.host.sys_dbus.systemd.is_connected = True
|
||||
coresys.host.supported_features.cache_clear()
|
||||
resp = await api_client.get("/host/info")
|
||||
result = await resp.json()
|
||||
assert "reboot" in result["data"]["features"]
|
||||
assert "services" in result["data"]["features"]
|
||||
assert "shutdown" in result["data"]["features"]
|
||||
|
||||
coresys.host.sys_dbus.network.is_connected = True
|
||||
coresys.host.supported_features.cache_clear()
|
||||
resp = await api_client.get("/host/info")
|
||||
result = await resp.json()
|
||||
assert "network" in result["data"]["features"]
|
||||
|
||||
coresys.host.sys_dbus.hostname.is_connected = True
|
||||
coresys.host.supported_features.cache_clear()
|
||||
resp = await api_client.get("/host/info")
|
||||
result = await resp.json()
|
||||
assert "hostname" in result["data"]["features"]
|
||||
|
||||
coresys.host.sys_dbus.timedate.is_connected = True
|
||||
coresys.host.supported_features.cache_clear()
|
||||
resp = await api_client.get("/host/info")
|
||||
result = await resp.json()
|
||||
assert "timedate" in result["data"]["features"]
|
||||
|
||||
coresys.host.sys_dbus.agent.is_connected = True
|
||||
coresys.host.supported_features.cache_clear()
|
||||
resp = await api_client.get("/host/info")
|
||||
result = await resp.json()
|
||||
assert "os_agent" in result["data"]["features"]
|
||||
|
||||
coresys.host.sys_dbus.resolved.is_connected = True
|
||||
coresys.host.supported_features.cache_clear()
|
||||
resp = await api_client.get("/host/info")
|
||||
result = await resp.json()
|
||||
assert "resolved" in result["data"]["features"]
|
||||
|
||||
|
||||
async def test_api_llmnr_mdns_info(api_client, coresys_disk_info: CoreSys):
|
||||
"""Test llmnr and mdns details in info."""
|
||||
coresys = coresys_disk_info
|
||||
|
||||
coresys.host.sys_dbus.resolved.is_connected = False
|
||||
|
||||
resp = await api_client.get("/host/info")
|
||||
result = await resp.json()
|
||||
assert result["data"]["broadcast_llmnr"] is None
|
||||
assert result["data"]["broadcast_mdns"] is None
|
||||
assert result["data"]["llmnr_hostname"] is None
|
||||
|
||||
coresys.host.sys_dbus.resolved.is_connected = True
|
||||
await coresys.dbus.resolved.connect()
|
||||
await coresys.dbus.resolved.update()
|
||||
|
||||
resp = await api_client.get("/host/info")
|
||||
result = await resp.json()
|
||||
assert result["data"]["broadcast_llmnr"] is True
|
||||
assert result["data"]["broadcast_mdns"] is False
|
||||
assert result["data"]["llmnr_hostname"] == "homeassistant"
|
||||
|
||||
Reference in New Issue
Block a user