1
0
mirror of https://github.com/home-assistant/supervisor.git synced 2026-05-08 17:08:36 +01:00

Use session dbus mocks for all tests (#4198)

* Use session dbus mocks for all tests

* func instead of fn for pylint
This commit is contained in:
Mike Degatano
2023-03-21 02:30:31 -04:00
committed by GitHub
parent c6ddc8e427
commit a6caccd845
157 changed files with 685 additions and 6572 deletions
+18 -40
View File
@@ -1,51 +1,34 @@
"""Test host manager."""
from unittest.mock import PropertyMock, patch
from unittest.mock import patch
from awesomeversion import AwesomeVersion
import pytest
from supervisor.coresys import CoreSys
from supervisor.dbus.agent import OSAgent
from supervisor.dbus.const import MulticastProtocolEnabled
from supervisor.dbus.hostname import Hostname
from supervisor.dbus.manager import DBusManager
from supervisor.dbus.resolved import Resolved
from supervisor.dbus.systemd import Systemd
from supervisor.dbus.timedate import TimeDate
from supervisor.dbus.udisks2 import UDisks2
from tests.dbus_service_mocks.base import DBusServiceMock
from tests.dbus_service_mocks.systemd import Systemd as SystemdService
@pytest.fixture(name="coresys_dbus")
async def fixture_coresys_dbus(
coresys: CoreSys,
hostname: Hostname,
systemd: Systemd,
timedate: TimeDate,
os_agent: OSAgent,
resolved: Resolved,
udisks2: UDisks2,
) -> CoreSys:
"""Coresys with all dbus interfaces mock loaded."""
DBusManager.hostname = PropertyMock(return_value=hostname)
DBusManager.systemd = PropertyMock(return_value=systemd)
DBusManager.timedate = PropertyMock(return_value=timedate)
DBusManager.agent = PropertyMock(return_value=os_agent)
DBusManager.resolved = PropertyMock(return_value=resolved)
DBusManager.udisks2 = PropertyMock(return_value=udisks2)
yield coresys
@pytest.fixture(name="systemd_service")
async def fixture_systemd_service(
all_dbus_services: dict[str, DBusServiceMock | dict[str, DBusServiceMock]]
) -> SystemdService:
"""Return systemd service mock."""
yield all_dbus_services["systemd"]
async def test_load(coresys_dbus: CoreSys, dbus: list[str]):
async def test_load(coresys: CoreSys, systemd_service: SystemdService):
"""Test manager load."""
coresys = coresys_dbus
dbus.clear()
systemd_service.ListUnits.calls.clear()
with patch.object(coresys.host.sound, "update") as sound_update:
await coresys.host.load()
assert coresys.dbus.hostname.hostname == "homeassistant-n2"
assert coresys.dbus.systemd.boot_timestamp == 1646197962613554
assert coresys.dbus.systemd.boot_timestamp == 1632236713344227
assert coresys.dbus.timedate.timezone == "Etc/UTC"
assert coresys.dbus.agent.diagnostics is True
assert coresys.dbus.network.connectivity_enabled is True
@@ -56,16 +39,13 @@ async def test_load(coresys_dbus: CoreSys, dbus: list[str]):
sound_update.assert_called_once()
assert (
"/org/freedesktop/systemd1-org.freedesktop.systemd1.Manager.ListUnits" in dbus
)
assert systemd_service.ListUnits.calls == [tuple()]
async def test_reload(coresys_dbus: CoreSys, dbus: list[str]):
async def test_reload(coresys: CoreSys, systemd_service: SystemdService):
"""Test manager reload and ensure it does not unnecessarily recreate dbus objects."""
coresys = coresys_dbus
await coresys.host.load()
dbus.clear()
systemd_service.ListUnits.calls.clear()
with patch("supervisor.utils.dbus.DBus.connect") as connect, patch.object(
coresys.host.sound, "update"
@@ -75,6 +55,4 @@ async def test_reload(coresys_dbus: CoreSys, dbus: list[str]):
connect.assert_not_called()
sound_update.assert_called_once()
assert (
"/org/freedesktop/systemd1-org.freedesktop.systemd1.Manager.ListUnits" in dbus
)
assert systemd_service.ListUnits.calls == [tuple()]