1
0
mirror of https://github.com/home-assistant/supervisor.git synced 2026-05-28 02:25:11 +01:00
Files
supervisor/tests/host/test_manager.py
T
Raman Gupta 4c2d729646 Add udisks2 dbus support (#3848)
* Add udisks2 dbus support

* assert mountpoints

* Comment

* Add reference links

* docstring

* fix type

* fix type

* add typing extensions as import

* isort

* additional changes

* Simplify classes and conversions, fix bugs

* More simplification

* Fix imports

* fix pip

* Add additional properties and fix requirements

* fix tests maybe

* Handle optionality of certain configuration details

* black

* connect to devices before returning them

* Refactor for latest dbus work

* Not .items

* fix mountpoints logic

* use variants

* Use variants for options too

* isort

* Switch to dbus fast

* Move import to parent

* Add some fixture data

* Add another fixture and reduce the block devices list

* Implement changes discussed with mike

* Add property fixtures

* update object path

* Fix get_block_devices call

* Tests and refactor to minimize dbus reconnects

* Call super init in DBusInterfaceProxy

* Fix permissions on introspection files

---------

Co-authored-by: Mike Degatano <michael.degatano@gmail.com>
2023-02-15 08:17:29 +01:00

81 lines
2.8 KiB
Python

"""Test host manager."""
from unittest.mock import PropertyMock, 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
@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
async def test_load(coresys_dbus: CoreSys, dbus: list[str]):
"""Test manager load."""
coresys = coresys_dbus
dbus.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.timedate.timezone == "Etc/UTC"
assert coresys.dbus.agent.diagnostics is True
assert coresys.dbus.network.connectivity_enabled is True
assert coresys.dbus.resolved.multicast_dns == MulticastProtocolEnabled.RESOLVE
assert coresys.dbus.agent.apparmor.version == "2.13.2"
assert len(coresys.host.logs.default_identifiers) > 0
assert coresys.dbus.udisks2.version == AwesomeVersion("2.9.2")
sound_update.assert_called_once()
assert (
"/org/freedesktop/systemd1-org.freedesktop.systemd1.Manager.ListUnits" in dbus
)
async def test_reload(coresys_dbus: CoreSys, dbus: list[str]):
"""Test manager reload and ensure it does not unnecessarily recreate dbus objects."""
coresys = coresys_dbus
await coresys.host.load()
dbus.clear()
with patch("supervisor.utils.dbus.DBus.connect") as connect, patch.object(
coresys.host.sound, "update"
) as sound_update:
await coresys.host.reload()
connect.assert_not_called()
sound_update.assert_called_once()
assert (
"/org/freedesktop/systemd1-org.freedesktop.systemd1.Manager.ListUnits" in dbus
)