diff --git a/tests/api/test_dns.py b/tests/api/test_dns.py
index 91df98bb6..c21f8dc30 100644
--- a/tests/api/test_dns.py
+++ b/tests/api/test_dns.py
@@ -1,46 +1,46 @@
"""Test DNS API."""
-from unittest.mock import MagicMock, PropertyMock, patch
+from unittest.mock import MagicMock, patch
from aiohttp.test_utils import TestClient
from supervisor.coresys import CoreSys
-from supervisor.dbus.const import MulticastProtocolEnabled
+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, dbus_is_connected: PropertyMock
+ api_client: TestClient,
+ coresys: CoreSys,
+ all_dbus_services: dict[str, DBusServiceMock | dict[str, DBusServiceMock]],
):
"""Test llmnr and mdns in info api."""
- coresys.host.sys_dbus.resolved.is_connected = False
+ 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
- coresys.host.sys_dbus.resolved.is_connected = True
- with patch.object(
- type(coresys.host.sys_dbus.resolved),
- "llmnr",
- PropertyMock(return_value=MulticastProtocolEnabled.NO),
- ), patch.object(
- type(coresys.host.sys_dbus.resolved),
- "multicast_dns",
- PropertyMock(return_value=MulticastProtocolEnabled.NO),
- ):
- 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)
- await coresys.dbus.resolved.update()
-
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."""
diff --git a/tests/api/test_host.py b/tests/api/test_host.py
index 0282f3fdc..9b6146e6d 100644
--- a/tests/api/test_host.py
+++ b/tests/api/test_host.py
@@ -6,6 +6,7 @@ from aiohttp.test_utils import TestClient
import pytest
from supervisor.coresys import CoreSys
+from supervisor.dbus.resolved import Resolved
DEFAULT_RANGE = "entries=:-100:"
# pylint: disable=protected-access
@@ -107,13 +108,12 @@ async def test_api_host_features(
assert "disk" in result["data"]["features"]
-async def test_api_llmnr_mdns_info(
- api_client: TestClient, coresys_disk_info: CoreSys, dbus_is_connected
-):
+async def test_api_llmnr_mdns_info(api_client: TestClient, coresys_disk_info: CoreSys):
"""Test llmnr and mdns details in info."""
coresys = coresys_disk_info
-
- coresys.host.sys_dbus.resolved.is_connected = False
+ # pylint: disable=protected-access
+ coresys.host.sys_dbus._resolved = Resolved()
+ # pylint: enable=protected-access
resp = await api_client.get("/host/info")
result = await resp.json()
@@ -121,9 +121,7 @@ async def test_api_llmnr_mdns_info(
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(coresys.dbus.bus)
- await coresys.dbus.resolved.update()
resp = await api_client.get("/host/info")
result = await resp.json()
diff --git a/tests/api/test_network.py b/tests/api/test_network.py
index fc684e925..c2bd957b3 100644
--- a/tests/api/test_network.py
+++ b/tests/api/test_network.py
@@ -1,15 +1,22 @@
"""Test NetwrokInterface API."""
from unittest.mock import AsyncMock, patch
-import pytest
+from dbus_fast import Variant
from supervisor.const import DOCKER_NETWORK, DOCKER_NETWORK_MASK
from supervisor.coresys import CoreSys
from tests.const import TEST_INTERFACE, TEST_INTERFACE_WLAN
+from tests.dbus_service_mocks.base import DBusServiceMock
+from tests.dbus_service_mocks.network_connection_settings import (
+ ConnectionSettings as ConnectionSettingsService,
+)
+from tests.dbus_service_mocks.network_manager import (
+ NetworkManager as NetworkManagerService,
+)
+from tests.dbus_service_mocks.network_settings import Settings as SettingsService
-@pytest.mark.asyncio
async def test_api_network_info(api_client, coresys: CoreSys):
"""Test network manager api."""
resp = await api_client.get("/network/info")
@@ -48,7 +55,6 @@ async def test_api_network_info(api_client, coresys: CoreSys):
assert result["data"]["docker"]["gateway"] == str(coresys.docker.network.gateway)
-@pytest.mark.asyncio
async def test_api_network_interface_info(api_client):
"""Test network manager api."""
resp = await api_client.get(f"/network/interface/{TEST_INTERFACE}/info")
@@ -60,10 +66,7 @@ async def test_api_network_interface_info(api_client):
assert (
result["data"]["ipv6"]["address"][0] == "2a03:169:3df5:0:6be9:2588:b26a:a679/64"
)
- assert (
- result["data"]["ipv6"]["address"][1]
- == "fd14:949b:c9cc:0:522b:8108:8ff8:cca3/64"
- )
+ assert result["data"]["ipv6"]["address"][1] == "2a03:169:3df5::2f1/128"
assert result["data"]["ipv6"]["gateway"] == "fe80::da58:d7ff:fe00:9c69"
assert result["data"]["ipv6"]["nameservers"] == [
"2001:1620:2777:1::10",
@@ -73,7 +76,6 @@ async def test_api_network_interface_info(api_client):
assert result["data"]["interface"] == TEST_INTERFACE
-@pytest.mark.asyncio
async def test_api_network_interface_info_default(api_client):
"""Test network manager default api."""
resp = await api_client.get("/network/interface/default/info")
@@ -85,10 +87,7 @@ async def test_api_network_interface_info_default(api_client):
assert (
result["data"]["ipv6"]["address"][0] == "2a03:169:3df5:0:6be9:2588:b26a:a679/64"
)
- assert (
- result["data"]["ipv6"]["address"][1]
- == "fd14:949b:c9cc:0:522b:8108:8ff8:cca3/64"
- )
+ assert result["data"]["ipv6"]["address"][1] == "2a03:169:3df5::2f1/128"
assert result["data"]["ipv6"]["gateway"] == "fe80::da58:d7ff:fe00:9c69"
assert result["data"]["ipv6"]["nameservers"] == [
"2001:1620:2777:1::10",
@@ -98,12 +97,19 @@ async def test_api_network_interface_info_default(api_client):
assert result["data"]["interface"] == TEST_INTERFACE
-@pytest.mark.asyncio
async def test_api_network_interface_update(
- api_client, coresys: CoreSys, dbus: list[str]
+ api_client,
+ coresys: CoreSys,
+ network_manager_service: NetworkManagerService,
+ connection_settings_service: ConnectionSettingsService,
):
"""Test network manager api."""
- dbus.clear()
+ network_manager_service.CheckConnectivity.calls.clear()
+ connection_settings_service.Update.calls.clear()
+ assert (
+ coresys.dbus.network.interfaces[TEST_INTERFACE].settings.ipv4.method == "auto"
+ )
+
resp = await api_client.post(
f"/network/interface/{TEST_INTERFACE}/update",
json={
@@ -117,13 +123,16 @@ async def test_api_network_interface_update(
)
result = await resp.json()
assert result["result"] == "ok"
+ assert network_manager_service.CheckConnectivity.calls == [tuple()]
+ assert len(connection_settings_service.Update.calls) == 1
+
+ await connection_settings_service.ping()
+ await connection_settings_service.ping()
assert (
- "/org/freedesktop/NetworkManager-org.freedesktop.NetworkManager.CheckConnectivity"
- in dbus
+ coresys.dbus.network.interfaces[TEST_INTERFACE].settings.ipv4.method == "manual"
)
-@pytest.mark.asyncio
async def test_api_network_interface_update_wifi(api_client):
"""Test network manager api."""
resp = await api_client.post(
@@ -143,7 +152,6 @@ async def test_api_network_interface_update_wifi(api_client):
assert result["result"] == "ok"
-@pytest.mark.asyncio
async def test_api_network_interface_update_remove(api_client):
"""Test network manager api."""
resp = await api_client.post(
@@ -154,7 +162,6 @@ async def test_api_network_interface_update_remove(api_client):
assert result["result"] == "ok"
-@pytest.mark.asyncio
async def test_api_network_interface_info_invalid(api_client):
"""Test network manager api."""
resp = await api_client.get("/network/interface/invalid/info")
@@ -164,7 +171,6 @@ async def test_api_network_interface_info_invalid(api_client):
assert result["result"] == "error"
-@pytest.mark.asyncio
async def test_api_network_interface_update_invalid(api_client):
"""Test network manager api."""
resp = await api_client.post("/network/interface/invalid/update", json={})
@@ -186,7 +192,6 @@ async def test_api_network_interface_update_invalid(api_client):
)
-@pytest.mark.asyncio
async def test_api_network_wireless_scan(api_client):
"""Test network manager api."""
with patch("asyncio.sleep", return_value=AsyncMock()):
@@ -201,30 +206,47 @@ async def test_api_network_wireless_scan(api_client):
assert [47, 63] == [ap["signal"] for ap in result["data"]["accesspoints"]]
-@pytest.mark.asyncio
-async def test_api_network_reload(api_client, coresys, dbus: list[str]):
+async def test_api_network_reload(
+ api_client, coresys, network_manager_service: NetworkManagerService
+):
"""Test network manager reload api."""
- dbus.clear()
+ network_manager_service.CheckConnectivity.calls.clear()
resp = await api_client.post("/network/reload")
result = await resp.json()
assert result["result"] == "ok"
# Check that we forced NM to do an immediate connectivity check
- assert (
- "/org/freedesktop/NetworkManager-org.freedesktop.NetworkManager.CheckConnectivity"
- in dbus
- )
+ assert network_manager_service.CheckConnectivity.calls == [tuple()]
-async def test_api_network_vlan(api_client, coresys: CoreSys, dbus: list[str]):
+async def test_api_network_vlan(
+ api_client,
+ coresys: CoreSys,
+ network_manager_services: dict[str, DBusServiceMock | dict[str, DBusServiceMock]],
+):
"""Test creating a vlan."""
- dbus.clear()
+ settings_service: SettingsService = network_manager_services["network_settings"]
+ settings_service.AddConnection.calls.clear()
resp = await api_client.post(
f"/network/interface/{TEST_INTERFACE}/vlan/1", json={"ipv4": {"method": "auto"}}
)
result = await resp.json()
assert result["result"] == "ok"
- assert (
- "/org/freedesktop/NetworkManager/Settings-org.freedesktop.NetworkManager.Settings.AddConnection"
- in dbus
- )
+ assert len(settings_service.AddConnection.calls) == 1
+
+ connection = settings_service.AddConnection.calls[0][0]
+ assert "uuid" in connection["connection"]
+ assert connection["connection"] == {
+ "id": Variant("s", "Supervisor .1"),
+ "type": Variant("s", "vlan"),
+ "llmnr": Variant("i", 2),
+ "mdns": Variant("i", 2),
+ "autoconnect": Variant("b", True),
+ "uuid": connection["connection"]["uuid"],
+ }
+ assert connection["ipv4"] == {"method": Variant("s", "auto")}
+ assert connection["ipv6"] == {"method": Variant("s", "auto")}
+ assert connection["vlan"] == {
+ "id": Variant("u", 1),
+ "parent": Variant("s", "eth0"),
+ }
diff --git a/tests/api/test_os.py b/tests/api/test_os.py
index 6445d326c..02a4eba36 100644
--- a/tests/api/test_os.py
+++ b/tests/api/test_os.py
@@ -1,6 +1,5 @@
"""Test OS API."""
-import asyncio
from pathlib import Path
from unittest.mock import PropertyMock, patch
@@ -8,16 +7,27 @@ from aiohttp.test_utils import TestClient
import pytest
from supervisor.coresys import CoreSys
-from supervisor.dbus.agent.boards import BoardManager
from supervisor.hardware.data import Device
from supervisor.os.manager import OSManager
from supervisor.resolution.const import ContextType, IssueType, SuggestionType
from supervisor.resolution.data import Issue, Suggestion
+from tests.common import mock_dbus_services
+from tests.dbus_service_mocks.agent_boards import Boards as BoardsService
+from tests.dbus_service_mocks.agent_boards_yellow import Yellow as YellowService
+from tests.dbus_service_mocks.base import DBusServiceMock
+
# pylint: disable=protected-access
-@pytest.mark.asyncio
+@pytest.fixture(name="boards_service")
+async def fixture_boards_service(
+ os_agent_services: dict[str, DBusServiceMock]
+) -> BoardsService:
+ """Return mock Boards service."""
+ yield os_agent_services["agent_boards"]
+
+
async def test_api_os_info(api_client: TestClient):
"""Test docker info api."""
resp = await api_client.get("/os/info")
@@ -34,23 +44,16 @@ async def test_api_os_info(api_client: TestClient):
assert attr in result["data"]
-@pytest.mark.asyncio
async def test_api_os_info_with_agent(api_client: TestClient, coresys: CoreSys):
"""Test docker info api."""
- await coresys.dbus.agent.connect(coresys.dbus.bus)
- await coresys.dbus.agent.update()
-
resp = await api_client.get("/os/info")
result = await resp.json()
assert result["data"]["data_disk"] == "/dev/sda"
-@pytest.mark.asyncio
async def test_api_os_datadisk_move(api_client: TestClient, coresys: CoreSys):
"""Test datadisk move without exists disk."""
- await coresys.dbus.agent.connect(coresys.dbus.bus)
- await coresys.dbus.agent.update()
coresys.os._available = True
resp = await api_client.post("/os/datadisk/move", json={"device": "/dev/sdaaaa"})
@@ -59,12 +62,8 @@ async def test_api_os_datadisk_move(api_client: TestClient, coresys: CoreSys):
assert result["message"] == "'/dev/sdaaaa' don't exists on the host!"
-@pytest.mark.asyncio
async def test_api_os_datadisk_list(api_client: TestClient, coresys: CoreSys):
"""Test datadisk list function."""
- await coresys.dbus.agent.connect(coresys.dbus.bus)
- await coresys.dbus.agent.update()
-
coresys.hardware.update_device(
Device(
"sda",
@@ -98,8 +97,6 @@ async def test_api_os_datadisk_list(api_client: TestClient, coresys: CoreSys):
async def test_api_board_yellow_info(api_client: TestClient, coresys: CoreSys):
"""Test yellow board info."""
- await coresys.dbus.agent.board.connect(coresys.dbus.bus)
-
resp = await api_client.get("/os/boards/yellow")
assert resp.status == 200
@@ -113,25 +110,27 @@ async def test_api_board_yellow_info(api_client: TestClient, coresys: CoreSys):
async def test_api_board_yellow_options(
- api_client: TestClient, coresys: CoreSys, dbus: list[str]
+ api_client: TestClient,
+ coresys: CoreSys,
+ os_agent_services: dict[str, DBusServiceMock | dict[str, DBusServiceMock]],
):
"""Test yellow board options."""
- await coresys.dbus.agent.board.connect(coresys.dbus.bus)
+ yellow_service: YellowService = os_agent_services["agent_boards_yellow"]
+ assert coresys.dbus.agent.board.yellow.disk_led is True
+ assert coresys.dbus.agent.board.yellow.heartbeat_led is True
+ assert coresys.dbus.agent.board.yellow.power_led is True
assert len(coresys.resolution.issues) == 0
- dbus.clear()
resp = await api_client.post(
"/os/boards/yellow",
json={"disk_led": False, "heartbeat_led": False, "power_led": False},
)
assert resp.status == 200
- await asyncio.sleep(0)
- assert dbus == [
- "/io/hass/os/Boards/Yellow-io.hass.os.Boards.Yellow.DiskLED",
- "/io/hass/os/Boards/Yellow-io.hass.os.Boards.Yellow.HeartbeatLED",
- "/io/hass/os/Boards/Yellow-io.hass.os.Boards.Yellow.PowerLED",
- ]
+ await yellow_service.ping()
+ assert coresys.dbus.agent.board.yellow.disk_led is False
+ assert coresys.dbus.agent.board.yellow.heartbeat_led is False
+ assert coresys.dbus.agent.board.yellow.power_led is False
assert (
Issue(IssueType.REBOOT_REQUIRED, ContextType.SYSTEM)
@@ -143,13 +142,15 @@ async def test_api_board_yellow_options(
)
-async def test_api_board_supervised_info(api_client: TestClient, coresys: CoreSys):
+async def test_api_board_supervised_info(
+ api_client: TestClient, coresys: CoreSys, boards_service: BoardsService
+):
"""Test supervised board info."""
- with patch(
- "supervisor.os.manager.CPE.get_product", return_value=["not-hassos"]
- ), patch.object(BoardManager, "board", new=PropertyMock(return_value="Supervised")):
- await coresys.dbus.agent.board.connect(coresys.dbus.bus)
- await coresys.dbus.hostname.connect(coresys.dbus.bus)
+ await mock_dbus_services({"agent_boards_supervised": None}, coresys.dbus.bus)
+ boards_service.board = "Supervised"
+ await coresys.dbus.agent.board.update()
+
+ with patch("supervisor.os.manager.CPE.get_product", return_value=["not-hassos"]):
await coresys.os.load()
assert (await api_client.get("/os/boards/supervised")).status == 200
@@ -158,13 +159,14 @@ async def test_api_board_supervised_info(api_client: TestClient, coresys: CoreSy
assert (await api_client.get("/os/boards/not-real")).status == 400
-async def test_api_board_other_info(api_client: TestClient, coresys: CoreSys):
+async def test_api_board_other_info(
+ api_client: TestClient, coresys: CoreSys, boards_service: BoardsService
+):
"""Test info for other board without dbus object."""
- with patch.object(
- BoardManager, "board", new=PropertyMock(return_value="not-real")
- ), patch.object(OSManager, "board", new=PropertyMock(return_value="not-real")):
- await coresys.dbus.agent.board.connect(coresys.dbus.bus)
+ boards_service.board = "not-real"
+ await coresys.dbus.agent.board.update()
+ with patch.object(OSManager, "board", new=PropertyMock(return_value="not-real")):
assert (await api_client.get("/os/boards/not-real")).status == 200
assert (await api_client.post("/os/boards/not-real", json={})).status == 405
assert (await api_client.get("/os/boards/yellow")).status == 400
diff --git a/tests/api/test_root.py b/tests/api/test_root.py
index f726935c9..37743d72d 100644
--- a/tests/api/test_root.py
+++ b/tests/api/test_root.py
@@ -2,15 +2,12 @@
# pylint: disable=protected-access
from unittest.mock import AsyncMock
-import pytest
-
from supervisor.api.const import ATTR_AVAILABLE_UPDATES
from supervisor.coresys import CoreSys
from tests.const import TEST_ADDON_SLUG
-@pytest.mark.asyncio
async def test_api_info(api_client):
"""Test docker info api."""
resp = await api_client.get("/info")
@@ -21,10 +18,9 @@ async def test_api_info(api_client):
assert result["data"]["supported"] is True
assert result["data"]["channel"] == "stable"
assert result["data"]["logging"] == "info"
- assert result["data"]["timezone"] == "UTC"
+ assert result["data"]["timezone"] == "Etc/UTC"
-@pytest.mark.asyncio
async def test_api_available_updates(
install_addon_ssh,
api_client,
@@ -70,7 +66,6 @@ async def test_api_available_updates(
}
-@pytest.mark.asyncio
async def test_api_refresh_updates(api_client, coresys: CoreSys):
"""Test docker info api."""
diff --git a/tests/api/test_supervisor.py b/tests/api/test_supervisor.py
index 50569a561..661e14858 100644
--- a/tests/api/test_supervisor.py
+++ b/tests/api/test_supervisor.py
@@ -1,6 +1,5 @@
"""Test Supervisor API."""
# pylint: disable=protected-access
-import asyncio
from unittest.mock import MagicMock, patch
from aiohttp.test_utils import TestClient
@@ -10,10 +9,12 @@ from supervisor.coresys import CoreSys
from supervisor.exceptions import StoreGitError, StoreNotFound
from supervisor.store.repository import Repository
+from tests.dbus_service_mocks.base import DBusServiceMock
+from tests.dbus_service_mocks.os_agent import OSAgent as OSAgentService
+
REPO_URL = "https://github.com/awesome-developer/awesome-repo"
-@pytest.mark.asyncio
async def test_api_supervisor_options_debug(api_client: TestClient, coresys: CoreSys):
"""Test security options force security."""
assert not coresys.config.debug
@@ -118,11 +119,15 @@ async def test_api_supervisor_options_auto_update(
async def test_api_supervisor_options_diagnostics(
- api_client: TestClient, coresys: CoreSys, dbus: list[str]
+ api_client: TestClient,
+ coresys: CoreSys,
+ os_agent_services: dict[str, DBusServiceMock | dict[str, DBusServiceMock]],
):
"""Test changing diagnostics."""
- await coresys.dbus.agent.connect(coresys.dbus.bus)
- dbus.clear()
+ os_agent_service: OSAgentService = os_agent_services["os_agent"]
+ os_agent_service.Diagnostics = False
+ await os_agent_service.ping()
+ assert coresys.dbus.agent.diagnostics is False
with patch("supervisor.utils.sentry.sentry_sdk.init") as sentry_init:
response = await api_client.post(
@@ -131,10 +136,9 @@ async def test_api_supervisor_options_diagnostics(
assert response.status == 200
sentry_init.assert_called_once()
- await asyncio.sleep(0)
- assert dbus == ["/io/hass/os-io.hass.os.Diagnostics"]
+ await os_agent_service.ping()
+ assert coresys.dbus.agent.diagnostics is True
- dbus.clear()
with patch("supervisor.api.supervisor.close_sentry") as close_sentry:
response = await api_client.post(
"/supervisor/options", json={"diagnostics": False}
@@ -142,8 +146,8 @@ async def test_api_supervisor_options_diagnostics(
assert response.status == 200
close_sentry.assert_called_once()
- await asyncio.sleep(0)
- assert dbus == ["/io/hass/os-io.hass.os.Diagnostics"]
+ await os_agent_service.ping()
+ assert coresys.dbus.agent.diagnostics is False
async def test_api_supervisor_logs(api_client: TestClient, docker_logs: MagicMock):
diff --git a/tests/common.py b/tests/common.py
index 182b06143..ad489a566 100644
--- a/tests/common.py
+++ b/tests/common.py
@@ -1,76 +1,18 @@
"""Common test functions."""
-import asyncio
+
from importlib import import_module
import json
from pathlib import Path
from typing import Any
from dbus_fast.aio.message_bus import MessageBus
-from dbus_fast.introspection import Method, Property, Signal
-from supervisor.dbus.interface import DBusInterface, DBusInterfaceProxy
from supervisor.resolution.validate import get_valid_modules
-from supervisor.utils.dbus import DBUS_INTERFACE_PROPERTIES
from supervisor.utils.yaml import read_yaml_file
from .dbus_service_mocks.base import DBusServiceMock
-def get_dbus_name(intr_list: list[Method | Property | Signal], snake_case: str) -> str:
- """Find name in introspection list, fallback to ignore case match."""
- name = "".join([part.capitalize() for part in snake_case.split("_")])
- names = [item.name for item in intr_list]
- if name in names:
- return name
-
- # Acronyms like NTP can't be easily converted back to camel case. Fallback to ignore case match
- lower_name = name.lower()
- for val in names:
- if lower_name == val.lower():
- return val
-
- raise AttributeError(f"Could not find match for {name} in D-Bus introspection!")
-
-
-def fire_watched_signal(dbus: DBusInterface, signal: str, data: list[Any] | str):
- """Test firing a watched signal."""
- if isinstance(data, str) and exists_fixture(data):
- data = load_json_fixture(data)
-
- if not isinstance(data, list):
- raise ValueError("Data must be a list!")
-
- signal_parts = signal.split(".")
- interface = ".".join(signal_parts[:-1])
- name = signal_parts[-1]
-
- # pylint: disable=protected-access
- assert interface in dbus.dbus._signal_monitors
-
- signals = dbus.dbus._proxies[interface].introspection.signals
- signal_monitors = {
- get_dbus_name(signals, k): v
- for k, v in dbus.dbus._signal_monitors[interface].items()
- }
- assert name in signal_monitors
-
- for coro in [callback(*data) for callback in signal_monitors[name]]:
- asyncio.create_task(coro)
-
-
-def fire_property_change_signal(
- dbus: DBusInterfaceProxy,
- changed: dict[str, Any] | None = None,
- invalidated: list[str] | None = None,
-):
- """Fire a property change signal for an interface proxy."""
- fire_watched_signal(
- dbus,
- f"{DBUS_INTERFACE_PROPERTIES}.PropertiesChanged",
- [dbus.properties_interface, changed or {}, invalidated or []],
- )
-
-
def get_fixture_path(filename: str) -> Path:
"""Get path for fixture."""
return Path(Path(__file__).parent.joinpath("fixtures"), filename)
diff --git a/tests/conftest.py b/tests/conftest.py
index 319202a95..949adfeb9 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -3,9 +3,7 @@ from functools import partial
from inspect import unwrap
import os
from pathlib import Path
-import re
import subprocess
-from typing import Any
from unittest.mock import AsyncMock, MagicMock, Mock, PropertyMock, patch
from uuid import uuid4
@@ -14,7 +12,6 @@ from aiohttp.test_utils import TestClient
from awesomeversion import AwesomeVersion
from dbus_fast import BusType
from dbus_fast.aio.message_bus import MessageBus
-from dbus_fast.aio.proxy_object import ProxyInterface, ProxyObject
import pytest
from securetar import SecureTarFile
@@ -41,30 +38,15 @@ from supervisor.const import (
REQUEST_FROM,
)
from supervisor.coresys import CoreSys
-from supervisor.dbus.agent import OSAgent
-from supervisor.dbus.const import (
- DBUS_OBJECT_BASE,
- DBUS_SIGNAL_NM_CONNECTION_ACTIVE_CHANGED,
- DBUS_SIGNAL_RAUC_INSTALLER_COMPLETED,
-)
-from supervisor.dbus.hostname import Hostname
-from supervisor.dbus.interface import DBusInterface
from supervisor.dbus.network import NetworkManager
-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 supervisor.docker.manager import DockerAPI
from supervisor.docker.monitor import DockerMonitor
from supervisor.host.logs import LogsControl
from supervisor.store.addon import AddonStore
from supervisor.store.repository import Repository
-from supervisor.utils.dbus import DBUS_INTERFACE_PROPERTIES, DBus
from supervisor.utils.dt import utcnow
from .common import (
- exists_fixture,
- get_dbus_name,
load_binary_fixture,
load_fixture,
load_json_fixture,
@@ -72,6 +54,10 @@ from .common import (
)
from .const import TEST_ADDON_SLUG
from .dbus_service_mocks.base import DBusServiceMock
+from .dbus_service_mocks.network_connection_settings import (
+ ConnectionSettings as ConnectionSettingsService,
+)
+from .dbus_service_mocks.network_manager import NetworkManager as NetworkManagerService
# pylint: disable=redefined-outer-name, protected-access
@@ -117,14 +103,6 @@ def docker() -> DockerAPI:
yield docker_obj
-@pytest.fixture
-async def dbus_bus() -> MessageBus:
- """Message bus mock."""
- bus = AsyncMock(spec=MessageBus)
- setattr(bus, "_name_owners", {})
- yield bus
-
-
@pytest.fixture(scope="session")
def dbus_session() -> None:
"""Start a dbus session."""
@@ -144,178 +122,6 @@ async def dbus_session_bus(dbus_session) -> MessageBus:
bus.disconnect()
-@pytest.fixture
-async def dbus_services(
- request: pytest.FixtureRequest, dbus_session: MessageBus
-) -> dict[str, dict[str, DBusServiceMock] | DBusServiceMock]:
- """Mock specified dbus services on session bus.
-
- Wrapper on mock_dbus_services intended to be used indirectly.
- Request param passed to it as to_mock and output returned as fixture value.
- """
- with patch("supervisor.dbus.manager.MessageBus.connect", return_value=dbus_session):
- yield await mock_dbus_services(request.param, dbus_session)
-
-
-def _process_pseudo_variant(data: dict[str, Any]) -> Any:
- """Process pseudo variant into value."""
- if data["_type"] == "ay":
- return bytearray(data["_value"], encoding="utf-8")
- if data["_type"] == "aay":
- return [bytearray(i, encoding="utf-8") for i in data["_value"]]
-
- # Unknown type, return as is
- return data
-
-
-def process_dbus_json(data: Any) -> Any:
- """Replace pseudo-variants with values of unsupported json types as necessary."""
- if not isinstance(data, dict):
- return data
-
- if len(data.keys()) == 2 and "_type" in data and "_value" in data:
- return _process_pseudo_variant(data)
-
- return {k: process_dbus_json(v) for k, v in data.items()}
-
-
-def mock_get_properties(object_path: str, interface: str) -> str:
- """Mock get dbus properties."""
- base, _, latest = object_path.rpartition("/")
- fixture = interface.replace(".", "_")
-
- if latest.isnumeric() or base in [
- "/org/freedesktop/UDisks2/block_devices",
- "/org/freedesktop/UDisks2/drives",
- ]:
- fixture = f"{fixture}_{latest}"
-
- return process_dbus_json(load_json_fixture(f"{fixture}.json"))
-
-
-async def mock_init_proxy(self):
- """Mock init dbus proxy."""
- filetype = "xml"
- fixture = (
- self.object_path.replace("/", "_")[1:]
- if self.object_path != DBUS_OBJECT_BASE
- else self.bus_name.replace(".", "_")
- )
-
- if not exists_fixture(f"{fixture}.{filetype}"):
- fixture = re.sub(r"_[0-9]+$", "", fixture)
-
- # special case
- if exists_fixture(f"{fixture}_~.{filetype}"):
- fixture = f"{fixture}_~"
-
- # Use dbus-next infrastructure to parse introspection xml
- self._proxy_obj = ProxyObject(
- self.bus_name,
- self.object_path,
- load_fixture(f"{fixture}.{filetype}"),
- self._bus,
- )
- self._add_interfaces()
-
- if DBUS_INTERFACE_PROPERTIES in self._proxies:
- setattr(
- self._proxies[DBUS_INTERFACE_PROPERTIES],
- "call_get_all",
- lambda interface: mock_get_properties(self.object_path, interface),
- )
-
-
-@pytest.fixture
-def dbus(dbus_bus: MessageBus) -> list[str]:
- """Mock DBUS."""
- dbus_commands = []
-
- async def mock_wait_for_signal(self):
- if (
- self._interface + "." + self._member
- == DBUS_SIGNAL_NM_CONNECTION_ACTIVE_CHANGED
- ):
- return [2, 0]
-
- if self._interface + "." + self._member == DBUS_SIGNAL_RAUC_INSTALLER_COMPLETED:
- return [0]
-
- async def mock_signal___aenter__(self):
- return self
-
- async def mock_signal___aexit__(self, exc_t, exc_v, exc_tb):
- pass
-
- async def mock_call_dbus(
- proxy_interface: ProxyInterface,
- method: str,
- *args,
- unpack_variants: bool = True,
- ):
- if (
- proxy_interface.introspection.name == DBUS_INTERFACE_PROPERTIES
- and method == "call_get_all"
- ):
- return mock_get_properties(proxy_interface.path, args[0])
-
- [dbus_type, dbus_name] = method.split("_", 1)
-
- if dbus_type in ["get", "set"]:
- dbus_name = get_dbus_name(
- proxy_interface.introspection.properties, dbus_name
- )
- dbus_commands.append(
- f"{proxy_interface.path}-{proxy_interface.introspection.name}.{dbus_name}"
- )
-
- if dbus_type == "set":
- return
-
- return mock_get_properties(
- proxy_interface.path, proxy_interface.introspection.name
- )[dbus_name]
-
- dbus_name = get_dbus_name(proxy_interface.introspection.methods, dbus_name)
- dbus_commands.append(
- f"{proxy_interface.path}-{proxy_interface.introspection.name}.{dbus_name}"
- )
-
- if proxy_interface.path != DBUS_OBJECT_BASE:
- fixture = proxy_interface.path.replace("/", "_")[1:]
- fixture = f"{fixture}-{dbus_name}"
- else:
- fixture = (
- f'{proxy_interface.introspection.name.replace(".", "_")}_{dbus_name}'
- )
-
- if exists_fixture(f"{fixture}.json"):
- return process_dbus_json(load_json_fixture(f"{fixture}.json"))
-
- with patch("supervisor.utils.dbus.DBus.call_dbus", new=mock_call_dbus), patch(
- "supervisor.utils.dbus.DBus._init_proxy", new=mock_init_proxy
- ), patch(
- "supervisor.utils.dbus.DBusSignalWrapper.__aenter__", new=mock_signal___aenter__
- ), patch(
- "supervisor.utils.dbus.DBusSignalWrapper.__aexit__", new=mock_signal___aexit__
- ), patch(
- "supervisor.utils.dbus.DBusSignalWrapper.wait_for_signal",
- new=mock_wait_for_signal,
- ), patch(
- "supervisor.dbus.manager.MessageBus.connect", return_value=dbus_bus
- ):
- yield dbus_commands
-
-
-@pytest.fixture
-async def dbus_minimal(dbus_bus: MessageBus) -> MessageBus:
- """Mock DBus without mocking call_dbus or signals but handle properties fixture."""
- with patch("supervisor.utils.dbus.DBus._init_proxy", new=mock_init_proxy), patch(
- "supervisor.dbus.manager.MessageBus.connect", return_value=dbus_bus
- ):
- yield dbus_bus
-
-
@pytest.fixture
async def dbus_is_connected():
"""Mock DBusInterface.is_connected for tests."""
@@ -365,6 +171,22 @@ async def network_manager(
yield nm_obj
+@pytest.fixture
+async def network_manager_service(
+ network_manager_services: dict[str, DBusServiceMock | dict[str, DBusServiceMock]]
+) -> NetworkManagerService:
+ """Return Network Manager service mock."""
+ yield network_manager_services["network_manager"]
+
+
+@pytest.fixture(name="connection_settings_service")
+async def fixture_connection_settings_service(
+ network_manager_services: dict[str, DBusServiceMock | dict[str, DBusServiceMock]]
+) -> ConnectionSettingsService:
+ """Return mock connection settings service."""
+ yield network_manager_services["network_connection_settings"]
+
+
@pytest.fixture(name="udisks2_services")
async def fixture_udisks2_services(
dbus_session_bus: MessageBus,
@@ -415,54 +237,51 @@ async def fixture_udisks2_services(
)
-async def mock_dbus_interface(
- dbus: DBus, dbus_bus: MessageBus, instance: DBusInterface
-) -> DBusInterface:
- """Mock dbus for a DBusInterface instance."""
- instance.dbus = dbus
- await instance.connect(dbus_bus)
- return instance
+@pytest.fixture(name="os_agent_services")
+async def fixture_os_agent_services(
+ dbus_session_bus: MessageBus,
+) -> dict[str, DBusServiceMock]:
+ """Mock all services os agent connects to."""
+ yield await mock_dbus_services(
+ {
+ "os_agent": None,
+ "agent_apparmor": None,
+ "agent_cgroup": None,
+ "agent_datadisk": None,
+ "agent_system": None,
+ "agent_boards": None,
+ "agent_boards_yellow": None,
+ },
+ dbus_session_bus,
+ )
-@pytest.fixture
-async def hostname(dbus: DBus, dbus_bus: MessageBus) -> Hostname:
- """Mock Hostname."""
- yield await mock_dbus_interface(dbus, dbus_bus, Hostname())
-
-
-@pytest.fixture
-async def timedate(dbus: DBus, dbus_bus: MessageBus) -> TimeDate:
- """Mock Timedate."""
- yield await mock_dbus_interface(dbus, dbus_bus, TimeDate())
-
-
-@pytest.fixture
-async def systemd(dbus: DBus, dbus_bus: MessageBus) -> Systemd:
- """Mock Systemd."""
- yield await mock_dbus_interface(dbus, dbus_bus, Systemd())
-
-
-@pytest.fixture
-async def os_agent(dbus: DBus, dbus_bus: MessageBus) -> OSAgent:
- """Mock OSAgent."""
- yield await mock_dbus_interface(dbus, dbus_bus, OSAgent())
-
-
-@pytest.fixture
-async def resolved(dbus: DBus, dbus_bus: MessageBus) -> Resolved:
- """Mock REsolved."""
- yield await mock_dbus_interface(dbus, dbus_bus, Resolved())
-
-
-@pytest.fixture
-async def udisks2(dbus: DBus, dbus_bus: MessageBus) -> UDisks2:
- """Mock UDisks2."""
- yield await mock_dbus_interface(dbus, dbus_bus, UDisks2())
+@pytest.fixture(name="all_dbus_services")
+async def fixture_all_dbus_services(
+ dbus_session_bus: MessageBus,
+ network_manager_services: dict[str, DBusServiceMock | dict[str, DBusServiceMock]],
+ udisks2_services: dict[str, DBusServiceMock | dict[str, DBusServiceMock]],
+ os_agent_services: dict[str, DBusServiceMock],
+) -> dict[str, DBusServiceMock | dict[str, DBusServiceMock]]:
+ """Mock all dbus services supervisor uses."""
+ yield (
+ await mock_dbus_services(
+ {
+ "hostname": None,
+ "logind": None,
+ "rauc": None,
+ "resolved": None,
+ "systemd": None,
+ "timedate": None,
+ },
+ dbus_session_bus,
+ )
+ ) | network_manager_services | udisks2_services | os_agent_services
@pytest.fixture
async def coresys(
- event_loop, docker, dbus, dbus_bus, aiohttp_client, run_dir
+ event_loop, docker, dbus_session_bus, all_dbus_services, aiohttp_client, run_dir
) -> CoreSys:
"""Create a CoreSys Mock."""
with patch("supervisor.bootstrap.initialize_system"), patch(
@@ -486,11 +305,13 @@ async def coresys(
coresys_obj._machine_id = uuid4()
# Mock host communication
- coresys_obj._dbus._bus = dbus_bus
- network_manager = NetworkManager()
- network_manager.dbus = dbus
- await network_manager.connect(dbus_bus)
- coresys_obj._dbus._network = network_manager
+ with patch("supervisor.dbus.manager.MessageBus") as message_bus, patch(
+ "supervisor.dbus.manager.SOCKET_DBUS"
+ ):
+ message_bus.return_value.connect = AsyncMock(return_value=dbus_session_bus)
+ await coresys_obj._dbus.load()
+ # coresys_obj._dbus._bus = dbus_session_bus
+ # coresys_obj._dbus._network = network_manager
# Mock docker
coresys_obj._docker = docker
diff --git a/tests/dbus/agent/boards/test_board.py b/tests/dbus/agent/boards/test_board.py
index f78f8edbb..8cdcc9e6d 100644
--- a/tests/dbus/agent/boards/test_board.py
+++ b/tests/dbus/agent/boards/test_board.py
@@ -7,18 +7,20 @@ from supervisor.dbus.agent.boards import BoardManager
from supervisor.exceptions import BoardInvalidError
from tests.common import mock_dbus_services
-from tests.dbus_service_mocks.boards import Boards as BoardsService
+from tests.dbus_service_mocks.agent_boards import Boards as BoardsService
@pytest.fixture(name="boards_service", autouse=True)
async def fixture_boards_service(dbus_session_bus: MessageBus) -> BoardsService:
"""Mock Boards dbus service."""
- yield (await mock_dbus_services({"boards": None}, dbus_session_bus))["boards"]
+ yield (await mock_dbus_services({"agent_boards": None}, dbus_session_bus))[
+ "agent_boards"
+ ]
async def test_dbus_board(dbus_session_bus: MessageBus):
"""Test DBus Board load."""
- await mock_dbus_services({"boards_yellow": None}, dbus_session_bus)
+ await mock_dbus_services({"agent_boards_yellow": None}, dbus_session_bus)
board = BoardManager()
await board.connect(dbus_session_bus)
@@ -34,7 +36,7 @@ async def test_dbus_board_supervised(
boards_service: BoardsService, dbus_session_bus: MessageBus
):
"""Test DBus Board load with supervised board."""
- await mock_dbus_services({"boards_supervised": None}, dbus_session_bus)
+ await mock_dbus_services({"agent_boards_supervised": None}, dbus_session_bus)
boards_service.board = "Supervised"
board = BoardManager()
diff --git a/tests/dbus/agent/boards/test_yellow.py b/tests/dbus/agent/boards/test_yellow.py
index 76915bf5e..8a0b77f40 100644
--- a/tests/dbus/agent/boards/test_yellow.py
+++ b/tests/dbus/agent/boards/test_yellow.py
@@ -8,14 +8,14 @@ import pytest
from supervisor.dbus.agent.boards.yellow import Yellow
from tests.common import mock_dbus_services
-from tests.dbus_service_mocks.boards_yellow import Yellow as YellowService
+from tests.dbus_service_mocks.agent_boards_yellow import Yellow as YellowService
@pytest.fixture(name="yellow_service", autouse=True)
async def fixture_yellow_service(dbus_session_bus: MessageBus) -> YellowService:
"""Mock Yellow Board dbus service."""
- yield (await mock_dbus_services({"boards_yellow": None}, dbus_session_bus))[
- "boards_yellow"
+ yield (await mock_dbus_services({"agent_boards_yellow": None}, dbus_session_bus))[
+ "agent_boards_yellow"
]
diff --git a/tests/dbus/agent/conftest.py b/tests/dbus/agent/conftest.py
deleted file mode 100644
index 08554c116..000000000
--- a/tests/dbus/agent/conftest.py
+++ /dev/null
@@ -1,24 +0,0 @@
-"""Shared fixtures for OS Agent tests."""
-
-from dbus_fast.aio.message_bus import MessageBus
-import pytest
-
-from tests.common import mock_dbus_services
-from tests.dbus_service_mocks.base import DBusServiceMock
-
-
-@pytest.fixture
-async def os_agent_services(dbus_session_bus: MessageBus) -> dict[str, DBusServiceMock]:
- """Mock all services os agent connects to."""
- yield await mock_dbus_services(
- {
- "os_agent": None,
- "apparmor": None,
- "cgroup": None,
- "datadisk": None,
- "system": None,
- "boards": None,
- "boards_yellow": None,
- },
- dbus_session_bus,
- )
diff --git a/tests/dbus/agent/test_apparmor.py b/tests/dbus/agent/test_apparmor.py
index 6e9352ac3..a165f6103 100644
--- a/tests/dbus/agent/test_apparmor.py
+++ b/tests/dbus/agent/test_apparmor.py
@@ -8,7 +8,7 @@ import pytest
from supervisor.dbus.agent import OSAgent
from supervisor.exceptions import DBusNotConnectedError
-from tests.dbus_service_mocks.apparmor import AppArmor as AppArmorService
+from tests.dbus_service_mocks.agent_apparmor import AppArmor as AppArmorService
from tests.dbus_service_mocks.base import DBusServiceMock
@@ -17,7 +17,7 @@ async def fixture_apparmor_service(
os_agent_services: dict[str, DBusServiceMock]
) -> AppArmorService:
"""Mock AppArmor dbus service."""
- yield os_agent_services["apparmor"]
+ yield os_agent_services["agent_apparmor"]
async def test_dbus_osagent_apparmor(
@@ -46,6 +46,7 @@ async def test_dbus_osagent_apparmor_load(
apparmor_service: AppArmorService, dbus_session_bus: MessageBus
):
"""Load AppArmor Profile on host."""
+ apparmor_service.LoadProfile.calls.clear()
os_agent = OSAgent()
with pytest.raises(DBusNotConnectedError):
@@ -70,6 +71,7 @@ async def test_dbus_osagent_apparmor_unload(
apparmor_service: AppArmorService, dbus_session_bus: MessageBus
):
"""Unload AppArmor Profile on host."""
+ apparmor_service.UnloadProfile.calls.clear()
os_agent = OSAgent()
with pytest.raises(DBusNotConnectedError):
diff --git a/tests/dbus/agent/test_cgroup.py b/tests/dbus/agent/test_cgroup.py
index ae08b5977..a4a6b57f7 100644
--- a/tests/dbus/agent/test_cgroup.py
+++ b/tests/dbus/agent/test_cgroup.py
@@ -6,8 +6,8 @@ import pytest
from supervisor.dbus.agent import OSAgent
from supervisor.exceptions import DBusNotConnectedError
+from tests.dbus_service_mocks.agent_cgroup import CGroup as CGroupService
from tests.dbus_service_mocks.base import DBusServiceMock
-from tests.dbus_service_mocks.cgroup import CGroup as CGroupService
@pytest.fixture(name="cgroup_service", autouse=True)
@@ -15,13 +15,14 @@ async def fixture_cgroup_service(
os_agent_services: dict[str, DBusServiceMock]
) -> CGroupService:
"""Mock CGroup dbus service."""
- yield os_agent_services["cgroup"]
+ yield os_agent_services["agent_cgroup"]
async def test_dbus_osagent_cgroup_add_devices(
cgroup_service: CGroupService, dbus_session_bus: MessageBus
):
"""Test wipe data partition on host."""
+ cgroup_service.AddDevicesAllowed.calls.clear()
os_agent = OSAgent()
with pytest.raises(DBusNotConnectedError):
diff --git a/tests/dbus/agent/test_datadisk.py b/tests/dbus/agent/test_datadisk.py
index 2413fe0e0..c71f5cf14 100644
--- a/tests/dbus/agent/test_datadisk.py
+++ b/tests/dbus/agent/test_datadisk.py
@@ -8,8 +8,8 @@ import pytest
from supervisor.dbus.agent import OSAgent
from supervisor.exceptions import DBusNotConnectedError
+from tests.dbus_service_mocks.agent_datadisk import DataDisk as DataDiskService
from tests.dbus_service_mocks.base import DBusServiceMock
-from tests.dbus_service_mocks.datadisk import DataDisk as DataDiskService
@pytest.fixture(name="datadisk_service", autouse=True)
@@ -17,7 +17,7 @@ async def fixture_datadisk_service(
os_agent_services: dict[str, DBusServiceMock]
) -> DataDiskService:
"""Mock DataDisk dbus service."""
- yield os_agent_services["datadisk"]
+ yield os_agent_services["agent_datadisk"]
async def test_dbus_osagent_datadisk(
@@ -46,6 +46,7 @@ async def test_dbus_osagent_datadisk_change_device(
datadisk_service: DataDiskService, dbus_session_bus: MessageBus
):
"""Change datadisk on device."""
+ datadisk_service.ChangeDevice.calls.clear()
os_agent = OSAgent()
with pytest.raises(DBusNotConnectedError):
@@ -61,6 +62,7 @@ async def test_dbus_osagent_datadisk_reload_device(
datadisk_service: DataDiskService, dbus_session_bus: MessageBus
):
"""Change datadisk on device."""
+ datadisk_service.ReloadDevice.calls.clear()
os_agent = OSAgent()
with pytest.raises(DBusNotConnectedError):
diff --git a/tests/dbus/agent/test_system.py b/tests/dbus/agent/test_system.py
index c5a3d7bf4..a7bc7d9e5 100644
--- a/tests/dbus/agent/test_system.py
+++ b/tests/dbus/agent/test_system.py
@@ -6,8 +6,8 @@ import pytest
from supervisor.dbus.agent import OSAgent
from supervisor.exceptions import DBusNotConnectedError
+from tests.dbus_service_mocks.agent_system import System as SystemService
from tests.dbus_service_mocks.base import DBusServiceMock
-from tests.dbus_service_mocks.system import System as SystemService
@pytest.fixture(name="system_service", autouse=True)
@@ -15,13 +15,14 @@ async def fixture_system_service(
os_agent_services: dict[str, DBusServiceMock]
) -> SystemService:
"""Mock System dbus service."""
- yield os_agent_services["system"]
+ yield os_agent_services["agent_system"]
async def test_dbus_osagent_system_wipe(
system_service: SystemService, dbus_session_bus: MessageBus
):
"""Test wipe data partition on host."""
+ system_service.ScheduleWipeDevice.calls.clear()
os_agent = OSAgent()
with pytest.raises(DBusNotConnectedError):
diff --git a/tests/dbus/network/setting/test_init.py b/tests/dbus/network/setting/test_init.py
index d79ce0bac..8f11fab53 100644
--- a/tests/dbus/network/setting/test_init.py
+++ b/tests/dbus/network/setting/test_init.py
@@ -37,6 +37,8 @@ async def test_update(
connection_settings_service: ConnectionSettingsService,
):
"""Test network manager update."""
+ connection_settings_service.Update.calls.clear()
+
interface = Interface.from_dbus_interface(dbus_interface)
conn = get_connection_from_interface(
interface,
diff --git a/tests/dbus/network/test_network_manager.py b/tests/dbus/network/test_network_manager.py
index cd203d787..bded326d3 100644
--- a/tests/dbus/network/test_network_manager.py
+++ b/tests/dbus/network/test_network_manager.py
@@ -81,6 +81,7 @@ async def test_activate_connection(
network_manager_service: NetworkManagerService, network_manager: NetworkManager
):
"""Test activate connection."""
+ network_manager_service.ActivateConnection.calls.clear()
connection = await network_manager.activate_connection(
"/org/freedesktop/NetworkManager/Settings/1",
"/org/freedesktop/NetworkManager/Devices/1",
diff --git a/tests/dbus/network/test_settings.py b/tests/dbus/network/test_settings.py
index 2cec20837..2a65bf22b 100644
--- a/tests/dbus/network/test_settings.py
+++ b/tests/dbus/network/test_settings.py
@@ -26,6 +26,7 @@ async def test_add_connection(
settings_service: SettingsService, dbus_session_bus: MessageBus
):
"""Test adding settings connection."""
+ settings_service.AddConnection.calls.clear()
settings = NetworkManagerSettings()
with pytest.raises(DBusNotConnectedError):
@@ -44,6 +45,7 @@ async def test_reload_connections(
settings_service: SettingsService, dbus_session_bus: MessageBus
):
"""Test reload connections."""
+ settings_service.ReloadConnections.calls.clear()
settings = NetworkManagerSettings()
with pytest.raises(DBusNotConnectedError):
diff --git a/tests/dbus/test_hostname.py b/tests/dbus/test_hostname.py
index 7a5ef6fc7..5fe8cb45c 100644
--- a/tests/dbus/test_hostname.py
+++ b/tests/dbus/test_hostname.py
@@ -48,6 +48,7 @@ async def test_dbus_sethostname(
hostname_service: HostnameService, dbus_session_bus: MessageBus
):
"""Set hostname on backend."""
+ hostname_service.SetStaticHostname.calls.clear()
hostname = Hostname()
with pytest.raises(DBusNotConnectedError):
diff --git a/tests/dbus/test_interface.py b/tests/dbus/test_interface.py
index b13338d58..f9bbda4f7 100644
--- a/tests/dbus/test_interface.py
+++ b/tests/dbus/test_interface.py
@@ -1,160 +1,215 @@
"""Test dbus interface."""
-import asyncio
-from dataclasses import dataclass
-from unittest.mock import MagicMock
+from unittest.mock import patch
from dbus_fast.aio.message_bus import MessageBus
+from dbus_fast.service import PropertyAccess, dbus_property, signal
import pytest
from supervisor.dbus.const import DBUS_OBJECT_BASE
from supervisor.dbus.interface import DBusInterface, DBusInterfaceProxy
-from supervisor.exceptions import DBusInterfaceError
+from supervisor.exceptions import DBusInterfaceError, DBusNotConnectedError
from supervisor.utils.dbus import DBus
-from tests.common import fire_property_change_signal, fire_watched_signal
+from tests.common import load_fixture
+from tests.dbus_service_mocks.base import DBusServiceMock
-@dataclass
-class DBusInterfaceProxyMock:
- """DBus Interface and signalling mocks."""
+class TestInterface(DBusServiceMock):
+ """Test interface."""
- obj: DBusInterfaceProxy
- on_device_added: MagicMock = MagicMock()
- off_device_added: MagicMock = MagicMock()
+ interface = "service.test.TestInterface"
+
+ def __init__(self, object_path: str = "/service/test/TestInterface"):
+ """Initialize object."""
+ super().__init__()
+ self.object_path = object_path
+
+ @signal(name="TestSignal")
+ def test_signal(self, value: str) -> "s": # noqa: F821
+ """Send test signal."""
+ return value
+
+ @dbus_property(access=PropertyAccess.READ, name="TestProp")
+ def test_prop(self) -> "u": # noqa: F821
+ """Get test property."""
+ return 4
+
+
+@pytest.fixture(name="test_service")
+async def fixture_test_service(dbus_session_bus: MessageBus) -> TestInterface:
+ """Export test interface on dbus."""
+ await dbus_session_bus.request_name("service.test.TestInterface")
+ service = TestInterface()
+ service.export(dbus_session_bus)
+ yield service
@pytest.fixture(name="proxy")
async def fixture_proxy(
- request: pytest.FixtureRequest, dbus_bus: MessageBus, dbus
-) -> DBusInterfaceProxyMock:
+ request: pytest.FixtureRequest,
+ test_service: TestInterface,
+ dbus_session_bus: MessageBus,
+) -> DBusInterfaceProxy:
"""Get a proxy."""
proxy = DBusInterfaceProxy()
- proxy.bus_name = "org.freedesktop.NetworkManager"
- proxy.object_path = "/org/freedesktop/NetworkManager"
- proxy.properties_interface = "org.freedesktop.NetworkManager"
+ proxy.bus_name = "service.test.TestInterface"
+ proxy.object_path = "/service/test/TestInterface"
+ proxy.properties_interface = "service.test.TestInterface"
proxy.sync_properties = request.param
- await proxy.connect(dbus_bus)
-
- # pylint: disable=protected-access
- nm_proxy = proxy.dbus._proxies["org.freedesktop.NetworkManager"]
-
- mock = DBusInterfaceProxyMock(proxy)
- setattr(nm_proxy, "on_device_added", mock.on_device_added)
- setattr(nm_proxy, "off_device_added", mock.off_device_added)
-
- yield mock
+ await proxy.connect(dbus_session_bus)
+ yield proxy
@pytest.mark.parametrize("proxy", [True], indirect=True)
-async def test_dbus_proxy_connect(proxy: DBusInterfaceProxyMock):
+async def test_dbus_proxy_connect(
+ proxy: DBusInterfaceProxy, test_service: TestInterface
+):
"""Test dbus proxy connect."""
- assert proxy.obj.is_connected
- assert proxy.obj.properties["Connectivity"] == 4
+ assert proxy.is_connected
+ assert proxy.properties["TestProp"] == 4
- fire_property_change_signal(proxy.obj, {"Connectivity": 1})
- await asyncio.sleep(0)
- assert proxy.obj.properties["Connectivity"] == 1
+ test_service.emit_properties_changed({"TestProp": 1})
+ await test_service.ping()
+ assert proxy.properties["TestProp"] == 1
+
+ test_service.emit_properties_changed({}, ["TestProp"])
+ await test_service.ping()
+ await test_service.ping()
+ assert proxy.properties["TestProp"] == 4
@pytest.mark.parametrize("proxy", [False], indirect=True)
-async def test_dbus_proxy_connect_no_sync(proxy: DBusInterfaceProxyMock):
+async def test_dbus_proxy_connect_no_sync(
+ proxy: DBusInterfaceProxy, test_service: TestInterface
+):
"""Test dbus proxy connect with no properties sync."""
- assert proxy.obj.is_connected
- assert proxy.obj.properties["Connectivity"] == 4
+ assert proxy.is_connected
+ assert proxy.properties["TestProp"] == 4
- with pytest.raises(AssertionError):
- fire_property_change_signal(proxy.obj, {"Connectivity": 1})
+ test_service.emit_properties_changed({"TestProp": 1})
+ await test_service.ping()
+ assert proxy.properties["TestProp"] == 4
@pytest.mark.parametrize("proxy", [False], indirect=True)
-async def test_signal_listener_disconnect(proxy: DBusInterfaceProxyMock):
+async def test_signal_listener_disconnect(
+ proxy: DBusInterfaceProxy, test_service: TestInterface
+):
"""Test disconnect/delete unattaches signal listeners."""
- assert proxy.obj.is_connected
- device = None
+ value = None
- async def callback(dev: str):
- nonlocal device
- device = dev
+ async def callback(val: str):
+ nonlocal value
+ value = val
- proxy.obj.dbus.on_device_added(callback)
- proxy.on_device_added.assert_called_once_with(callback, unpack_variants=True)
+ assert proxy.is_connected
+ proxy.dbus.on_test_signal(callback)
- fire_watched_signal(
- proxy.obj, "org.freedesktop.NetworkManager.DeviceAdded", ["/test/obj/1"]
- )
- await asyncio.sleep(0)
- assert device == "/test/obj/1"
+ test_service.test_signal("hello")
+ await test_service.ping()
+ assert value == "hello"
- proxy.obj.disconnect()
- proxy.off_device_added.assert_called_once_with(callback, unpack_variants=True)
+ proxy.disconnect()
+ test_service.test_signal("goodbye")
+ await test_service.ping()
+ assert value == "hello"
-@pytest.mark.parametrize("proxy", [False], indirect=True)
-async def test_dbus_proxy_shutdown_pending_task(proxy: DBusInterfaceProxyMock):
- """Test pending task does not raise DBusNotConnectedError after shutdown."""
- assert proxy.obj.is_connected
- device = None
+async def test_dbus_connected_no_raise_after_shutdown(
+ test_service: TestInterface, dbus_session_bus: MessageBus
+):
+ """Test dbus connected methods do not raise DBusNotConnectedError after shutdown."""
+ proxy = DBusInterfaceProxy()
+ proxy.bus_name = "service.test.TestInterface"
+ proxy.object_path = "/service/test/TestInterface"
+ proxy.properties_interface = "service.test.TestInterface"
+ proxy.sync_properties = False
- async def callback(dev: str):
- nonlocal device
- await proxy.obj.update()
- device = dev
+ with pytest.raises(DBusNotConnectedError):
+ await proxy.update()
- proxy.obj.dbus.on_device_added(callback)
- fire_watched_signal(
- proxy.obj, "org.freedesktop.NetworkManager.DeviceAdded", ["/test/obj/1"]
- )
- proxy.obj.shutdown()
- await asyncio.sleep(0)
- assert device == "/test/obj/1"
+ await proxy.connect(dbus_session_bus)
+ assert proxy.is_connected
+
+ proxy.shutdown()
+ assert proxy.is_shutdown
+ assert await proxy.update() is None
-async def test_proxy_missing_properties_interface(dbus_bus: MessageBus):
+async def test_proxy_missing_properties_interface(dbus_session_bus: MessageBus):
"""Test proxy instance disconnects and errors when missing properties interface."""
proxy = DBusInterfaceProxy()
proxy.bus_name = "test.no.properties.interface"
proxy.object_path = DBUS_OBJECT_BASE
proxy.properties_interface = "test.no.properties.interface"
- with pytest.raises(DBusInterfaceError):
- await proxy.connect(dbus_bus)
- assert proxy.is_connected is False
+ async def mock_introspect(*args, **kwargs):
+ """Return introspection without properties."""
+ return load_fixture("test_no_properties_interface.xml")
-
-async def test_initialize(dbus_bus: MessageBus):
- """Test initialize for reusing connected dbus object."""
- proxy = DBusInterface()
- proxy.bus_name = "org.freedesktop.UDisks2"
- proxy.object_path = "/org/freedesktop/UDisks2/block_devices/sda"
+ with patch.object(MessageBus, "introspect", new=mock_introspect), pytest.raises(
+ DBusInterfaceError
+ ):
+ await proxy.connect(dbus_session_bus)
assert proxy.is_connected is False
+
+async def test_initialize(test_service: TestInterface, dbus_session_bus: MessageBus):
+ """Test initialize for reusing connected dbus object."""
+ proxy = DBusInterface()
+ proxy.bus_name = "service.test.TestInterface"
+ proxy.object_path = "/service/test/TestInterface"
+
+ assert proxy.is_connected is False
+
+ # Not connected
with pytest.raises(ValueError, match="must be a connected DBus object"):
await proxy.initialize(
DBus(
- dbus_bus,
- "org.freedesktop.UDisks2",
- "/org/freedesktop/UDisks2/block_devices/sda",
+ dbus_session_bus,
+ "service.test.TestInterface",
+ "/service/test/TestInterface",
)
)
+ # Connected to wrong bus
+ await dbus_session_bus.request_name("service.test.TestInterface2")
with pytest.raises(
ValueError,
- match="must be a DBus object connected to bus org.freedesktop.UDisks2 and object /org/freedesktop/UDisks2/block_devices/sda",
+ match="must be a DBus object connected to bus service.test.TestInterface and object /service/test/TestInterface",
):
await proxy.initialize(
await DBus.connect(
- dbus_bus, "org.freedesktop.hostname1", "/org/freedesktop/hostname1"
+ dbus_session_bus,
+ "service.test.TestInterface2",
+ "/service/test/TestInterface",
)
)
+ # Connected to wrong object
+ test_service_2 = TestInterface("/service/test/TestInterface/2")
+ test_service_2.export(dbus_session_bus)
+ with pytest.raises(
+ ValueError,
+ match="must be a DBus object connected to bus service.test.TestInterface and object /service/test/TestInterface",
+ ):
+ await proxy.initialize(
+ await DBus.connect(
+ dbus_session_bus,
+ "service.test.TestInterface",
+ "/service/test/TestInterface/2",
+ )
+ )
+
+ # Connected to correct object on the correct bus
await proxy.initialize(
await DBus.connect(
- dbus_bus,
- "org.freedesktop.UDisks2",
- "/org/freedesktop/UDisks2/block_devices/sda",
+ dbus_session_bus,
+ "service.test.TestInterface",
+ "/service/test/TestInterface",
)
)
assert proxy.is_connected is True
diff --git a/tests/dbus/test_login.py b/tests/dbus/test_login.py
index 4c7fd068d..8e40f4faf 100644
--- a/tests/dbus/test_login.py
+++ b/tests/dbus/test_login.py
@@ -18,6 +18,7 @@ async def fixture_logind_service(dbus_session_bus: MessageBus) -> LogindService:
async def test_reboot(logind_service: LogindService, dbus_session_bus: MessageBus):
"""Test reboot."""
+ logind_service.Reboot.calls.clear()
logind = Logind()
with pytest.raises(DBusNotConnectedError):
@@ -31,6 +32,7 @@ async def test_reboot(logind_service: LogindService, dbus_session_bus: MessageBu
async def test_power_off(logind_service: LogindService, dbus_session_bus: MessageBus):
"""Test power off."""
+ logind_service.PowerOff.calls.clear()
logind = Logind()
with pytest.raises(DBusNotConnectedError):
diff --git a/tests/dbus/test_systemd.py b/tests/dbus/test_systemd.py
index ec8a5ba28..d923ee411 100644
--- a/tests/dbus/test_systemd.py
+++ b/tests/dbus/test_systemd.py
@@ -31,6 +31,7 @@ async def test_dbus_systemd_info(dbus_session_bus: MessageBus):
async def test_reboot(systemd_service: SystemdService, dbus_session_bus: MessageBus):
"""Test reboot."""
+ systemd_service.Reboot.calls.clear()
systemd = Systemd()
with pytest.raises(DBusNotConnectedError):
@@ -44,6 +45,7 @@ async def test_reboot(systemd_service: SystemdService, dbus_session_bus: Message
async def test_power_off(systemd_service: SystemdService, dbus_session_bus: MessageBus):
"""Test power off."""
+ systemd_service.PowerOff.calls.clear()
systemd = Systemd()
with pytest.raises(DBusNotConnectedError):
@@ -59,6 +61,7 @@ async def test_start_unit(
systemd_service: SystemdService, dbus_session_bus: MessageBus
):
"""Test start unit."""
+ systemd_service.StartUnit.calls.clear()
systemd = Systemd()
with pytest.raises(DBusNotConnectedError):
@@ -75,6 +78,7 @@ async def test_start_unit(
async def test_stop_unit(systemd_service: SystemdService, dbus_session_bus: MessageBus):
"""Test stop unit."""
+ systemd_service.StopUnit.calls.clear()
systemd = Systemd()
with pytest.raises(DBusNotConnectedError):
@@ -93,6 +97,7 @@ async def test_restart_unit(
systemd_service: SystemdService, dbus_session_bus: MessageBus
):
"""Test restart unit."""
+ systemd_service.RestartUnit.calls.clear()
systemd = Systemd()
with pytest.raises(DBusNotConnectedError):
@@ -111,6 +116,7 @@ async def test_reload_unit(
systemd_service: SystemdService, dbus_session_bus: MessageBus
):
"""Test reload unit."""
+ systemd_service.ReloadOrRestartUnit.calls.clear()
systemd = Systemd()
with pytest.raises(DBusNotConnectedError):
diff --git a/tests/dbus/test_timedate.py b/tests/dbus/test_timedate.py
index 90a11554f..6d8d58559 100644
--- a/tests/dbus/test_timedate.py
+++ b/tests/dbus/test_timedate.py
@@ -50,6 +50,7 @@ async def test_dbus_settime(
timedate_service: TimeDateService, dbus_session_bus: MessageBus
):
"""Set timestamp on backend."""
+ timedate_service.SetTime.calls.clear()
timedate = TimeDate()
test_dt = datetime(2021, 5, 19, 8, 36, 54, 405718, tzinfo=timezone.utc)
@@ -67,6 +68,7 @@ async def test_dbus_setntp(
timedate_service: TimeDateService, dbus_session_bus: MessageBus
):
"""Disable NTP on backend."""
+ timedate_service.SetNTP.calls.clear()
timedate = TimeDate()
with pytest.raises(DBusNotConnectedError):
diff --git a/tests/dbus/udisks2/test_block.py b/tests/dbus/udisks2/test_block.py
index 8014475df..f9ec986db 100644
--- a/tests/dbus/udisks2/test_block.py
+++ b/tests/dbus/udisks2/test_block.py
@@ -93,6 +93,7 @@ async def test_block_device_info(
async def test_format(block_sda_service: BlockService, dbus_session_bus: MessageBus):
"""Test formatting block device."""
+ block_sda_service.Format.calls.clear()
sda = UDisks2Block("/org/freedesktop/UDisks2/block_devices/sda")
await sda.connect(dbus_session_bus)
diff --git a/tests/dbus/udisks2/test_drive.py b/tests/dbus/udisks2/test_drive.py
index 1f165be64..b61781d16 100644
--- a/tests/dbus/udisks2/test_drive.py
+++ b/tests/dbus/udisks2/test_drive.py
@@ -76,6 +76,7 @@ async def test_eject(
drive_flash_disk_service: DriveService, dbus_session_bus: MessageBus
):
"""Test eject."""
+ drive_flash_disk_service.Eject.calls.clear()
flash = UDisks2Drive("/org/freedesktop/UDisks2/drives/Generic_Flash_Disk_61BCDDB6")
await flash.connect(dbus_session_bus)
diff --git a/tests/dbus/udisks2/test_filesystem.py b/tests/dbus/udisks2/test_filesystem.py
index d5324318f..a18916822 100644
--- a/tests/dbus/udisks2/test_filesystem.py
+++ b/tests/dbus/udisks2/test_filesystem.py
@@ -92,6 +92,7 @@ async def test_mount(
sda1: UDisks2Filesystem, filesystem_sda1_service: FilesystemService
):
"""Test mount."""
+ filesystem_sda1_service.Mount.calls.clear()
assert await sda1.mount(MountOptions(fstype="gpt")) == "/run/media/dev/hassos_data"
assert filesystem_sda1_service.Mount.calls == [
(
@@ -107,6 +108,7 @@ async def test_unmount(
sda1: UDisks2Filesystem, filesystem_sda1_service: FilesystemService
):
"""Test unmount."""
+ filesystem_sda1_service.Unmount.calls.clear()
await sda1.unmount(UnmountOptions(force=True))
assert filesystem_sda1_service.Unmount.calls == [
({"force": Variant("b", True), "auth.no_user_interaction": Variant("b", True)},)
@@ -117,6 +119,7 @@ async def test_check(
sda1: UDisks2Filesystem, filesystem_sda1_service: FilesystemService
):
"""Test check."""
+ filesystem_sda1_service.Check.calls.clear()
assert await sda1.check() is True
assert filesystem_sda1_service.Check.calls == [
({"auth.no_user_interaction": Variant("b", True)},)
@@ -127,6 +130,7 @@ async def test_repair(
sda1: UDisks2Filesystem, filesystem_sda1_service: FilesystemService
):
"""Test repair."""
+ filesystem_sda1_service.Repair.calls.clear()
assert await sda1.repair() is True
assert filesystem_sda1_service.Repair.calls == [
({"auth.no_user_interaction": Variant("b", True)},)
diff --git a/tests/dbus/udisks2/test_manager.py b/tests/dbus/udisks2/test_manager.py
index f33a11734..021d2aaa8 100644
--- a/tests/dbus/udisks2/test_manager.py
+++ b/tests/dbus/udisks2/test_manager.py
@@ -122,6 +122,7 @@ async def test_resolve_device(
udisks2_manager_service: UDisks2ManagerService, dbus_session_bus: MessageBus
):
"""Test resolve device."""
+ udisks2_manager_service.ResolveDevice.calls.clear()
udisks2 = UDisks2()
with pytest.raises(DBusNotConnectedError):
diff --git a/tests/dbus/udisks2/test_partition_table.py b/tests/dbus/udisks2/test_partition_table.py
index 1c50a9d8c..884062360 100644
--- a/tests/dbus/udisks2/test_partition_table.py
+++ b/tests/dbus/udisks2/test_partition_table.py
@@ -100,6 +100,7 @@ async def test_create_partition(
partition_table_sda_service: PartitionTableService, dbus_session_bus: MessageBus
):
"""Test create partition."""
+ partition_table_sda_service.CreatePartition.calls.clear()
sda = UDisks2PartitionTable("/org/freedesktop/UDisks2/block_devices/sda")
await sda.connect(dbus_session_bus)
diff --git a/tests/dbus_service_mocks/apparmor.py b/tests/dbus_service_mocks/agent_apparmor.py
similarity index 100%
rename from tests/dbus_service_mocks/apparmor.py
rename to tests/dbus_service_mocks/agent_apparmor.py
diff --git a/tests/dbus_service_mocks/boards.py b/tests/dbus_service_mocks/agent_boards.py
similarity index 100%
rename from tests/dbus_service_mocks/boards.py
rename to tests/dbus_service_mocks/agent_boards.py
diff --git a/tests/dbus_service_mocks/boards_supervised.py b/tests/dbus_service_mocks/agent_boards_supervised.py
similarity index 100%
rename from tests/dbus_service_mocks/boards_supervised.py
rename to tests/dbus_service_mocks/agent_boards_supervised.py
diff --git a/tests/dbus_service_mocks/boards_yellow.py b/tests/dbus_service_mocks/agent_boards_yellow.py
similarity index 100%
rename from tests/dbus_service_mocks/boards_yellow.py
rename to tests/dbus_service_mocks/agent_boards_yellow.py
diff --git a/tests/dbus_service_mocks/cgroup.py b/tests/dbus_service_mocks/agent_cgroup.py
similarity index 100%
rename from tests/dbus_service_mocks/cgroup.py
rename to tests/dbus_service_mocks/agent_cgroup.py
diff --git a/tests/dbus_service_mocks/datadisk.py b/tests/dbus_service_mocks/agent_datadisk.py
similarity index 100%
rename from tests/dbus_service_mocks/datadisk.py
rename to tests/dbus_service_mocks/agent_datadisk.py
diff --git a/tests/dbus_service_mocks/system.py b/tests/dbus_service_mocks/agent_system.py
similarity index 100%
rename from tests/dbus_service_mocks/system.py
rename to tests/dbus_service_mocks/agent_system.py
diff --git a/tests/dbus_service_mocks/base.py b/tests/dbus_service_mocks/base.py
index b461d7e14..0a1dfbe78 100644
--- a/tests/dbus_service_mocks/base.py
+++ b/tests/dbus_service_mocks/base.py
@@ -8,8 +8,6 @@ from dbus_fast import Message
from dbus_fast.aio.message_bus import MessageBus
from dbus_fast.service import ServiceInterface, method
-# pylint: disable=invalid-name
-
def dbus_method(name: str = None, disabled: bool = False):
"""Make DBus method with call tracking.
@@ -21,13 +19,13 @@ def dbus_method(name: str = None, disabled: bool = False):
orig_decorator = method(name=name, disabled=disabled)
@no_type_check_decorator
- def decorator(fn):
+ def decorator(func):
calls: list[list[Any]] = []
- @wraps(fn)
+ @wraps(func)
def track_calls(self, *args):
calls.append(args)
- return fn(self, *args)
+ return func(self, *args)
wrapped = orig_decorator(track_calls)
wrapped.__dict__["calls"] = calls
diff --git a/tests/dbus_service_mocks/network_active_connection.py b/tests/dbus_service_mocks/network_active_connection.py
index 67fee4a4c..b2f61b7a9 100644
--- a/tests/dbus_service_mocks/network_active_connection.py
+++ b/tests/dbus_service_mocks/network_active_connection.py
@@ -107,4 +107,4 @@ class ActiveConnection(DBusServiceMock):
@signal()
def StateChanged(self) -> "uu":
"""Signal StateChanged."""
- return [0, 0]
+ return [2, 0]
diff --git a/tests/dbus_service_mocks/network_connection_settings.py b/tests/dbus_service_mocks/network_connection_settings.py
index c30f6d985..546e38655 100644
--- a/tests/dbus_service_mocks/network_connection_settings.py
+++ b/tests/dbus_service_mocks/network_connection_settings.py
@@ -80,6 +80,7 @@ class ConnectionSettings(DBusServiceMock):
interface = "org.freedesktop.NetworkManager.Settings.Connection"
object_path = "/org/freedesktop/NetworkManager/Settings/1"
+ settings = SETTINGS_FIXTURE
@dbus_property(access=PropertyAccess.READ)
def Unsaved(self) -> "b":
@@ -107,6 +108,7 @@ class ConnectionSettings(DBusServiceMock):
@dbus_method()
def Update(self, properties: "a{sa{sv}}") -> None:
"""Do Update method."""
+ self.settings = properties
self.Updated()
@dbus_method()
@@ -121,7 +123,7 @@ class ConnectionSettings(DBusServiceMock):
@dbus_method()
def GetSettings(self) -> "a{sa{sv}}":
"""Do GetSettings method."""
- return SETTINGS_FIXTURE
+ return self.settings
@dbus_method()
def GetSecrets(self, setting_name: "s") -> "a{sa{sv}}":
@@ -140,5 +142,5 @@ class ConnectionSettings(DBusServiceMock):
@dbus_method()
def Update2(self, settings: "a{sa{sv}}", flags: "u", args: "a{sv}") -> "a{sv}":
"""Do Update2 method."""
- self.Updated()
+ self.Update(settings)
return {}
diff --git a/tests/dbus_service_mocks/network_device_wireless.py b/tests/dbus_service_mocks/network_device_wireless.py
index e89774fd8..184631d26 100644
--- a/tests/dbus_service_mocks/network_device_wireless.py
+++ b/tests/dbus_service_mocks/network_device_wireless.py
@@ -23,6 +23,10 @@ class DeviceWireless(DBusServiceMock):
interface = "org.freedesktop.NetworkManager.Device.Wireless"
object_path = "/org/freedesktop/NetworkManager/Devices/3"
+ all_access_points = [
+ "/org/freedesktop/NetworkManager/AccessPoint/43099",
+ "/org/freedesktop/NetworkManager/AccessPoint/43100",
+ ]
@dbus_property(access=PropertyAccess.READ)
def HwAddress(self) -> "s":
@@ -92,10 +96,7 @@ class DeviceWireless(DBusServiceMock):
@dbus_method()
def GetAllAccessPoints(self) -> "ao":
"""Do GetAllAccessPoints method."""
- return [
- "/org/freedesktop/NetworkManager/AccessPoint/43099",
- "/org/freedesktop/NetworkManager/AccessPoint/43100",
- ]
+ return self.all_access_points
@dbus_method()
def RequestScan(self, options: "a{sv}") -> None:
diff --git a/tests/dbus_service_mocks/network_manager.py b/tests/dbus_service_mocks/network_manager.py
index 23e385ebd..cfeec1f80 100644
--- a/tests/dbus_service_mocks/network_manager.py
+++ b/tests/dbus_service_mocks/network_manager.py
@@ -24,6 +24,7 @@ class NetworkManager(DBusServiceMock):
interface = "org.freedesktop.NetworkManager"
object_path = "/org/freedesktop/NetworkManager"
version = "1.22.10"
+ connectivity = 4
@dbus_property(access=PropertyAccess.READ)
def Devices(self) -> "ao":
@@ -145,7 +146,7 @@ class NetworkManager(DBusServiceMock):
@dbus_property(access=PropertyAccess.READ)
def Connectivity(self) -> "u":
"""Get Connectivity."""
- return 4
+ return self.connectivity
@dbus_property(access=PropertyAccess.READ)
def ConnectivityCheckAvailable(self) -> "b":
@@ -300,7 +301,7 @@ class NetworkManager(DBusServiceMock):
@dbus_method()
def CheckConnectivity(self) -> "u":
"""Do CheckConnectivity method."""
- return 4
+ return self.Connectivity
@dbus_method()
def state(self) -> "u":
diff --git a/tests/dbus_service_mocks/os_agent.py b/tests/dbus_service_mocks/os_agent.py
index 80dd5e5eb..eb9f9920a 100644
--- a/tests/dbus_service_mocks/os_agent.py
+++ b/tests/dbus_service_mocks/os_agent.py
@@ -29,7 +29,12 @@ class OSAgent(DBusServiceMock):
"""Get Version."""
return "1.1.0"
- @dbus_property(access=PropertyAccess.READ)
+ @dbus_property()
def Diagnostics(self) -> "b":
"""Get Diagnostics."""
return True
+
+ @Diagnostics.setter
+ def Diagnostics(self, value: "b"):
+ """Set Diagnostics."""
+ self.emit_properties_changed({"Diagnostics": value})
diff --git a/tests/dbus_service_mocks/systemd.py b/tests/dbus_service_mocks/systemd.py
index 8abfbd148..69d00211c 100644
--- a/tests/dbus_service_mocks/systemd.py
+++ b/tests/dbus_service_mocks/systemd.py
@@ -23,6 +23,12 @@ class Systemd(DBusServiceMock):
object_path = "/org/freedesktop/systemd1"
interface = "org.freedesktop.systemd1.Manager"
+ log_level = "info"
+ log_target = "journal-or-kmsg"
+ runtime_watchdog_usec = 0
+ reboot_watchdog_usec = 600000000
+ kexec_watchdog_usec = 0
+ service_watchdogs = True
@dbus_property(access=PropertyAccess.READ)
def Version(self) -> "s":
@@ -229,15 +235,25 @@ class Systemd(DBusServiceMock):
"""Get InitRDUnitsLoadFinishTimestampMonotonic."""
return 0
- @dbus_property(access=PropertyAccess.READ)
+ @dbus_property()
def LogLevel(self) -> "s":
"""Get LogLevel."""
- return "info"
+ return self.log_level
- @dbus_property(access=PropertyAccess.READ)
+ @LogLevel.setter
+ def LogLevel(self, value: "s"):
+ """Set LogLevel. Does not emit prop change."""
+ self.log_level = value
+
+ @dbus_property()
def LogTarget(self) -> "s":
"""Get LogTarget."""
- return "journal-or-kmsg"
+ return self.log_target
+
+ @LogTarget.setter
+ def LogTarget(self, value: "s"):
+ """Set LogTarget. Does not emit prop change."""
+ self.log_target = value
@dbus_property(access=PropertyAccess.READ)
def NNames(self) -> "u":
@@ -325,25 +341,45 @@ class Systemd(DBusServiceMock):
"""Get DefaultStandardError."""
return "journal"
- @dbus_property(access=PropertyAccess.READ)
+ @dbus_property()
def RuntimeWatchdogUSec(self) -> "t":
"""Get RuntimeWatchdogUSec."""
- return 0
+ return self.runtime_watchdog_usec
- @dbus_property(access=PropertyAccess.READ)
+ @RuntimeWatchdogUSec.setter
+ def RuntimeWatchdogUSec(self, value: "t"):
+ """Set RuntimeWatchdogUSec. Does not emit prop change."""
+ self.runtime_watchdog_usec = value
+
+ @dbus_property()
def RebootWatchdogUSec(self) -> "t":
"""Get RebootWatchdogUSec."""
- return 600000000
+ return self.reboot_watchdog_usec
- @dbus_property(access=PropertyAccess.READ)
+ @RebootWatchdogUSec.setter
+ def RebootWatchdogUSec(self, value: "t"):
+ """Set RebootWatchdogUSec. Does not emit prop change."""
+ self.RebootWatchdogUSec = value
+
+ @dbus_property()
def KExecWatchdogUSec(self) -> "t":
"""Get KExecWatchdogUSec."""
- return 0
+ return self.kexec_watchdog_usec
- @dbus_property(access=PropertyAccess.READ)
+ @KExecWatchdogUSec.setter
+ def KExecWatchdogUSec(self, value: "t"):
+ """Set KExecWatchdogUSec. Does not emit prop change."""
+ self.KExecWatchdogUSec = value
+
+ @dbus_property()
def ServiceWatchdogs(self) -> "b":
"""Get ServiceWatchdogs."""
- return True
+ return self.service_watchdogs
+
+ @ServiceWatchdogs.setter
+ def ServiceWatchdogs(self, value: "b"):
+ """Set ServiceWatchdogs. Does not emit prop change."""
+ self.service_watchdogs = value
@dbus_property(access=PropertyAccess.READ)
def ControlGroup(self) -> "s":
@@ -629,7 +665,7 @@ class Systemd(DBusServiceMock):
return "/org/freedesktop/systemd1/job/7623"
@dbus_method()
- def list_units(
+ def ListUnits(
self,
) -> "a(ssssssouso)":
"""Return a list of available services."""
diff --git a/tests/fixtures/de_pengutronix_rauc.xml b/tests/fixtures/de_pengutronix_rauc.xml
deleted file mode 100644
index e803b2521..000000000
--- a/tests/fixtures/de_pengutronix_rauc.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/fixtures/de_pengutronix_rauc_Installer.json b/tests/fixtures/de_pengutronix_rauc_Installer.json
deleted file mode 100644
index 6e84513dc..000000000
--- a/tests/fixtures/de_pengutronix_rauc_Installer.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "Operation": "idle",
- "LastError": "",
- "Progress": [0, "", 0],
- "Compatible": "haos-odroid-n2",
- "Variant": "",
- "BootSlot": "B"
-}
diff --git a/tests/fixtures/de_pengutronix_rauc_Installer_GetSlotStatus.json b/tests/fixtures/de_pengutronix_rauc_Installer_GetSlotStatus.json
deleted file mode 100644
index 04892d705..000000000
--- a/tests/fixtures/de_pengutronix_rauc_Installer_GetSlotStatus.json
+++ /dev/null
@@ -1,108 +0,0 @@
-[
- [
- "kernel.0",
- {
- "activated.count": 9,
- "activated.timestamp": "2022-08-23T21:03:22Z",
- "boot-status": "good",
- "bundle.compatible": "haos-odroid-n2",
- "sha256": "c624db648b8401fae37ee5bb1a6ec90bdf4183aef364b33314a73c7198e49d5b",
- "state": "inactive",
- "size": 10371072,
- "installed.count": 9,
- "class": "kernel",
- "device": "/dev/disk/by-partlabel/hassos-kernel0",
- "type": "raw",
- "bootname": "A",
- "bundle.version": "9.0.dev20220818",
- "installed.timestamp": "2022-08-23T21:03:16Z",
- "status": "ok"
- }
- ],
- [
- "boot.0",
- {
- "bundle.compatible": "haos-odroid-n2",
- "sha256": "a5019b335f33be2cf89c96bb2d0695030adb72c1d13d650a5bbe1806dd76d6cc",
- "state": "inactive",
- "size": 25165824,
- "installed.count": 19,
- "class": "boot",
- "device": "/dev/disk/by-partlabel/hassos-boot",
- "type": "vfat",
- "status": "ok",
- "bundle.version": "9.0.dev20220824",
- "installed.timestamp": "2022-08-25T21:11:46Z"
- }
- ],
- [
- "rootfs.0",
- {
- "bundle.compatible": "haos-odroid-n2",
- "parent": "kernel.0",
- "state": "inactive",
- "size": 117456896,
- "sha256": "7d908b4d578d072b1b0f75de8250fd97b6e119bff09518a96fffd6e4aec61721",
- "class": "rootfs",
- "device": "/dev/disk/by-partlabel/hassos-system0",
- "type": "raw",
- "status": "ok",
- "bundle.version": "9.0.dev20220818",
- "installed.timestamp": "2022-08-23T21:03:21Z",
- "installed.count": 9
- }
- ],
- [
- "spl.0",
- {
- "bundle.compatible": "haos-odroid-n2",
- "sha256": "9856a94df1d6abbc672adaf95746ec76abd3a8191f9d08288add6bb39e63ef45",
- "state": "inactive",
- "size": 8388608,
- "installed.count": 19,
- "class": "spl",
- "device": "/dev/disk/by-partlabel/hassos-boot",
- "type": "raw",
- "status": "ok",
- "bundle.version": "9.0.dev20220824",
- "installed.timestamp": "2022-08-25T21:11:51Z"
- }
- ],
- [
- "kernel.1",
- {
- "activated.count": 10,
- "activated.timestamp": "2022-08-25T21:11:52Z",
- "boot-status": "good",
- "bundle.compatible": "haos-odroid-n2",
- "sha256": "f57e354b8bd518022721e71fafaf278972af966d8f6cbefb4610db13785801c8",
- "state": "booted",
- "size": 10371072,
- "installed.count": 10,
- "class": "kernel",
- "device": "/dev/disk/by-partlabel/hassos-kernel1",
- "type": "raw",
- "bootname": "B",
- "bundle.version": "9.0.dev20220824",
- "installed.timestamp": "2022-08-25T21:11:46Z",
- "status": "ok"
- }
- ],
- [
- "rootfs.1",
- {
- "bundle.compatible": "haos-odroid-n2",
- "parent": "kernel.1",
- "state": "active",
- "size": 117456896,
- "sha256": "55936b64d391954ae1aed24dd1460e191e021e78655470051fa7939d12fff68a",
- "class": "rootfs",
- "device": "/dev/disk/by-partlabel/hassos-system1",
- "type": "raw",
- "status": "ok",
- "bundle.version": "9.0.dev20220824",
- "installed.timestamp": "2022-08-25T21:11:51Z",
- "installed.count": 10
- }
- ]
-]
diff --git a/tests/fixtures/de_pengutronix_rauc_Installer_Mark.json b/tests/fixtures/de_pengutronix_rauc_Installer_Mark.json
deleted file mode 100644
index 4405d90a6..000000000
--- a/tests/fixtures/de_pengutronix_rauc_Installer_Mark.json
+++ /dev/null
@@ -1 +0,0 @@
-["kernel.1", "marked slot kernel.1 as good"]
diff --git a/tests/fixtures/io_hass_os.json b/tests/fixtures/io_hass_os.json
deleted file mode 100644
index af7eab57e..000000000
--- a/tests/fixtures/io_hass_os.json
+++ /dev/null
@@ -1 +0,0 @@
-{ "Version": "1.1.0", "Diagnostics": true }
diff --git a/tests/fixtures/io_hass_os.xml b/tests/fixtures/io_hass_os.xml
deleted file mode 100644
index 06cff9ea7..000000000
--- a/tests/fixtures/io_hass_os.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/fixtures/io_hass_os_AppArmor-LoadProfile.json b/tests/fixtures/io_hass_os_AppArmor-LoadProfile.json
deleted file mode 100644
index 27ba77dda..000000000
--- a/tests/fixtures/io_hass_os_AppArmor-LoadProfile.json
+++ /dev/null
@@ -1 +0,0 @@
-true
diff --git a/tests/fixtures/io_hass_os_AppArmor-UnloadProfile.json b/tests/fixtures/io_hass_os_AppArmor-UnloadProfile.json
deleted file mode 100644
index 27ba77dda..000000000
--- a/tests/fixtures/io_hass_os_AppArmor-UnloadProfile.json
+++ /dev/null
@@ -1 +0,0 @@
-true
diff --git a/tests/fixtures/io_hass_os_AppArmor.json b/tests/fixtures/io_hass_os_AppArmor.json
deleted file mode 100644
index 57632f0f6..000000000
--- a/tests/fixtures/io_hass_os_AppArmor.json
+++ /dev/null
@@ -1 +0,0 @@
-{ "ParserVersion": "2.13.2" }
diff --git a/tests/fixtures/io_hass_os_AppArmor.xml b/tests/fixtures/io_hass_os_AppArmor.xml
deleted file mode 100644
index 0cd2178a2..000000000
--- a/tests/fixtures/io_hass_os_AppArmor.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/fixtures/io_hass_os_Boards.json b/tests/fixtures/io_hass_os_Boards.json
deleted file mode 100644
index 830a06edd..000000000
--- a/tests/fixtures/io_hass_os_Boards.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "Board": "Yellow"
-}
diff --git a/tests/fixtures/io_hass_os_Boards.xml b/tests/fixtures/io_hass_os_Boards.xml
deleted file mode 100644
index 4b21e9e7a..000000000
--- a/tests/fixtures/io_hass_os_Boards.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/io_hass_os_Boards_Supervised.json b/tests/fixtures/io_hass_os_Boards_Supervised.json
deleted file mode 100644
index 0967ef424..000000000
--- a/tests/fixtures/io_hass_os_Boards_Supervised.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/tests/fixtures/io_hass_os_Boards_Supervised.xml b/tests/fixtures/io_hass_os_Boards_Supervised.xml
deleted file mode 100644
index 4b6e43840..000000000
--- a/tests/fixtures/io_hass_os_Boards_Supervised.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/io_hass_os_Boards_Yellow.json b/tests/fixtures/io_hass_os_Boards_Yellow.json
deleted file mode 100644
index 4a864cec9..000000000
--- a/tests/fixtures/io_hass_os_Boards_Yellow.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "HeartbeatLED": true,
- "PowerLED": true,
- "DiskLED": true
-}
diff --git a/tests/fixtures/io_hass_os_Boards_Yellow.xml b/tests/fixtures/io_hass_os_Boards_Yellow.xml
deleted file mode 100644
index 9ef9b36dd..000000000
--- a/tests/fixtures/io_hass_os_Boards_Yellow.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/io_hass_os_CGroup-AddDevicesAllowed.json b/tests/fixtures/io_hass_os_CGroup-AddDevicesAllowed.json
deleted file mode 100644
index 27ba77dda..000000000
--- a/tests/fixtures/io_hass_os_CGroup-AddDevicesAllowed.json
+++ /dev/null
@@ -1 +0,0 @@
-true
diff --git a/tests/fixtures/io_hass_os_CGroup.xml b/tests/fixtures/io_hass_os_CGroup.xml
deleted file mode 100644
index 9ce67937d..000000000
--- a/tests/fixtures/io_hass_os_CGroup.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/fixtures/io_hass_os_DataDisk-ChangeDevice.json b/tests/fixtures/io_hass_os_DataDisk-ChangeDevice.json
deleted file mode 100644
index 27ba77dda..000000000
--- a/tests/fixtures/io_hass_os_DataDisk-ChangeDevice.json
+++ /dev/null
@@ -1 +0,0 @@
-true
diff --git a/tests/fixtures/io_hass_os_DataDisk-ReloadDevice.json b/tests/fixtures/io_hass_os_DataDisk-ReloadDevice.json
deleted file mode 100644
index 27ba77dda..000000000
--- a/tests/fixtures/io_hass_os_DataDisk-ReloadDevice.json
+++ /dev/null
@@ -1 +0,0 @@
-true
diff --git a/tests/fixtures/io_hass_os_DataDisk.json b/tests/fixtures/io_hass_os_DataDisk.json
deleted file mode 100644
index 1599cc0fc..000000000
--- a/tests/fixtures/io_hass_os_DataDisk.json
+++ /dev/null
@@ -1 +0,0 @@
-{ "CurrentDevice": "/dev/sda" }
diff --git a/tests/fixtures/io_hass_os_DataDisk.xml b/tests/fixtures/io_hass_os_DataDisk.xml
deleted file mode 100644
index 71706a294..000000000
--- a/tests/fixtures/io_hass_os_DataDisk.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/fixtures/io_hass_os_System-ScheduleWipeDevice.json b/tests/fixtures/io_hass_os_System-ScheduleWipeDevice.json
deleted file mode 100644
index 27ba77dda..000000000
--- a/tests/fixtures/io_hass_os_System-ScheduleWipeDevice.json
+++ /dev/null
@@ -1 +0,0 @@
-true
diff --git a/tests/fixtures/io_hass_os_System.xml b/tests/fixtures/io_hass_os_System.xml
deleted file mode 100644
index 43030956f..000000000
--- a/tests/fixtures/io_hass_os_System.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/fixtures/org_freedesktop_NetworkManager-ActivateConnection.json b/tests/fixtures/org_freedesktop_NetworkManager-ActivateConnection.json
deleted file mode 100644
index 8db42a5d5..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager-ActivateConnection.json
+++ /dev/null
@@ -1 +0,0 @@
-"/org/freedesktop/NetworkManager/ActiveConnection/1"
diff --git a/tests/fixtures/org_freedesktop_NetworkManager-AddAndActivateConnection.json b/tests/fixtures/org_freedesktop_NetworkManager-AddAndActivateConnection.json
deleted file mode 100644
index 131b2bab8..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager-AddAndActivateConnection.json
+++ /dev/null
@@ -1 +0,0 @@
-[ "/org/freedesktop/NetworkManager/Settings/1", "/org/freedesktop/NetworkManager/ActiveConnection/1" ]
diff --git a/tests/fixtures/org_freedesktop_NetworkManager-CheckConnectivity.json b/tests/fixtures/org_freedesktop_NetworkManager-CheckConnectivity.json
deleted file mode 100644
index b8626c4cf..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager-CheckConnectivity.json
+++ /dev/null
@@ -1 +0,0 @@
-4
diff --git a/tests/fixtures/org_freedesktop_NetworkManager.json b/tests/fixtures/org_freedesktop_NetworkManager.json
deleted file mode 100644
index 69d7f5361..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "Devices": [
- "/org/freedesktop/NetworkManager/Devices/1",
- "/org/freedesktop/NetworkManager/Devices/3"
- ],
- "AllDevices": [
- "/org/freedesktop/NetworkManager/Devices/1",
- "/org/freedesktop/NetworkManager/Devices/2",
- "/org/freedesktop/NetworkManager/Devices/3"
- ],
- "Checkpoints": [],
- "NetworkingEnabled": true,
- "WirelessEnabled": true,
- "WirelessHardwareEnabled": true,
- "WwanEnabled": true,
- "WwanHardwareEnabled": true,
- "WimaxEnabled": false,
- "WimaxHardwareEnabled": false,
- "ActiveConnections": ["/org/freedesktop/NetworkManager/ActiveConnection/1"],
- "PrimaryConnection": "/org/freedesktop/NetworkManager/ActiveConnection/1",
- "PrimaryConnectionType": "802-3-ethernet",
- "Metered": 4,
- "ActivatingConnection": "/",
- "Startup": false,
- "Version": "1.22.10",
- "Capabilities": [1],
- "State": 70,
- "Connectivity": 4,
- "ConnectivityCheckAvailable": true,
- "ConnectivityCheckEnabled": true,
- "ConnectivityCheckUri": "http://connectivity-check.ubuntu.com/",
- "GlobalDnsConfiguration": {}
-}
diff --git a/tests/fixtures/org_freedesktop_NetworkManager.xml b/tests/fixtures/org_freedesktop_NetworkManager.xml
deleted file mode 100644
index 4be654a9f..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager.xml
+++ /dev/null
@@ -1,162 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_AccessPoint_43099.json b/tests/fixtures/org_freedesktop_NetworkManager_AccessPoint_43099.json
deleted file mode 100644
index 5f738e36e..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_AccessPoint_43099.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "Flags": 3,
- "WpaFlags": 0,
- "RsnFlags": 392,
- "Ssid": [85, 80, 67, 52, 56, 49, 52, 52, 54, 54],
- "Frequency": 2462,
- "HwAddress": "E4:57:40:A9:D7:DE",
- "Mode": 2,
- "MaxBitrate": 195000,
- "Strength": 47,
- "LastSeen": 1398776
-}
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_AccessPoint_43100.json b/tests/fixtures/org_freedesktop_NetworkManager_AccessPoint_43100.json
deleted file mode 100644
index 161c3edfb..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_AccessPoint_43100.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "Flags": 1,
- "WpaFlags": 0,
- "RsnFlags": 392,
- "Ssid": [86, 81, 64, 51, 53, 40, 53, 53, 55, 50, 48],
- "Frequency": 5660,
- "HwAddress": "18:4B:0D:23:A1:9C",
- "Mode": 2,
- "MaxBitrate": 540000,
- "Strength": 63,
- "LastSeen": 1398839
-}
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_AccessPoint_~.xml b/tests/fixtures/org_freedesktop_NetworkManager_AccessPoint_~.xml
deleted file mode 100644
index 500838478..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_AccessPoint_~.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_ActiveConnection_~.xml b/tests/fixtures/org_freedesktop_NetworkManager_ActiveConnection_~.xml
deleted file mode 100644
index acfe31844..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_ActiveConnection_~.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_Connection_Active_1.json b/tests/fixtures/org_freedesktop_NetworkManager_Connection_Active_1.json
deleted file mode 100644
index bdbd00b79..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_Connection_Active_1.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "Connection": "/org/freedesktop/NetworkManager/Settings/1",
- "SpecificObject": "/",
- "Id": "Wired connection 1",
- "Uuid": "0c23631e-2118-355c-bbb0-8943229cb0d6",
- "Type": "802-3-ethernet",
- "Devices": ["/org/freedesktop/NetworkManager/Devices/1"],
- "State": 2,
- "StateFlags": 92,
- "Default": true,
- "Ip4Config": "/org/freedesktop/NetworkManager/IP4Config/1",
- "Dhcp4Config": "/org/freedesktop/NetworkManager/DHCP4Config/1",
- "Default6": false,
- "Ip6Config": "/org/freedesktop/NetworkManager/IP6Config/1",
- "Dhcp6Config": "/",
- "Vpn": false,
- "Master": "/"
-}
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_Device_1.json b/tests/fixtures/org_freedesktop_NetworkManager_Device_1.json
deleted file mode 100644
index 8f1f2d7e4..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_Device_1.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "Udi": "/sys/devices/pci0000:00/0000:00:1f.6/net/eth0",
- "Interface": "eth0",
- "IpInterface": "eth0",
- "Driver": "e1000e",
- "DriverVersion": "3.2.6-k",
- "FirmwareVersion": "0.7-4",
- "Capabilities": 3,
- "Ip4Address": 2499979456,
- "State": 100,
- "StateReason": [100, 0],
- "ActiveConnection": "/org/freedesktop/NetworkManager/ActiveConnection/1",
- "Ip4Config": "/org/freedesktop/NetworkManager/IP4Config/1",
- "Dhcp4Config": "/org/freedesktop/NetworkManager/DHCP4Config/1",
- "Ip6Config": "/org/freedesktop/NetworkManager/IP6Config/1",
- "Dhcp6Config": "/",
- "Managed": true,
- "Autoconnect": true,
- "FirmwareMissing": false,
- "NmPluginMissing": false,
- "DeviceType": 1,
- "AvailableConnections": ["/org/freedesktop/NetworkManager/Settings/1"],
- "PhysicalPortId": "",
- "Mtu": 1500,
- "Metered": 4,
- "LldpNeighbors": [],
- "Real": true,
- "Ip4Connectivity": 4,
- "Ip6Connectivity": 3,
- "InterfaceFlags": 65539
-}
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_Device_3.json b/tests/fixtures/org_freedesktop_NetworkManager_Device_3.json
deleted file mode 100644
index 61b1a61b0..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_Device_3.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "Udi": "/sys/devices/platform/soc/fe300000.mmcnr/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/net/wlan0",
- "Interface": "wlan0",
- "IpInterface": "",
- "Driver": "brcmfmac",
- "DriverVersion": "7.45.154",
- "FirmwareVersion": "01-4fbe0b04",
- "Capabilities": 1,
- "Ip4Address": 0,
- "State": 30,
- "StateReason": [30, 42],
- "ActiveConnection": "/",
- "Ip4Config": "/",
- "Dhcp4Config": "/",
- "Ip6Config": "/",
- "Dhcp6Config": "/",
- "Managed": true,
- "Autoconnect": true,
- "FirmwareMissing": false,
- "NmPluginMissing": false,
- "DeviceType": 2,
- "AvailableConnections": [],
- "PhysicalPortId": "",
- "Mtu": 1500,
- "Metered": 0,
- "LldpNeighbors": [],
- "Real": true,
- "Ip4Connectivity": 1,
- "Ip6Connectivity": 1
-}
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_Device_35.json b/tests/fixtures/org_freedesktop_NetworkManager_Device_35.json
deleted file mode 100644
index ac9af67ca..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_Device_35.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "Udi": "/sys/devices/virtual/net/veth87bd238'",
- "Path": "",
- "Interface": "veth87bd238",
- "IpInterface": "veth87bd238",
- "Driver": "veth",
- "DriverVersion": "1.0",
- "FirmwareVersion": "",
- "Capabilities": 7,
- "Ip4Address": 0,
- "State": 10,
- "StateReason": [10, 0],
- "ActiveConnection": "/",
- "Ip4Config": "/",
- "Dhcp4Config": "/",
- "Ip6Config": "/",
- "Dhcp6Config": "/",
- "Managed": false,
- "Autoconnect": true,
- "FirmwareMissing": false,
- "NmPluginMissing": false,
- "DeviceType": 20,
- "AvailableConnections": [],
- "PhysicalPortId": "",
- "Mtu": 1500,
- "Metered": 0,
- "LldpNeighbors": [],
- "Real": true,
- "Ip4Connectivity": 0,
- "Ip6Connectivity": 0,
- "InterfaceFlags": 65539,
- "HwAddress": "9A:4B:E3:9A:F8:D3",
- "Ports": []
-}
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_Device_Wireless_3.json b/tests/fixtures/org_freedesktop_NetworkManager_Device_Wireless_3.json
deleted file mode 100644
index b1da625bf..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_Device_Wireless_3.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "HwAddress": "EA:3C:50:4C:B8:82",
- "PermHwAddress": "DC:A6:32:02:BA:21",
- "Mode": 2,
- "Bitrate": 0,
- "AccessPoints": [
- "/org/freedesktop/NetworkManager/AccessPoint/41533",
- "/org/freedesktop/NetworkManager/AccessPoint/41534",
- "/org/freedesktop/NetworkManager/AccessPoint/41535",
- "/org/freedesktop/NetworkManager/AccessPoint/41536",
- "/org/freedesktop/NetworkManager/AccessPoint/41537",
- "/org/freedesktop/NetworkManager/AccessPoint/41538",
- "/org/freedesktop/NetworkManager/AccessPoint/41539",
- "/org/freedesktop/NetworkManager/AccessPoint/41540",
- "/org/freedesktop/NetworkManager/AccessPoint/41541"
- ],
- "ActiveAccessPoint": "/",
- "WirelessCapabilities": 2047,
- "LastScan": 1343924585
-}
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_Devices_3-GetAllAccessPoints.json b/tests/fixtures/org_freedesktop_NetworkManager_Devices_3-GetAllAccessPoints.json
deleted file mode 100644
index d92fb4eb1..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_Devices_3-GetAllAccessPoints.json
+++ /dev/null
@@ -1,4 +0,0 @@
-[
- "/org/freedesktop/NetworkManager/AccessPoint/43099",
- "/org/freedesktop/NetworkManager/AccessPoint/43100"
-]
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_Devices_~.xml b/tests/fixtures/org_freedesktop_NetworkManager_Devices_~.xml
deleted file mode 100644
index d17e2533b..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_Devices_~.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_DnsManager.json b/tests/fixtures/org_freedesktop_NetworkManager_DnsManager.json
deleted file mode 100644
index c83531277..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_DnsManager.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "Mode": "default",
- "RcManager": "file",
- "Configuration": [
- {
- "nameservers": ["192.168.30.1"],
- "domains": ["syshack.ch"],
- "interface": "eth0",
- "priority": 100,
- "vpn": false
- }
- ]
-}
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_DnsManager.xml b/tests/fixtures/org_freedesktop_NetworkManager_DnsManager.xml
deleted file mode 100644
index dc672efc5..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_DnsManager.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_IP4Config_1.json b/tests/fixtures/org_freedesktop_NetworkManager_IP4Config_1.json
deleted file mode 100644
index 8a96a52ce..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_IP4Config_1.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "Addresses": [[2499979456, 24, 16951488]],
- "AddressData": [{ "address": "192.168.2.148", "prefix": 24 }],
- "Gateway": "192.168.2.1",
- "Routes": [
- [174272, 24, 0, 100],
- [65193, 16, 0, 1000]
- ],
- "RouteData": [
- { "dest": "192.168.2.0", "prefix": 24, "metric": 100 },
- { "dest": "169.254.0.0", "prefix": 16, "metric": 1000 },
- { "dest": "0.0.0.0", "prefix": 0, "next-hop": "192.168.2.1", "metric": 100 }
- ],
- "NameserverData": [{ "address": "192.168.2.2" }],
- "Nameservers": [16951488],
- "Domains": [],
- "Searches": [],
- "DnsOptions": [],
- "DnsPriority": 100,
- "WinsServerData": [],
- "WinsServers": []
-}
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_IP4Config_~.xml b/tests/fixtures/org_freedesktop_NetworkManager_IP4Config_~.xml
deleted file mode 100644
index 2b7ecf62c..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_IP4Config_~.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_IP6Config_1.json b/tests/fixtures/org_freedesktop_NetworkManager_IP6Config_1.json
deleted file mode 100644
index 29d32e8ba..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_IP6Config_1.json
+++ /dev/null
@@ -1,115 +0,0 @@
-{
- "Addresses": [
- [
- [42, 3, 1, 105, 61, 245, 0, 0, 107, 233, 37, 136, 178, 106, 166, 121],
- 64,
- [254, 128, 0, 0, 0, 0, 0, 0, 218, 88, 215, 255, 254, 0, 256, 105]
- ],
- [
- [253, 20, 148, 255, 201, 204, 0, 0, 82, 43, 129, 8, 143, 248, 204, 163],
- 64,
- [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- ],
- [
- [42, 3, 1, 105, 61, 245, 0, 0, 0, 0, 0, 0, 0, 0, 2, 241],
- 128,
- [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- ],
- [
- [253, 20, 148, 255, 201, 204, 0, 0, 0, 0, 0, 0, 0, 0, 2, 241],
- 128,
- [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- ],
- [
- [254, 128, 0, 0, 0, 0, 0, 0, 255, 227, 49, 158, 198, 48, 159, 81],
- 64,
- [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- ]
- ],
- "AddressData": [
- { "address": "2a03:169:3df5:0:6be9:2588:b26a:a679", "prefix": 64 },
- { "address": "fd14:949b:c9cc:0:522b:8108:8ff8:cca3", "prefix": 64 },
- { "address": "2a03:169:3df5::2f1", "prefix": 128 },
- { "address": "fd14:949b:c9cc::2f1", "prefix": 128 },
- { "address": "fe80::ffe3:319e:c630:9f51", "prefix": 64 }
- ],
- "Gateway": "fe80::da58:d7ff:fe00:9c69",
- "Routes": [
- [
- [253, 20, 148, 255, 201, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- 48,
- [254, 128, 0, 0, 0, 0, 0, 0, 218, 88, 215, 255, 254, 0, 256, 105],
- 100
- ],
- [
- [42, 3, 1, 105, 61, 245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- 48,
- [254, 128, 0, 0, 0, 0, 0, 0, 218, 88, 215, 255, 254, 0, 256, 105],
- 100
- ],
- [
- [253, 20, 148, 255, 201, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- 64,
- [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- 100
- ],
- [
- [42, 3, 1, 105, 61, 245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- 64,
- [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- 100
- ],
- [
- [42, 3, 1, 105, 61, 245, 0, 0, 0, 0, 0, 0, 0, 0, 2, 241],
- 128,
- [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- 100
- ],
- [
- [253, 20, 148, 255, 201, 204, 0, 0, 0, 0, 0, 0, 0, 0, 2, 241],
- 128,
- [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- 100
- ],
- [
- [254, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- 64,
- [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- 100
- ]
- ],
- "RouteData": [
- {
- "dest": "fd14:949b:c9cc::",
- "prefix": 48,
- "next-hop": "fe80::da58:d7ff:fe00:9c69",
- "metric": 100
- },
- {
- "dest": "2a03:169:3df5::",
- "prefix": 48,
- "next-hop": "fe80::da58:d7ff:fe00:9c69",
- "metric": 100
- },
- { "dest": "fd14:949b:c9cc::", "prefix": 64, "metric": 100 },
- { "dest": "2a03:169:3df5::", "prefix": 64, "metric": 100 },
- {
- "dest": "::",
- "prefix": 0,
- "next-hop": "fe80::da58:d7ff:fe00:9c69",
- "metric": 100
- },
- { "dest": "2a03:169:3df5::2f1", "prefix": 128, "metric": 100 },
- { "dest": "fd14:949b:c9cc::2f1", "prefix": 128, "metric": 100 },
- { "dest": "fe80::", "prefix": 64, "metric": 100 },
- { "dest": "ff00::", "prefix": 8, "metric": 256, "table": 255 }
- ],
- "Nameservers": [
- [32, 1, 22, 32, 39, 119, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16],
- [32, 1, 22, 32, 39, 119, 0, 2, 0, 0, 0, 0, 0, 0, 0, 32]
- ],
- "Domains": [],
- "Searches": [],
- "DnsOptions": [],
- "DnsPriority": 100
-}
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_IP6Config_~.xml b/tests/fixtures/org_freedesktop_NetworkManager_IP6Config_~.xml
deleted file mode 100644
index 3c559ffed..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_IP6Config_~.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_Settings-AddConnection.json b/tests/fixtures/org_freedesktop_NetworkManager_Settings-AddConnection.json
deleted file mode 100644
index 7e70bfb79..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_Settings-AddConnection.json
+++ /dev/null
@@ -1 +0,0 @@
-"/org/freedesktop/NetworkManager/Settings/1"
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_Settings-ReloadConnections.json b/tests/fixtures/org_freedesktop_NetworkManager_Settings-ReloadConnections.json
deleted file mode 100644
index 27ba77dda..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_Settings-ReloadConnections.json
+++ /dev/null
@@ -1 +0,0 @@
-true
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_Settings.xml b/tests/fixtures/org_freedesktop_NetworkManager_Settings.xml
deleted file mode 100644
index a04f79c48..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_Settings.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_Settings_1-GetSettings.json b/tests/fixtures/org_freedesktop_NetworkManager_Settings_1-GetSettings.json
deleted file mode 100644
index ce17809ae..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_Settings_1-GetSettings.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "connection": {
- "id": "Wired connection 1",
- "interface-name": "eth0",
- "permissions": [],
- "timestamp": 1598125548,
- "type": "802-3-ethernet",
- "uuid": "0c23631e-2118-355c-bbb0-8943229cb0d6"
- },
- "ipv4": {
- "address-data": [{ "address": "192.168.2.148", "prefix": 24 }],
- "addresses": [[2483202240, 24, 16951488]],
- "dns": [16951488],
- "dns-search": [],
- "gateway": "192.168.2.1",
- "method": "auto",
- "route-data": [
- { "dest": "192.168.122.0", "prefix": 24, "next-hop": "10.10.10.1" }
- ],
- "routes": [[8038592, 24, 17435146, 0]]
- },
- "ipv6": {
- "address-data": [],
- "addresses": [],
- "dns": [],
- "dns-search": [],
- "method": "auto",
- "route-data": [],
- "routes": [],
- "addr-gen-mode": 0
- },
- "proxy": {},
- "802-3-ethernet": {
- "auto-negotiate": false,
- "mac-address-blacklist": [],
- "s390-options": {}
- },
- "802-11-wireless": { "ssid": [78, 69, 84, 84] }
-}
diff --git a/tests/fixtures/org_freedesktop_NetworkManager_Settings_~.xml b/tests/fixtures/org_freedesktop_NetworkManager_Settings_~.xml
deleted file mode 100644
index b9442d827..000000000
--- a/tests/fixtures/org_freedesktop_NetworkManager_Settings_~.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Block_loop0.json b/tests/fixtures/org_freedesktop_UDisks2_Block_loop0.json
deleted file mode 100644
index da07be59f..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Block_loop0.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "Device": { "_type": "ay", "_value": "/dev/loop0" },
- "PreferredDevice": { "_type": "ay", "_value": "/dev/loop0" },
- "Symlinks": [],
- "DeviceNumber": 1792,
- "Id": "",
- "Size": 0,
- "ReadOnly": false,
- "Drive": "/",
- "MDRaid": "/",
- "MDRaidMember": "/",
- "IdUsage": "",
- "IdType": "",
- "IdVersion": "",
- "IdLabel": "",
- "IdUUID": "",
- "Configuration": [],
- "CryptoBackingDevice": "/",
- "HintPartitionable": true,
- "HintSystem": true,
- "HintIgnore": false,
- "HintAuto": false,
- "HintName": "",
- "HintIconName": "",
- "HintSymbolicIconName": "",
- "UserspaceMountOptions": []
-}
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Block_mmcblk1.json b/tests/fixtures/org_freedesktop_UDisks2_Block_mmcblk1.json
deleted file mode 100644
index b40f7a90b..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Block_mmcblk1.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "Device": { "_type": "ay", "_value": "/dev/mmcblk1" },
- "PreferredDevice": { "_type": "ay", "_value": "/dev/mmcblk1" },
- "Symlinks": {
- "_type": "aay",
- "_value": [
- "/dev/disk/by-id/mmc-BJTD4R_0x97cde291",
- "/dev/disk/by-path/platform-ffe07000.mmc"
- ]
- },
- "DeviceNumber": 45824,
- "Id": "by-id-mmc-BJTD4R_0x97cde291",
- "Size": 31268536320,
- "ReadOnly": false,
- "Drive": "/org/freedesktop/UDisks2/drives/BJTD4R_0x97cde291",
- "MDRaid": "/",
- "MDRaidMember": "/",
- "IdUsage": "",
- "IdType": "",
- "IdVersion": "",
- "IdLabel": "",
- "IdUUID": "",
- "Configuration": [],
- "CryptoBackingDevice": "/",
- "HintPartitionable": true,
- "HintSystem": true,
- "HintIgnore": false,
- "HintAuto": false,
- "HintName": "",
- "HintIconName": "",
- "HintSymbolicIconName": "",
- "UserspaceMountOptions": []
-}
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Block_mmcblk1p1.json b/tests/fixtures/org_freedesktop_UDisks2_Block_mmcblk1p1.json
deleted file mode 100644
index 03e31cd74..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Block_mmcblk1p1.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "Device": { "_type": "ay", "_value": "/dev/mmcblk1p1" },
- "PreferredDevice": { "_type": "ay", "_value": "/dev/mmcblk1p1" },
- "Symlinks": {
- "_type": "aay",
- "_value": [
- "/dev/disk/by-id/mmc-BJTD4R_0x97cde291-part1",
- "/dev/disk/by-label/hassos-boot",
- "/dev/disk/by-partlabel/hassos-boot",
- "/dev/disk/by-partuuid/48617373-01",
- "/dev/disk/by-path/platform-ffe07000.mmc-part1",
- "/dev/disk/by-uuid/16DD-EED4"
- ]
- },
- "DeviceNumber": 45825,
- "Id": "by-id-mmc-BJTD4R_0x97cde291-part1",
- "Size": 25165824,
- "ReadOnly": false,
- "Drive": "/org/freedesktop/UDisks2/drives/BJTD4R_0x97cde291",
- "MDRaid": "/",
- "MDRaidMember": "/",
- "IdUsage": "filesystem",
- "IdType": "vfat",
- "IdVersion": "FAT16",
- "IdLabel": "hassos-boot",
- "IdUUID": "16DD-EED4",
- "Configuration": [],
- "CryptoBackingDevice": "/",
- "HintPartitionable": true,
- "HintSystem": true,
- "HintIgnore": false,
- "HintAuto": false,
- "HintName": "",
- "HintIconName": "",
- "HintSymbolicIconName": "",
- "UserspaceMountOptions": []
-}
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Block_mmcblk1p2.json b/tests/fixtures/org_freedesktop_UDisks2_Block_mmcblk1p2.json
deleted file mode 100644
index 3bfb69a1f..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Block_mmcblk1p2.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "Device": { "_type": "ay", "_value": "/dev/mmcblk1p2" },
- "PreferredDevice": { "_type": "ay", "_value": "/dev/mmcblk1p2" },
- "Symlinks": {
- "_type": "aay",
- "_value": [
- "/dev/disk/by-id/mmc-BJTD4R_0x97cde291-part2",
- "/dev/disk/by-partuuid/48617373-02",
- "/dev/disk/by-path/platform-ffe07000.mmc-part2"
- ]
- },
- "DeviceNumber": 45826,
- "Id": "by-id-mmc-BJTD4R_0x97cde291-part2",
- "Size": 1024,
- "ReadOnly": false,
- "Drive": "/org/freedesktop/UDisks2/drives/BJTD4R_0x97cde291",
- "MDRaid": "/",
- "MDRaidMember": "/",
- "IdUsage": "",
- "IdType": "",
- "IdVersion": "",
- "IdLabel": "",
- "IdUUID": "",
- "Configuration": [],
- "CryptoBackingDevice": "/",
- "HintPartitionable": true,
- "HintSystem": true,
- "HintIgnore": false,
- "HintAuto": false,
- "HintName": "",
- "HintIconName": "",
- "HintSymbolicIconName": "",
- "UserspaceMountOptions": []
-}
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Block_mmcblk1p3.json b/tests/fixtures/org_freedesktop_UDisks2_Block_mmcblk1p3.json
deleted file mode 100644
index 64c56eb84..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Block_mmcblk1p3.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "Device": { "_type": "ay", "_value": "/dev/mmcblk1p3" },
- "PreferredDevice": { "_type": "ay", "_value": "/dev/mmcblk1p3" },
- "Symlinks": {
- "_type": "aay",
- "_value": [
- "/dev/disk/by-id/mmc-BJTD4R_0x97cde291-part3",
- "/dev/disk/by-label/hassos-overlay",
- "/dev/disk/by-partuuid/48617373-03",
- "/dev/disk/by-path/platform-ffe07000.mmc-part3",
- "/dev/disk/by-uuid/0cd0d026-8c69-484e-bbf1-8197019fa7df"
- ]
- },
- "DeviceNumber": 45827,
- "Id": "by-id-mmc-BJTD4R_0x97cde291-part3",
- "Size": 100663296,
- "ReadOnly": false,
- "Drive": "/org/freedesktop/UDisks2/drives/BJTD4R_0x97cde291",
- "MDRaid": "/",
- "MDRaidMember": "/",
- "IdUsage": "filesystem",
- "IdType": "ext4",
- "IdVersion": "1.0",
- "IdLabel": "hassos-overlay",
- "IdUUID": "0cd0d026-8c69-484e-bbf1-8197019fa7df",
- "Configuration": [],
- "CryptoBackingDevice": "/",
- "HintPartitionable": true,
- "HintSystem": true,
- "HintIgnore": false,
- "HintAuto": false,
- "HintName": "",
- "HintIconName": "",
- "HintSymbolicIconName": "",
- "UserspaceMountOptions": []
-}
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Block_sda.json b/tests/fixtures/org_freedesktop_UDisks2_Block_sda.json
deleted file mode 100644
index 324a361fc..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Block_sda.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "Device": {
- "_type": "ay",
- "_value": "/dev/sda"
- },
- "PreferredDevice": {
- "_type": "ay",
- "_value": "/dev/sda"
- },
- "Symlinks": {
- "_type": "aay",
- "_value": [
- "/dev/disk/by-id/usb-SSK_SSK_Storage_DF56419883D56-0:0",
- "/dev/disk/by-path/platform-xhci-hcd.1.auto-usb-0:1.4:1.0-scsi-0:0:0:0"
- ]
- },
- "DeviceNumber": 2048,
- "Id": "by-id-usb-SSK_SSK_Storage_DF56419883D56-0:0",
- "Size": 250059350016,
- "ReadOnly": false,
- "Drive": "/org/freedesktop/UDisks2/drives/SSK_SSK_Storage_DF56419883D56",
- "MDRaid": "/",
- "MDRaidMember": "/",
- "IdUsage": "",
- "IdType": "",
- "IdVersion": "",
- "IdLabel": "",
- "IdUUID": "",
- "Configuration": [],
- "CryptoBackingDevice": "/",
- "HintPartitionable": true,
- "HintSystem": false,
- "HintIgnore": false,
- "HintAuto": true,
- "HintName": "",
- "HintIconName": "",
- "HintSymbolicIconName": "",
- "UserspaceMountOptions": []
-}
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Block_sda1.json b/tests/fixtures/org_freedesktop_UDisks2_Block_sda1.json
deleted file mode 100644
index b55383156..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Block_sda1.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "Device": { "_type": "ay", "_value": "/dev/sda1" },
- "PreferredDevice": { "_type": "ay", "_value": "/dev/sda1" },
- "Symlinks": {
- "_type": "aay",
- "_value": [
- "/dev/disk/by-id/usb-SSK_SSK_Storage_DF56419883D56-0:0-part1",
- "/dev/disk/by-label/hassos-data",
- "/dev/disk/by-partlabel/hassos-data-external",
- "/dev/disk/by-partuuid/6f3f99f4-4d34-476b-b051-77886da57fa9",
- "/dev/disk/by-path/platform-xhci-hcd.1.auto-usb-0:1.4:1.0-scsi-0:0:0:0-part1",
- "/dev/disk/by-uuid/b82b23cb-0c47-4bbb-acf5-2a2afa8894a2"
- ]
- },
- "DeviceNumber": 2049,
- "Id": "by-id-usb-SSK_SSK_Storage_DF56419883D56-0:0-part1",
- "Size": 250058113024,
- "ReadOnly": false,
- "Drive": "/org/freedesktop/UDisks2/drives/SSK_SSK_Storage_DF56419883D56",
- "MDRaid": "/",
- "MDRaidMember": "/",
- "IdUsage": "filesystem",
- "IdType": "ext4",
- "IdVersion": "1.0",
- "IdLabel": "hassos-data",
- "IdUUID": "b82b23cb-0c47-4bbb-acf5-2a2afa8894a2",
- "Configuration": [],
- "CryptoBackingDevice": "/",
- "HintPartitionable": true,
- "HintSystem": false,
- "HintIgnore": false,
- "HintAuto": true,
- "HintName": "",
- "HintIconName": "",
- "HintSymbolicIconName": "",
- "UserspaceMountOptions": []
-}
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Block_sdb.json b/tests/fixtures/org_freedesktop_UDisks2_Block_sdb.json
deleted file mode 100644
index 7e672d0aa..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Block_sdb.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "Device": { "_type": "ay", "_value": "/dev/sdb" },
- "PreferredDevice": { "_type": "ay", "_value": "/dev/sdb" },
- "Symlinks": {
- "_type": "aay",
- "_value": [
- "/dev/disk/by-id/usb-Generic_Flash_Disk_61BCDDB6-0:0",
- "/dev/disk/by-path/platform-xhci-hcd.1.auto-usb-0:1.2:1.0-scsi-0:0:0:0"
- ]
- },
- "DeviceNumber": 2064,
- "Id": "",
- "Size": 8054112256,
- "ReadOnly": false,
- "Drive": "/org/freedesktop/UDisks2/drives/Generic_Flash_Disk_61BCDDB6",
- "MDRaid": "/",
- "MDRaidMember": "/",
- "IdUsage": "",
- "IdType": "",
- "IdVersion": "",
- "IdLabel": "",
- "IdUUID": "",
- "Configuration": [],
- "CryptoBackingDevice": "/",
- "HintPartitionable": true,
- "HintSystem": false,
- "HintIgnore": false,
- "HintAuto": true,
- "HintName": "",
- "HintIconName": "",
- "HintSymbolicIconName": "",
- "UserspaceMountOptions": []
-}
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Block_sdb1.json b/tests/fixtures/org_freedesktop_UDisks2_Block_sdb1.json
deleted file mode 100644
index b23f44522..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Block_sdb1.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "Device": { "_type": "ay", "_value": "/dev/sdb1" },
- "PreferredDevice": { "_type": "ay", "_value": "/dev/sdb1" },
- "Symlinks": {
- "_type": "aay",
- "_value": [
- "/dev/disk/by-id/usb-Generic_Flash_Disk_61BCDDB6-0:0-part1",
- "/dev/disk/by-path/platform-xhci-hcd.1.auto-usb-0:1.2:1.0-scsi-0:0:0:0-part1",
- "/dev/disk/by-uuid/2802-1EDE"
- ]
- },
- "DeviceNumber": 2065,
- "Id": "by-uuid-2802-1EDE",
- "Size": 67108864,
- "ReadOnly": false,
- "Drive": "/org/freedesktop/UDisks2/drives/Generic_Flash_Disk_61BCDDB6",
- "MDRaid": "/",
- "MDRaidMember": "/",
- "IdUsage": "filesystem",
- "IdType": "vfat",
- "IdVersion": "FAT16",
- "IdLabel": "",
- "IdUUID": "2802-1EDE",
- "Configuration": [],
- "CryptoBackingDevice": "/",
- "HintPartitionable": true,
- "HintSystem": false,
- "HintIgnore": false,
- "HintAuto": true,
- "HintName": "",
- "HintIconName": "",
- "HintSymbolicIconName": "",
- "UserspaceMountOptions": []
-}
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Block_zram1.json b/tests/fixtures/org_freedesktop_UDisks2_Block_zram1.json
deleted file mode 100644
index 060341f6b..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Block_zram1.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "Device": { "_type": "ay", "_value": "/dev/zram1" },
- "PreferredDevice": { "_type": "ay", "_value": "/dev/zram1" },
- "Symlinks": [],
- "DeviceNumber": 64769,
- "Id": "",
- "Size": 33554432,
- "ReadOnly": false,
- "Drive": "/",
- "MDRaid": "/",
- "MDRaidMember": "/",
- "IdUsage": "",
- "IdType": "",
- "IdVersion": "",
- "IdLabel": "",
- "IdUUID": "",
- "Configuration": [],
- "CryptoBackingDevice": "/",
- "HintPartitionable": true,
- "HintSystem": true,
- "HintIgnore": false,
- "HintAuto": false,
- "HintName": "",
- "HintIconName": "",
- "HintSymbolicIconName": "",
- "UserspaceMountOptions": []
-}
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Drive_BJTD4R_0x97cde291.json b/tests/fixtures/org_freedesktop_UDisks2_Drive_BJTD4R_0x97cde291.json
deleted file mode 100644
index 6f91ffdb0..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Drive_BJTD4R_0x97cde291.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "Vendor": "",
- "Model": "BJTD4R",
- "Revision": "",
- "Serial": "0x97cde291",
- "WWN": "",
- "Id": "BJTD4R-0x97cde291",
- "Configuration": {},
- "Media": "flash_mmc",
- "MediaCompatibility": ["flash_mmc"],
- "MediaRemovable": false,
- "MediaAvailable": true,
- "MediaChangeDetected": true,
- "Size": 31268536320,
- "TimeDetected": 1673981760067475,
- "TimeMediaDetected": 1673981760067475,
- "Optical": false,
- "OpticalBlank": false,
- "OpticalNumTracks": 0,
- "OpticalNumAudioTracks": 0,
- "OpticalNumDataTracks": 0,
- "OpticalNumSessions": 0,
- "RotationRate": 0,
- "ConnectionBus": "sdio",
- "Seat": "seat0",
- "Removable": false,
- "Ejectable": false,
- "SortKey": "00coldplug/00fixed/mmcblk1",
- "CanPowerOff": false,
- "SiblingId": ""
-}
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Drive_Generic_Flash_Disk_61BCDDB6.json b/tests/fixtures/org_freedesktop_UDisks2_Drive_Generic_Flash_Disk_61BCDDB6.json
deleted file mode 100644
index f797c3f40..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Drive_Generic_Flash_Disk_61BCDDB6.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "Vendor": "Generic",
- "Model": "Flash Disk",
- "Revision": "8.07",
- "Serial": "61BCDDB6",
- "WWN": "",
- "Id": "Generic-Flash-Disk-61BCDDB6",
- "Configuration": {},
- "Media": "",
- "MediaCompatibility": [],
- "MediaRemovable": true,
- "MediaAvailable": true,
- "MediaChangeDetected": true,
- "Size": 8054112256,
- "TimeDetected": 1675972756688073,
- "TimeMediaDetected": 1675972756688073,
- "Optical": false,
- "OpticalBlank": false,
- "OpticalNumTracks": 0,
- "OpticalNumAudioTracks": 0,
- "OpticalNumDataTracks": 0,
- "OpticalNumSessions": 0,
- "RotationRate": -1,
- "ConnectionBus": "usb",
- "Seat": "seat0",
- "Removable": true,
- "Ejectable": true,
- "SortKey": "01hotplug/1675972756688073",
- "CanPowerOff": true,
- "SiblingId": "/sys/devices/platform/soc/ffe09000.usb/ff500000.usb/xhci-hcd.1.auto/usb1/1-1/1-1.2/1-1.2:1.0"
-}
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Drive_SSK_SSK_Storage_DF56419883D56.json b/tests/fixtures/org_freedesktop_UDisks2_Drive_SSK_SSK_Storage_DF56419883D56.json
deleted file mode 100644
index 5f79b4d5d..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Drive_SSK_SSK_Storage_DF56419883D56.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "Vendor": "SSK",
- "Model": "SSK Storage",
- "Revision": "0206",
- "Serial": "DF56419883D56",
- "WWN": "",
- "Id": "SSK-SSK-Storage-DF56419883D56",
- "Configuration": {},
- "Media": "",
- "MediaCompatibility": [],
- "MediaRemovable": false,
- "MediaAvailable": true,
- "MediaChangeDetected": true,
- "Size": 250059350016,
- "TimeDetected": 1675897304240492,
- "TimeMediaDetected": 1675897304240492,
- "Optical": false,
- "OpticalBlank": false,
- "OpticalNumTracks": 0,
- "OpticalNumAudioTracks": 0,
- "OpticalNumDataTracks": 0,
- "OpticalNumSessions": 0,
- "RotationRate": 0,
- "ConnectionBus": "usb",
- "Seat": "seat0",
- "Removable": true,
- "Ejectable": false,
- "SortKey": "01hotplug/1675897304240492",
- "CanPowerOff": true,
- "SiblingId": "/sys/devices/platform/soc/ffe09000.usb/ff500000.usb/xhci-hcd.1.auto/usb2/2-1/2-1.4/2-1.4:1.0"
-}
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Filesystem_mmcblk1p1.json b/tests/fixtures/org_freedesktop_UDisks2_Filesystem_mmcblk1p1.json
deleted file mode 100644
index bb25968e2..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Filesystem_mmcblk1p1.json
+++ /dev/null
@@ -1 +0,0 @@
-{ "MountPoints": { "_type": "aay", "_value": ["/mnt/boot"] }, "Size": 0 }
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Filesystem_mmcblk1p3.json b/tests/fixtures/org_freedesktop_UDisks2_Filesystem_mmcblk1p3.json
deleted file mode 100644
index ecd2c14dc..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Filesystem_mmcblk1p3.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "MountPoints": {
- "_type": "aay",
- "_value": [
- "/etc/NetworkManager/system-connections",
- "/etc/dropbear",
- "/etc/hostname",
- "/etc/hosts",
- "/etc/modprobe.d",
- "/etc/modules-load.d",
- "/etc/systemd/timesyncd.conf",
- "/etc/udev/rules.d",
- "/mnt/overlay",
- "/root/.docker",
- "/root/.ssh",
- "/var/lib/NetworkManager",
- "/var/lib/bluetooth",
- "/var/lib/systemd"
- ]
- },
- "Size": 100663296
-}
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Filesystem_sda1.json b/tests/fixtures/org_freedesktop_UDisks2_Filesystem_sda1.json
deleted file mode 100644
index 850a0cfa4..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Filesystem_sda1.json
+++ /dev/null
@@ -1 +0,0 @@
-{ "MountPoints": [], "Size": 250058113024 }
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Filesystem_sdb1.json b/tests/fixtures/org_freedesktop_UDisks2_Filesystem_sdb1.json
deleted file mode 100644
index de74fd872..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Filesystem_sdb1.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "MountPoints": {
- "_type": "aay",
- "_value": ["/mnt/data/supervisor/media/ext"]
- },
- "Size": 67108864
-}
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Filesystem_zram1.json b/tests/fixtures/org_freedesktop_UDisks2_Filesystem_zram1.json
deleted file mode 100644
index 311b066d0..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Filesystem_zram1.json
+++ /dev/null
@@ -1 +0,0 @@
-{ "MountPoints": { "_type": "aay", "_value": ["/var"] }, "Size": 0 }
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Manager-GetBlockDevices.json b/tests/fixtures/org_freedesktop_UDisks2_Manager-GetBlockDevices.json
deleted file mode 100644
index 9229c9b08..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Manager-GetBlockDevices.json
+++ /dev/null
@@ -1,12 +0,0 @@
-[
- "/org/freedesktop/UDisks2/block_devices/loop0",
- "/org/freedesktop/UDisks2/block_devices/mmcblk1",
- "/org/freedesktop/UDisks2/block_devices/mmcblk1p1",
- "/org/freedesktop/UDisks2/block_devices/mmcblk1p2",
- "/org/freedesktop/UDisks2/block_devices/mmcblk1p3",
- "/org/freedesktop/UDisks2/block_devices/sda",
- "/org/freedesktop/UDisks2/block_devices/sda1",
- "/org/freedesktop/UDisks2/block_devices/sdb",
- "/org/freedesktop/UDisks2/block_devices/sdb1",
- "/org/freedesktop/UDisks2/block_devices/zram1"
-]
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Manager-ResolveDevice.json b/tests/fixtures/org_freedesktop_UDisks2_Manager-ResolveDevice.json
deleted file mode 100644
index 8cf64f720..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Manager-ResolveDevice.json
+++ /dev/null
@@ -1 +0,0 @@
-["/org/freedesktop/UDisks2/block_devices/sda1"]
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Manager.json b/tests/fixtures/org_freedesktop_UDisks2_Manager.json
deleted file mode 100644
index b2ab031ce..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Manager.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "Version": "2.9.2",
- "SupportedFilesystems": ["ext4", "vfat", "ntfs", "exfat", "swap"],
- "SupportedEncryptionTypes": ["luks1", "luks2"],
- "DefaultEncryptionType": "luks1"
-}
diff --git a/tests/fixtures/org_freedesktop_UDisks2_Manager.xml b/tests/fixtures/org_freedesktop_UDisks2_Manager.xml
deleted file mode 100644
index 421dda6f0..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_Manager.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_UDisks2_PartitionTable_mmcblk1.json b/tests/fixtures/org_freedesktop_UDisks2_PartitionTable_mmcblk1.json
deleted file mode 100644
index 182637b75..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_PartitionTable_mmcblk1.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "Partitions": [
- "/org/freedesktop/UDisks2/block_devices/mmcblk1p1",
- "/org/freedesktop/UDisks2/block_devices/mmcblk1p2",
- "/org/freedesktop/UDisks2/block_devices/mmcblk1p3"
- ],
- "Type": "dos"
-}
diff --git a/tests/fixtures/org_freedesktop_UDisks2_PartitionTable_sda.json b/tests/fixtures/org_freedesktop_UDisks2_PartitionTable_sda.json
deleted file mode 100644
index 8caa09619..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_PartitionTable_sda.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "Partitions": ["/org/freedesktop/UDisks2/block_devices/sda1"],
- "Type": "gpt"
-}
diff --git a/tests/fixtures/org_freedesktop_UDisks2_PartitionTable_sdb.json b/tests/fixtures/org_freedesktop_UDisks2_PartitionTable_sdb.json
deleted file mode 100644
index aa5617f2d..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_PartitionTable_sdb.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "Partitions": ["/org/freedesktop/UDisks2/block_devices/sdb1"],
- "Type": "gpt"
-}
diff --git a/tests/fixtures/org_freedesktop_UDisks2_block_devices_loop0.xml b/tests/fixtures/org_freedesktop_UDisks2_block_devices_loop0.xml
deleted file mode 100644
index b6b5d8a2d..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_block_devices_loop0.xml
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/fixtures/org_freedesktop_UDisks2_block_devices_mmcblk1.xml b/tests/fixtures/org_freedesktop_UDisks2_block_devices_mmcblk1.xml
deleted file mode 100644
index 21db403e1..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_block_devices_mmcblk1.xml
+++ /dev/null
@@ -1,127 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_UDisks2_block_devices_mmcblk1p1.xml b/tests/fixtures/org_freedesktop_UDisks2_block_devices_mmcblk1p1.xml
deleted file mode 100644
index 727d4648c..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_block_devices_mmcblk1p1.xml
+++ /dev/null
@@ -1,166 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_UDisks2_block_devices_mmcblk1p2.xml b/tests/fixtures/org_freedesktop_UDisks2_block_devices_mmcblk1p2.xml
deleted file mode 100644
index 4de0bfb72..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_block_devices_mmcblk1p2.xml
+++ /dev/null
@@ -1,136 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_UDisks2_block_devices_mmcblk1p3.xml b/tests/fixtures/org_freedesktop_UDisks2_block_devices_mmcblk1p3.xml
deleted file mode 100644
index 727d4648c..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_block_devices_mmcblk1p3.xml
+++ /dev/null
@@ -1,166 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_UDisks2_block_devices_sda-CreatePartition.json b/tests/fixtures/org_freedesktop_UDisks2_block_devices_sda-CreatePartition.json
deleted file mode 100644
index 4ed34baef..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_block_devices_sda-CreatePartition.json
+++ /dev/null
@@ -1 +0,0 @@
-"/org/freedesktop/UDisks2/block_devices/sda2"
diff --git a/tests/fixtures/org_freedesktop_UDisks2_block_devices_sda.xml b/tests/fixtures/org_freedesktop_UDisks2_block_devices_sda.xml
deleted file mode 100644
index 21db403e1..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_block_devices_sda.xml
+++ /dev/null
@@ -1,127 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_UDisks2_block_devices_sda1-Check.json b/tests/fixtures/org_freedesktop_UDisks2_block_devices_sda1-Check.json
deleted file mode 100644
index 27ba77dda..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_block_devices_sda1-Check.json
+++ /dev/null
@@ -1 +0,0 @@
-true
diff --git a/tests/fixtures/org_freedesktop_UDisks2_block_devices_sda1-Mount.json b/tests/fixtures/org_freedesktop_UDisks2_block_devices_sda1-Mount.json
deleted file mode 100644
index 95d2424e2..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_block_devices_sda1-Mount.json
+++ /dev/null
@@ -1 +0,0 @@
-"/run/media/dev/hassos_data"
diff --git a/tests/fixtures/org_freedesktop_UDisks2_block_devices_sda1-Repair.json b/tests/fixtures/org_freedesktop_UDisks2_block_devices_sda1-Repair.json
deleted file mode 100644
index 27ba77dda..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_block_devices_sda1-Repair.json
+++ /dev/null
@@ -1 +0,0 @@
-true
diff --git a/tests/fixtures/org_freedesktop_UDisks2_block_devices_sda1.xml b/tests/fixtures/org_freedesktop_UDisks2_block_devices_sda1.xml
deleted file mode 100644
index 1cd7c03b0..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_block_devices_sda1.xml
+++ /dev/null
@@ -1,166 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/fixtures/org_freedesktop_UDisks2_block_devices_sdb.xml b/tests/fixtures/org_freedesktop_UDisks2_block_devices_sdb.xml
deleted file mode 100644
index 21db403e1..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_block_devices_sdb.xml
+++ /dev/null
@@ -1,127 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_UDisks2_block_devices_sdb1.xml b/tests/fixtures/org_freedesktop_UDisks2_block_devices_sdb1.xml
deleted file mode 100644
index 727d4648c..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_block_devices_sdb1.xml
+++ /dev/null
@@ -1,166 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_UDisks2_block_devices_zram1.xml b/tests/fixtures/org_freedesktop_UDisks2_block_devices_zram1.xml
deleted file mode 100644
index 2b9a3ba0a..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_block_devices_zram1.xml
+++ /dev/null
@@ -1,135 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_UDisks2_drives_BJTD4R_0x97cde291.xml b/tests/fixtures/org_freedesktop_UDisks2_drives_BJTD4R_0x97cde291.xml
deleted file mode 100644
index 95c47a414..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_drives_BJTD4R_0x97cde291.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_UDisks2_drives_Generic_Flash_Disk_61BCDDB6.xml b/tests/fixtures/org_freedesktop_UDisks2_drives_Generic_Flash_Disk_61BCDDB6.xml
deleted file mode 100644
index 95c47a414..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_drives_Generic_Flash_Disk_61BCDDB6.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_UDisks2_drives_SSK_SSK_Storage_DF56419883D56.xml b/tests/fixtures/org_freedesktop_UDisks2_drives_SSK_SSK_Storage_DF56419883D56.xml
deleted file mode 100644
index 95c47a414..000000000
--- a/tests/fixtures/org_freedesktop_UDisks2_drives_SSK_SSK_Storage_DF56419883D56.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_hostname1.json b/tests/fixtures/org_freedesktop_hostname1.json
deleted file mode 100644
index 8dfba061f..000000000
--- a/tests/fixtures/org_freedesktop_hostname1.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "Hostname": "homeassistant-n2",
- "StaticHostname": "homeassistant-n2",
- "PrettyHostname": "",
- "IconName": "computer-embedded",
- "Chassis": "embedded",
- "Deployment": "development",
- "Location": "",
- "KernelName": "Linux",
- "KernelRelease": "5.10.33",
- "KernelVersion": "#1 SMP PREEMPT Wed May 5 00:55:38 UTC 2021",
- "OperatingSystemPrettyName": "Home Assistant OS 6.0.dev20210504",
- "OperatingSystemCPEName": "cpe:2.3:o:home-assistant:haos:6.0.dev20210504:*:development:*:*:*:odroid-n2:*",
- "HomeURL": "https://hass.io/"
-}
diff --git a/tests/fixtures/org_freedesktop_hostname1.xml b/tests/fixtures/org_freedesktop_hostname1.xml
deleted file mode 100644
index 33106720b..000000000
--- a/tests/fixtures/org_freedesktop_hostname1.xml
+++ /dev/null
@@ -1,102 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/fixtures/org_freedesktop_login1.xml b/tests/fixtures/org_freedesktop_login1.xml
deleted file mode 100644
index 283429e63..000000000
--- a/tests/fixtures/org_freedesktop_login1.xml
+++ /dev/null
@@ -1,381 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/fixtures/org_freedesktop_resolve1.xml b/tests/fixtures/org_freedesktop_resolve1.xml
deleted file mode 100644
index 5f072179a..000000000
--- a/tests/fixtures/org_freedesktop_resolve1.xml
+++ /dev/null
@@ -1,194 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_resolve1_Manager.json b/tests/fixtures/org_freedesktop_resolve1_Manager.json
deleted file mode 100644
index a9e7bc422..000000000
--- a/tests/fixtures/org_freedesktop_resolve1_Manager.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "LLMNRHostname": "homeassistant",
- "LLMNR": "yes",
- "MulticastDNS": "resolve",
- "DNSOverTLS": "no",
- "DNS": [
- [0, 2, [127, 0, 0, 1]],
- [0, 10, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]]
- ],
- "DNSEx": [
- [0, 2, [127, 0, 0, 1], 0, ""],
- [0, 10, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], 0, ""]
- ],
- "FallbackDNS": [
- [0, 2, [1, 1, 1, 1]],
- [0, 10, [38, 6, 71, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17]]
- ],
- "FallbackDNSEx": [
- [0, 2, [1, 1, 1, 1], 0, "cloudflare-dns.com"],
- [
- 0,
- 10,
- [38, 6, 71, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17],
- 0,
- "cloudflare-dns.com"
- ]
- ],
- "CurrentDNSServer": [0, 2, [127, 0, 0, 1]],
- "CurrentDNSServerEx": [0, 2, [127, 0, 0, 1], 0, ""],
- "Domains": [[0, "local.hass.io", false]],
- "TransactionStatistics": [0, 100000],
- "CacheStatistics": [10, 50000, 10000],
- "DNSSEC": "no",
- "DNSSECStatistics": [0, 0, 0, 0],
- "DNSSECSupported": false,
- "DNSSECNegativeTrustAnchors": ["168.192.in-addr.arpa", "local"],
- "DNSStubListener": "no",
- "ResolvConfMode": "foreign"
-}
diff --git a/tests/fixtures/org_freedesktop_systemd1-ListUnits.json b/tests/fixtures/org_freedesktop_systemd1-ListUnits.json
deleted file mode 100644
index bc6f8092a..000000000
--- a/tests/fixtures/org_freedesktop_systemd1-ListUnits.json
+++ /dev/null
@@ -1,50 +0,0 @@
-[
- [
- "etc-machine\\x2did.mount",
- "/etc/machine-id",
- "loaded",
- "active",
- "mounted",
- "",
- "/org/freedesktop/systemd1/unit/etc_2dmachine_5cx2did_2emount",
- 0,
- "",
- "/"
- ],
- [
- "firewalld.service",
- "firewalld.service",
- "not-found",
- "inactive",
- "dead",
- "",
- "/org/freedesktop/systemd1/unit/firewalld_2eservice",
- 0,
- "",
- "/"
- ],
- [
- "sys-devices-virtual-tty-ttypd.device",
- "/sys/devices/virtual/tty/ttypd",
- "loaded",
- "active",
- "plugged",
- "",
- "/org/freedesktop/systemd1/unit/sys_2ddevices_2dvirtual_2dtty_2dttypd_2edevice",
- 0,
- "",
- "/"
- ],
- [
- "zram-swap.service",
- "HassOS ZRAM swap",
- "loaded",
- "active",
- "exited",
- "",
- "/org/freedesktop/systemd1/unit/zram_2dswap_2eservice",
- 0,
- "",
- "/"
- ]
-]
diff --git a/tests/fixtures/org_freedesktop_systemd1-ReloadOrRestartUnit.json b/tests/fixtures/org_freedesktop_systemd1-ReloadOrRestartUnit.json
deleted file mode 100644
index bca312c78..000000000
--- a/tests/fixtures/org_freedesktop_systemd1-ReloadOrRestartUnit.json
+++ /dev/null
@@ -1 +0,0 @@
-"/org/freedesktop/systemd1/job/7623"
diff --git a/tests/fixtures/org_freedesktop_systemd1-RestartUnit.json b/tests/fixtures/org_freedesktop_systemd1-RestartUnit.json
deleted file mode 100644
index bca312c78..000000000
--- a/tests/fixtures/org_freedesktop_systemd1-RestartUnit.json
+++ /dev/null
@@ -1 +0,0 @@
-"/org/freedesktop/systemd1/job/7623"
diff --git a/tests/fixtures/org_freedesktop_systemd1-StartUnit.json b/tests/fixtures/org_freedesktop_systemd1-StartUnit.json
deleted file mode 100644
index bca312c78..000000000
--- a/tests/fixtures/org_freedesktop_systemd1-StartUnit.json
+++ /dev/null
@@ -1 +0,0 @@
-"/org/freedesktop/systemd1/job/7623"
diff --git a/tests/fixtures/org_freedesktop_systemd1-StopUnit.json b/tests/fixtures/org_freedesktop_systemd1-StopUnit.json
deleted file mode 100644
index bca312c78..000000000
--- a/tests/fixtures/org_freedesktop_systemd1-StopUnit.json
+++ /dev/null
@@ -1 +0,0 @@
-"/org/freedesktop/systemd1/job/7623"
diff --git a/tests/fixtures/org_freedesktop_systemd1.xml b/tests/fixtures/org_freedesktop_systemd1.xml
deleted file mode 100644
index ec584dcde..000000000
--- a/tests/fixtures/org_freedesktop_systemd1.xml
+++ /dev/null
@@ -1,726 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/fixtures/org_freedesktop_systemd1_Manager.json b/tests/fixtures/org_freedesktop_systemd1_Manager.json
deleted file mode 100644
index 4313c55b5..000000000
--- a/tests/fixtures/org_freedesktop_systemd1_Manager.json
+++ /dev/null
@@ -1,127 +0,0 @@
-{
- "Version": "249",
- "Features": "+PAM -AUDIT -SELINUX +APPARMOR -IMA -SMACK -SECCOMP +GCRYPT +GNUTLS +OPENSSL -ACL +BLKID +CURL -ELFUTILS -FIDO2 -IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ +ZLIB -ZSTD -XKBCOMMON -UTMP -SYSVINIT default-hierarchy=hybrid",
- "Virtualization": "",
- "Architecture": "arm64",
- "Tainted": "cgroupsv1",
- "FirmwareTimestamp": 0,
- "FirmwareTimestampMonotonic": 0,
- "LoaderTimestamp": 0,
- "LoaderTimestampMonotonic": 0,
- "KernelTimestamp": 1646197924245019,
- "KernelTimestampMonotonic": 0,
- "InitRDTimestamp": 0,
- "InitRDTimestampMonotonic": 0,
- "UserspaceTimestamp": 1646197926126937,
- "UserspaceTimestampMonotonic": 1881921,
- "FinishTimestamp": 1646197962613554,
- "FinishTimestampMonotonic": 38368540,
- "SecurityStartTimestamp": 1646197926137295,
- "SecurityStartTimestampMonotonic": 1892280,
- "SecurityFinishTimestamp": 1646197926139253,
- "SecurityFinishTimestampMonotonic": 1894237,
- "GeneratorsStartTimestamp": 1646197926235939,
- "GeneratorsStartTimestampMonotonic": 1990923,
- "GeneratorsFinishTimestamp": 1646197926260378,
- "GeneratorsFinishTimestampMonotonic": 2015363,
- "UnitsLoadStartTimestamp": 1646197926260388,
- "UnitsLoadStartTimestampMonotonic": 2015371,
- "UnitsLoadFinishTimestamp": 1646197926339294,
- "UnitsLoadFinishTimestampMonotonic": 2094278,
- "InitRDSecurityStartTimestamp": 0,
- "InitRDSecurityStartTimestampMonotonic": 0,
- "InitRDSecurityFinishTimestamp": 0,
- "InitRDSecurityFinishTimestampMonotonic": 0,
- "InitRDGeneratorsStartTimestamp": 0,
- "InitRDGeneratorsStartTimestampMonotonic": 0,
- "InitRDGeneratorsFinishTimestamp": 0,
- "InitRDGeneratorsFinishTimestampMonotonic": 0,
- "InitRDUnitsLoadStartTimestamp": 0,
- "InitRDUnitsLoadStartTimestampMonotonic": 0,
- "InitRDUnitsLoadFinishTimestamp": 0,
- "InitRDUnitsLoadFinishTimestampMonotonic": 0,
- "LogLevel": "info",
- "LogTarget": "journal - or - kmsg",
- "NNames": 377,
- "NFailedUnits": 0,
- "NJobs": 0,
- "NInstalledJobs": 798,
- "NFailedJobs": 0,
- "Progress": 1.0,
- "Environment": [
- "LANG = C.UTF - 8",
- "PATH = /usr/local / sbin: /usr/local / bin: /usr/sbin: /usr/bin"
- ],
- "ConfirmSpawn": false,
- "ShowStatus": true,
- "UnitPath": [
- " / etc / systemd / system.control",
- " / run / systemd / system.control",
- " / run / systemd / transient",
- " / run / systemd / generator.early",
- " / etc / systemd / system",
- " / etc / systemd / system.attached",
- " / run / systemd / system",
- " / run / systemd / system.attached",
- " / run / systemd / generator",
- " / usr / local / lib / systemd / system",
- " / usr / lib / systemd / system",
- " / run / systemd / generator.late"
- ],
- "DefaultStandardOutput": "journal",
- "DefaultStandardError": "inherit",
- "RuntimeWatchdogUSec": 0,
- "RebootWatchdogUSec": 600000000,
- "KExecWatchdogUSec": 0,
- "ServiceWatchdogs": true,
- "ControlGroup": "",
- "SystemState": "running",
- "ExitCode": [0, 0, 0, 0],
- "DefaultTimerAccuracyUSec": 60000000,
- "DefaultTimeoutStartUSec": 90000000,
- "DefaultTimeoutStopUSec": 90000000,
- "DefaultTimeoutAbortUSec": 90000000,
- "DefaultRestartUSec": 100000,
- "DefaultStartLimitIntervalUSec": 10000000,
- "DefaultStartLimitBurst": 5,
- "DefaultCPUAccounting": false,
- "DefaultBlockIOAccounting": false,
- "DefaultMemoryAccounting": true,
- "DefaultTasksAccounting": true,
- "DefaultLimitCPU": 18446744073709551615,
- "DefaultLimitCPUSoft": 18446744073709551615,
- "DefaultLimitFSIZE": 18446744073709551615,
- "DefaultLimitFSIZESoft": 18446744073709551615,
- "DefaultLimitDATA": 18446744073709551615,
- "DefaultLimitDATASoft": 18446744073709551615,
- "DefaultLimitSTACK": 18446744073709551615,
- "DefaultLimitSTACKSoft": 8388608,
- "DefaultLimitCORE": 18446744073709551615,
- "DefaultLimitCORESoft": 18446744073709551615,
- "DefaultLimitRSS": 18446744073709551615,
- "DefaultLimitRSSSoft": 18446744073709551615,
- "DefaultLimitNOFILE": 524288,
- "DefaultLimitNOFILESoft": 1024,
- "DefaultLimitAS": 18446744073709551615,
- "DefaultLimitASSoft": 18446744073709551615,
- "DefaultLimitNPROC": 14236,
- "DefaultLimitNPROCSoft": 14236,
- "DefaultLimitMEMLOCK": 65536,
- "DefaultLimitMEMLOCKSoft": 65536,
- "DefaultLimitLOCKS": 18446744073709551615,
- "DefaultLimitLOCKSSoft": 18446744073709551615,
- "DefaultLimitSIGPENDING": 14236,
- "DefaultLimitSIGPENDINGSoft": 14236,
- "DefaultLimitMSGQUEUE": 819200,
- "DefaultLimitMSGQUEUESoft": 819200,
- "DefaultLimitNICE": 0,
- "DefaultLimitNICESoft": 0,
- "DefaultLimitRTPRIO": 0,
- "DefaultLimitRTPRIOSoft": 0,
- "DefaultLimitRTTIME": 18446744073709551615,
- "DefaultLimitRTTIMESoft": 18446744073709551615,
- "DefaultTasksMax": 4270,
- "TimerSlackNSec": 50000,
- "DefaultOOMPolicy": "stop",
- "CtrlAltDelBurstAction": "reboot - force"
-}
diff --git a/tests/fixtures/org_freedesktop_systemd1_properties.json b/tests/fixtures/org_freedesktop_systemd1_properties.json
deleted file mode 100644
index b580c68cc..000000000
--- a/tests/fixtures/org_freedesktop_systemd1_properties.json
+++ /dev/null
@@ -1,138 +0,0 @@
-{
- "Version": "245.4-4ubuntu3.11",
- "Features": "+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid",
- "Virtualization": "",
- "Architecture": "x86-64",
- "Tainted": "",
- "FirmwareTimestamp": 0,
- "FirmwareTimestampMonotonic": 28723572,
- "LoaderTimestamp": 0,
- "LoaderTimestampMonotonic": 12402885,
- "KernelTimestamp": 1632236694969442,
- "KernelTimestampMonotonic": 0,
- "InitRDTimestamp": 0,
- "InitRDTimestampMonotonic": 0,
- "UserspaceTimestamp": 1632236699147681,
- "UserspaceTimestampMonotonic": 4178239,
- "FinishTimestamp": 1632236713344227,
- "FinishTimestampMonotonic": 18374785,
- "SecurityStartTimestamp": 1632236699156494,
- "SecurityStartTimestampMonotonic": 4187052,
- "SecurityFinishTimestamp": 1632236699156980,
- "SecurityFinishTimestampMonotonic": 4187538,
- "GeneratorsStartTimestamp": 1632236699281427,
- "GeneratorsStartTimestampMonotonic": 4311984,
- "GeneratorsFinishTimestamp": 1632236699334042,
- "GeneratorsFinishTimestampMonotonic": 4364600,
- "UnitsLoadStartTimestamp": 1632236699334044,
- "UnitsLoadStartTimestampMonotonic": 4364602,
- "UnitsLoadFinishTimestamp": 1632236699424558,
- "UnitsLoadFinishTimestampMonotonic": 4455116,
- "InitRDSecurityStartTimestamp": 0,
- "InitRDSecurityStartTimestampMonotonic": 0,
- "InitRDSecurityFinishTimestamp": 0,
- "InitRDSecurityFinishTimestampMonotonic": 0,
- "InitRDGeneratorsStartTimestamp": 0,
- "InitRDGeneratorsStartTimestampMonotonic": 0,
- "InitRDGeneratorsFinishTimestamp": 0,
- "InitRDGeneratorsFinishTimestampMonotonic": 0,
- "InitRDUnitsLoadStartTimestamp": 0,
- "InitRDUnitsLoadStartTimestampMonotonic": 0,
- "InitRDUnitsLoadFinishTimestamp": 0,
- "InitRDUnitsLoadFinishTimestampMonotonic": 0,
- "LogLevel": "info",
- "LogTarget": "journal-or-kmsg",
- "NNames": 564,
- "NFailedUnits": 0,
- "NJobs": 0,
- "NInstalledJobs": 1575,
- "NFailedJobs": 0,
- "Progress": 1.0,
- "Environment": [
- "LANG=en_US.UTF-8",
- "LC_ADDRESS=nb_NO.UTF-8",
- "LC_IDENTIFICATION=nb_NO.UTF-8",
- "LC_MEASUREMENT=nb_NO.UTF-8",
- "LC_MONETARY=nb_NO.UTF-8",
- "LC_NAME=nb_NO.UTF-8",
- "LC_NUMERIC=nb_NO.UTF-8",
- "LC_PAPER=nb_NO.UTF-8",
- "LC_TELEPHONE=nb_NO.UTF-8",
- "LC_TIME=nb_NO.UTF-8",
- "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
- ],
- "ConfirmSpawn": false,
- "ShowStatus": false,
- "UnitPath": [
- "/etc/systemd/system.control",
- "/run/systemd/system.control",
- "/run/systemd/transient",
- "/run/systemd/generator.early",
- "/etc/systemd/system",
- "/etc/systemd/system.attached",
- "/run/systemd/system",
- "/run/systemd/system.attached",
- "/run/systemd/generator",
- "/usr/local/lib/systemd/system",
- "/lib/systemd/system",
- "/usr/lib/systemd/system",
- "/run/systemd/generator.late"
- ],
- "DefaultStandardOutput": "journal",
- "DefaultStandardError": "journal",
- "RuntimeWatchdogUSec": 0,
- "RebootWatchdogUSec": 600000000,
- "KExecWatchdogUSec": 0,
- "ServiceWatchdogs": true,
- "ControlGroup": "",
- "SystemState": "running",
- "ExitCode": [
- 0
- ],
- "DefaultTimerAccuracyUSec": 60000000,
- "DefaultTimeoutStartUSec": 90000000,
- "DefaultTimeoutStopUSec": 90000000,
- "DefaultTimeoutAbortUSec": 90000000,
- "DefaultRestartUSec": 100000,
- "DefaultStartLimitIntervalUSec": 10000000,
- "DefaultStartLimitBurst": 5,
- "DefaultCPUAccounting": false,
- "DefaultBlockIOAccounting": false,
- "DefaultMemoryAccounting": true,
- "DefaultTasksAccounting": true,
- "DefaultLimitCPU": 18446744073709551615,
- "DefaultLimitCPUSoft": 18446744073709551615,
- "DefaultLimitFSIZE": 18446744073709551615,
- "DefaultLimitFSIZESoft": 18446744073709551615,
- "DefaultLimitDATA": 18446744073709551615,
- "DefaultLimitDATASoft": 18446744073709551615,
- "DefaultLimitSTACK": 18446744073709551615,
- "DefaultLimitSTACKSoft": 8388608,
- "DefaultLimitCORE": 18446744073709551615,
- "DefaultLimitCORESoft": 0,
- "DefaultLimitRSS": 18446744073709551615,
- "DefaultLimitRSSSoft": 18446744073709551615,
- "DefaultLimitNOFILE": 524288,
- "DefaultLimitNOFILESoft": 1024,
- "DefaultLimitAS": 18446744073709551615,
- "DefaultLimitASSoft": 18446744073709551615,
- "DefaultLimitNPROC": 127764,
- "DefaultLimitNPROCSoft": 127764,
- "DefaultLimitMEMLOCK": 65536,
- "DefaultLimitMEMLOCKSoft": 65536,
- "DefaultLimitLOCKS": 18446744073709551615,
- "DefaultLimitLOCKSSoft": 18446744073709551615,
- "DefaultLimitSIGPENDING": 127764,
- "DefaultLimitSIGPENDINGSoft": 127764,
- "DefaultLimitMSGQUEUE": 819200,
- "DefaultLimitMSGQUEUESoft": 819200,
- "DefaultLimitNICE": 0,
- "DefaultLimitNICESoft": 0,
- "DefaultLimitRTPRIO": 0,
- "DefaultLimitRTPRIOSoft": 0,
- "DefaultLimitRTTIME": 18446744073709551615,
- "DefaultLimitRTTIMESoft": 18446744073709551615,
- "DefaultTasksMax": 38329,
- "TimerSlackNSec": 50000,
- "DefaultOOMPolicy": "stop"
-}
\ No newline at end of file
diff --git a/tests/fixtures/org_freedesktop_timedate1.json b/tests/fixtures/org_freedesktop_timedate1.json
deleted file mode 100644
index 87f0f56af..000000000
--- a/tests/fixtures/org_freedesktop_timedate1.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "Timezone": "Etc/UTC",
- "LocalRTC": false,
- "CanNTP": true,
- "NTP": true,
- "NTPSynchronized": true,
- "TimeUSec": 1621413414405718,
- "RTCTimeUSec": 1621413415000000
-}
diff --git a/tests/fixtures/org_freedesktop_timedate1.xml b/tests/fixtures/org_freedesktop_timedate1.xml
deleted file mode 100644
index 589d4c0e3..000000000
--- a/tests/fixtures/org_freedesktop_timedate1.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/host/test_connectivity.py b/tests/host/test_connectivity.py
index cea5fe4a6..d8fa13992 100644
--- a/tests/host/test_connectivity.py
+++ b/tests/host/test_connectivity.py
@@ -7,32 +7,36 @@ import pytest
from supervisor.coresys import CoreSys
+from tests.dbus_service_mocks.network_manager import (
+ NetworkManager as NetworkManagerService,
+)
-async def test_connectivity_not_connected(coresys: CoreSys):
+
+@pytest.mark.parametrize("force", [True, False])
+async def test_connectivity_not_connected(
+ coresys: CoreSys, force: bool, network_manager_service: NetworkManagerService
+):
"""Test host unknown connectivity."""
- with patch("supervisor.utils.dbus.DBus.call_dbus", return_value=0):
- await coresys.host.network.check_connectivity()
- assert not coresys.host.network.connectivity
+ assert coresys.host.network.connectivity
- await coresys.host.network.check_connectivity(force=True)
- assert not coresys.host.network.connectivity
+ network_manager_service.connectivity = 0
+ await coresys.host.network.check_connectivity(force=force)
+ assert not coresys.host.network.connectivity
-async def test_connectivity_connected(coresys: CoreSys, dbus: list[str]):
+async def test_connectivity_connected(
+ coresys: CoreSys, network_manager_service: NetworkManagerService
+):
"""Test host full connectivity."""
- dbus.clear()
+ network_manager_service.CheckConnectivity.calls.clear()
+
await coresys.host.network.check_connectivity()
assert coresys.host.network.connectivity
- assert dbus == [
- "/org/freedesktop/NetworkManager-org.freedesktop.NetworkManager.Connectivity"
- ]
+ assert network_manager_service.CheckConnectivity.calls == []
- dbus.clear()
await coresys.host.network.check_connectivity(force=True)
assert coresys.host.network.connectivity
- assert dbus == [
- "/org/freedesktop/NetworkManager-org.freedesktop.NetworkManager.CheckConnectivity"
- ]
+ assert network_manager_service.CheckConnectivity.calls == [tuple()]
@pytest.mark.parametrize("force", [True, False])
diff --git a/tests/host/test_control.py b/tests/host/test_control.py
index c9aeb98da..dde24955c 100644
--- a/tests/host/test_control.py
+++ b/tests/host/test_control.py
@@ -1,24 +1,22 @@
"""Test host control."""
-import asyncio
-
from supervisor.coresys import CoreSys
-from tests.common import fire_property_change_signal
+from tests.dbus_service_mocks.base import DBusServiceMock
+from tests.dbus_service_mocks.hostname import Hostname as HostnameService
-async def test_set_hostname(coresys: CoreSys, dbus: list[str]):
+async def test_set_hostname(
+ coresys: CoreSys,
+ all_dbus_services: dict[str, DBusServiceMock | dict[str, DBusServiceMock]],
+):
"""Test set hostname."""
- await coresys.dbus.hostname.connect(coresys.dbus.bus)
+ hostname_service: HostnameService = all_dbus_services["hostname"]
+ hostname_service.SetStaticHostname.calls.clear()
assert coresys.dbus.hostname.hostname == "homeassistant-n2"
- dbus.clear()
await coresys.host.control.set_hostname("test")
- assert dbus == [
- "/org/freedesktop/hostname1-org.freedesktop.hostname1.SetStaticHostname"
- ]
-
- fire_property_change_signal(coresys.dbus.hostname, {"StaticHostname": "test"})
- await asyncio.sleep(0)
+ assert hostname_service.SetStaticHostname.calls == [("test", False)]
+ await hostname_service.ping()
assert coresys.dbus.hostname.hostname == "test"
diff --git a/tests/host/test_manager.py b/tests/host/test_manager.py
index 679092ef8..4b8784739 100644
--- a/tests/host/test_manager.py
+++ b/tests/host/test_manager.py
@@ -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()]
diff --git a/tests/host/test_network.py b/tests/host/test_network.py
index 2adfd68e9..525705c15 100644
--- a/tests/host/test_network.py
+++ b/tests/host/test_network.py
@@ -1,26 +1,55 @@
"""Test network manager."""
import asyncio
from ipaddress import IPv4Address, IPv6Address
-from unittest.mock import Mock, PropertyMock, patch
+from unittest.mock import patch
-from dbus_fast.aio.proxy_object import ProxyInterface
+from dbus_fast import Variant
import pytest
from supervisor.const import CoreState
from supervisor.coresys import CoreSys
-from supervisor.dbus.const import ConnectionStateFlags, InterfaceMethod
-from supervisor.exceptions import DBusFatalError, HostNotSupportedError
+from supervisor.dbus.const import InterfaceMethod
+from supervisor.exceptions import HostNotSupportedError
from supervisor.homeassistant.const import WSEvent, WSType
-from supervisor.host.const import InterfaceType, WifiMode
-from supervisor.host.network import Interface, IpConfig
-from supervisor.utils.dbus import DBus
+from supervisor.host.const import WifiMode
-from tests.common import fire_property_change_signal
+from tests.dbus_service_mocks.base import DBusServiceMock
+from tests.dbus_service_mocks.network_active_connection import (
+ ActiveConnection as ActiveConnectionService,
+)
+from tests.dbus_service_mocks.network_connection_settings import (
+ SETTINGS_FIXTURE,
+ ConnectionSettings as ConnectionSettingsService,
+)
+from tests.dbus_service_mocks.network_device_wireless import (
+ DeviceWireless as DeviceWirelessService,
+)
+from tests.dbus_service_mocks.network_manager import (
+ NetworkManager as NetworkManagerService,
+)
-async def test_load(coresys: CoreSys, dbus: list[str]):
+@pytest.fixture(name="active_connection_service")
+async def fixture_active_connection_service(
+ network_manager_services: dict[str, DBusServiceMock | dict[str, DBusServiceMock]]
+) -> ActiveConnectionService:
+ """Return mock active connection service."""
+ yield network_manager_services["network_active_connection"]
+
+
+@pytest.fixture(name="wireless_service")
+async def fixture_wireless_service(
+ network_manager_services: dict[str, DBusServiceMock | dict[str, DBusServiceMock]]
+) -> DeviceWirelessService:
+ """Return mock device wireless service."""
+ yield network_manager_services["network_device_wireless"]
+
+
+async def test_load(coresys: CoreSys, network_manager_service: NetworkManagerService):
"""Test network manager load."""
- dbus.clear()
+ network_manager_service.ActivateConnection.calls.clear()
+ network_manager_service.CheckConnectivity.calls.clear()
+
await coresys.host.network.load()
assert coresys.host.network.connectivity is True
@@ -42,71 +71,60 @@ async def test_load(coresys: CoreSys, dbus: list[str]):
assert coresys.host.network.interfaces[1].name == "wlan0"
assert coresys.host.network.interfaces[1].enabled is False
- assert (
- "/org/freedesktop/NetworkManager-org.freedesktop.NetworkManager.ActivateConnection"
- in dbus
- )
- assert (
- "/org/freedesktop/NetworkManager-org.freedesktop.NetworkManager.Connectivity"
- in dbus
- )
- assert (
- "/org/freedesktop/NetworkManager-org.freedesktop.NetworkManager.CheckConnectivity"
- not in dbus
- )
+ assert network_manager_service.ActivateConnection.calls == [
+ (
+ "/org/freedesktop/NetworkManager/Settings/1",
+ "/org/freedesktop/NetworkManager/Devices/1",
+ "/",
+ )
+ ]
+ assert network_manager_service.CheckConnectivity.calls == []
-async def test_load_with_disabled_methods(coresys: CoreSys):
+async def test_load_with_disabled_methods(
+ coresys: CoreSys,
+ network_manager_service: NetworkManagerService,
+ connection_settings_service: ConnectionSettingsService,
+):
"""Test load does not disable methods of interfaces."""
- with patch(
- "supervisor.host.network.Interface.from_dbus_interface",
- return_value=Interface(
- "eth0",
- True,
- False,
- False,
- InterfaceType.ETHERNET,
- IpConfig(InterfaceMethod.DISABLED, [], None, [], False),
- IpConfig(InterfaceMethod.DISABLED, [], None, [], False),
- None,
- None,
- ),
- ), patch.object(
- coresys.host.sys_dbus.network,
- "activate_connection",
- new=Mock(wraps=coresys.host.sys_dbus.network.activate_connection),
- ) as activate_connection:
- await coresys.host.network.load()
+ network_manager_service.ActivateConnection.calls.clear()
- activate_connection.assert_not_called()
+ disabled = {"method": Variant("s", "disabled")}
+ connection_settings_service.settings = SETTINGS_FIXTURE | {
+ "ipv4": disabled,
+ "ipv6": disabled,
+ }
+ await coresys.dbus.network.interfaces["eth0"].settings.reload()
+
+ await coresys.host.network.load()
+ assert network_manager_service.ActivateConnection.calls == []
-async def test_load_with_network_connection_issues(coresys: CoreSys, dbus: list[str]):
+async def test_load_with_network_connection_issues(
+ coresys: CoreSys,
+ network_manager_service: NetworkManagerService,
+ active_connection_service: ActiveConnectionService,
+):
"""Test load does not update interfaces with network connection issues."""
- with patch(
- "supervisor.dbus.network.connection.NetworkConnection.state_flags",
- new=PropertyMock(return_value={ConnectionStateFlags.IP6_READY}),
- ), patch(
- "supervisor.dbus.network.connection.NetworkConnection.ipv4",
- new=PropertyMock(return_value=None),
- ):
- dbus.clear()
- await coresys.host.network.load()
+ network_manager_service.ActivateConnection.calls.clear()
- assert (
- "/org/freedesktop/NetworkManager-org.freedesktop.NetworkManager.ActivateConnection"
- not in dbus
- )
+ active_connection_service.emit_properties_changed(
+ {"StateFlags": 0x10, "Ip4Config": "/"}
+ )
+ await active_connection_service.ping()
- assert len(coresys.host.network.interfaces) == 2
- assert coresys.host.network.interfaces[0].name == "eth0"
- assert coresys.host.network.interfaces[0].enabled is True
- assert coresys.host.network.interfaces[0].ipv4.method == InterfaceMethod.AUTO
- assert coresys.host.network.interfaces[0].ipv4.gateway is None
- assert coresys.host.network.interfaces[0].ipv6.method == InterfaceMethod.AUTO
- assert coresys.host.network.interfaces[0].ipv6.gateway == IPv6Address(
- "fe80::da58:d7ff:fe00:9c69"
- )
+ await coresys.host.network.load()
+
+ assert network_manager_service.ActivateConnection.calls == []
+ assert len(coresys.host.network.interfaces) == 2
+ assert coresys.host.network.interfaces[0].name == "eth0"
+ assert coresys.host.network.interfaces[0].enabled is True
+ assert coresys.host.network.interfaces[0].ipv4.method == InterfaceMethod.AUTO
+ assert coresys.host.network.interfaces[0].ipv4.gateway is None
+ assert coresys.host.network.interfaces[0].ipv6.method == InterfaceMethod.AUTO
+ assert coresys.host.network.interfaces[0].ipv6.gateway == IPv6Address(
+ "fe80::da58:d7ff:fe00:9c69"
+ )
async def test_scan_wifi(coresys: CoreSys):
@@ -124,54 +142,36 @@ async def test_scan_wifi(coresys: CoreSys):
assert aps[1].mode == WifiMode.INFRASTRUCTURE
-async def test_scan_wifi_with_failures(coresys: CoreSys, caplog):
+async def test_scan_wifi_with_failures(
+ coresys: CoreSys, wireless_service: DeviceWirelessService, caplog
+):
"""Test scanning wifi with accesspoint processing failures."""
- # pylint: disable=protected-access
- init_proxy = DBus._init_proxy
- call_dbus = DBus.call_dbus
+ wireless_service.all_access_points = [
+ "/org/freedesktop/NetworkManager/AccessPoint/43099",
+ "/org/freedesktop/NetworkManager/AccessPoint/43100",
+ "/org/freedesktop/NetworkManager/AccessPoint/99999",
+ ]
- async def mock_init_proxy(self):
- if self.object_path != "/org/freedesktop/NetworkManager/AccessPoint/99999":
- return await init_proxy(self)
-
- raise DBusFatalError("Fail")
-
- async def mock_call_dbus(
- proxy_interface: ProxyInterface,
- method: str,
- *args,
- unpack_variants: bool = True,
- ):
- if method == "call_get_all_access_points":
- return [
- "/org/freedesktop/NetworkManager/AccessPoint/43099",
- "/org/freedesktop/NetworkManager/AccessPoint/43100",
- "/org/freedesktop/NetworkManager/AccessPoint/99999",
- ]
-
- return await call_dbus(
- proxy_interface, method, *args, unpack_variants=unpack_variants
- )
-
- with patch("supervisor.host.network.asyncio.sleep"), patch(
- "supervisor.utils.dbus.DBus.call_dbus", new=mock_call_dbus
- ), patch.object(DBus, "_init_proxy", new=mock_init_proxy):
+ with patch("supervisor.host.network.asyncio.sleep"):
aps = await coresys.host.network.scan_wifi(coresys.host.network.get("wlan0"))
- assert len(aps) == 2
+ assert len(aps) == 2
assert "Can't process an AP" in caplog.text
-async def test_host_connectivity_changed(coresys: CoreSys):
+async def test_host_connectivity_changed(
+ coresys: CoreSys, network_manager_service: NetworkManagerService
+):
"""Test host connectivity changed."""
# pylint: disable=protected-access
client = coresys.homeassistant.websocket._client
- await coresys.host.network.load()
+ # pylint: enable=protected-access
+ await coresys.host.load()
assert coresys.host.network.connectivity is True
- fire_property_change_signal(coresys.dbus.network, {"Connectivity": 1})
- await asyncio.sleep(0)
+ network_manager_service.emit_properties_changed({"Connectivity": 1})
+ await network_manager_service.ping()
assert coresys.host.network.connectivity is False
await asyncio.sleep(0)
client.async_send_command.assert_called_once_with(
@@ -186,9 +186,9 @@ async def test_host_connectivity_changed(coresys: CoreSys):
)
client.async_send_command.reset_mock()
- fire_property_change_signal(coresys.dbus.network, {}, ["Connectivity"])
- await asyncio.sleep(0)
- await asyncio.sleep(0)
+ network_manager_service.emit_properties_changed({}, ["Connectivity"])
+ await network_manager_service.ping()
+ await network_manager_service.ping()
assert coresys.host.network.connectivity is True
await asyncio.sleep(0)
client.async_send_command.assert_called_once_with(
@@ -203,10 +203,14 @@ async def test_host_connectivity_changed(coresys: CoreSys):
)
-async def test_host_connectivity_disabled(coresys: CoreSys):
+async def test_host_connectivity_disabled(
+ coresys: CoreSys, network_manager_service: NetworkManagerService
+):
"""Test host connectivity check disabled."""
# pylint: disable=protected-access
client = coresys.homeassistant.websocket._client
+ # pylint: enable=protected-access
+
await coresys.host.network.load()
coresys.core.state = CoreState.RUNNING
@@ -216,13 +220,11 @@ async def test_host_connectivity_disabled(coresys: CoreSys):
assert "connectivity_check" not in coresys.resolution.unsupported
assert coresys.host.network.connectivity is True
- fire_property_change_signal(
- coresys.dbus.network, {"ConnectivityCheckEnabled": False}
- )
- await asyncio.sleep(0)
+ network_manager_service.emit_properties_changed({"ConnectivityCheckEnabled": False})
+ await network_manager_service.ping()
assert coresys.host.network.connectivity is None
await asyncio.sleep(0)
- client.async_send_command.assert_called_once_with(
+ client.async_send_command.assert_any_call(
{
"type": WSType.SUPERVISOR_EVENT,
"data": {
@@ -235,12 +237,12 @@ async def test_host_connectivity_disabled(coresys: CoreSys):
assert "connectivity_check" in coresys.resolution.unsupported
client.async_send_command.reset_mock()
- fire_property_change_signal(coresys.dbus.network, {}, ["ConnectivityCheckEnabled"])
- await asyncio.sleep(0)
- await asyncio.sleep(0)
+ network_manager_service.emit_properties_changed({"ConnectivityCheckEnabled": True})
+ await network_manager_service.ping()
+ await network_manager_service.ping()
assert coresys.host.network.connectivity is True
await asyncio.sleep(0)
- client.async_send_command.assert_called_with(
+ client.async_send_command.assert_any_call(
{
"type": WSType.SUPERVISOR_EVENT,
"data": {
diff --git a/tests/resolution/fixup/test_system_execute_reboot.py b/tests/resolution/fixup/test_system_execute_reboot.py
index cb6eff606..2751cf355 100644
--- a/tests/resolution/fixup/test_system_execute_reboot.py
+++ b/tests/resolution/fixup/test_system_execute_reboot.py
@@ -1,19 +1,21 @@
"""Test fixup system reboot."""
-from unittest.mock import PropertyMock, patch
-
from supervisor.coresys import CoreSys
-from supervisor.host.const import HostFeature
-from supervisor.host.manager import HostManager
from supervisor.resolution.const import ContextType, IssueType, SuggestionType
from supervisor.resolution.data import Issue, Suggestion
from supervisor.resolution.fixups.system_execute_reboot import FixupSystemExecuteReboot
+from tests.dbus_service_mocks.base import DBusServiceMock
+from tests.dbus_service_mocks.logind import Logind as LogindService
-async def test_fixup(coresys: CoreSys, dbus: list[str]):
+
+async def test_fixup(
+ coresys: CoreSys,
+ all_dbus_services: dict[str, DBusServiceMock | dict[str, DBusServiceMock]],
+):
"""Test fixup."""
- await coresys.dbus.logind.connect(coresys.dbus.bus)
- dbus.clear()
+ logind_service: LogindService = all_dbus_services["logind"]
+ logind_service.Reboot.calls.clear()
system_execute_reboot = FixupSystemExecuteReboot(coresys)
assert system_execute_reboot.auto is False
@@ -23,11 +25,8 @@ async def test_fixup(coresys: CoreSys, dbus: list[str]):
)
coresys.resolution.issues = Issue(IssueType.REBOOT_REQUIRED, ContextType.SYSTEM)
- with patch.object(
- HostManager, "features", new=PropertyMock(return_value=[HostFeature.REBOOT])
- ):
- await system_execute_reboot()
+ await system_execute_reboot()
- assert dbus == ["/org/freedesktop/login1-org.freedesktop.login1.Manager.Reboot"]
+ assert logind_service.Reboot.calls == [(False,)]
assert len(coresys.resolution.suggestions) == 0
assert len(coresys.resolution.issues) == 0
diff --git a/tests/test_coresys.py b/tests/test_coresys.py
index 7e76a4330..70e12add9 100644
--- a/tests/test_coresys.py
+++ b/tests/test_coresys.py
@@ -5,17 +5,20 @@ from datetime import timedelta
from aiohttp.hdrs import USER_AGENT
from supervisor.coresys import CoreSys
+from supervisor.dbus.timedate import TimeDate
from supervisor.utils.dt import utcnow
async def test_timezone(run_dir, coresys: CoreSys):
"""Test write corestate to /run/supervisor."""
+ # pylint: disable=protected-access
+ coresys.host.sys_dbus._timedate = TimeDate()
+ # pylint: enable=protected-access
assert coresys.timezone == "UTC"
assert coresys.config.timezone is None
await coresys.dbus.timedate.connect(coresys.dbus.bus)
- await coresys.dbus.timedate.update()
assert coresys.timezone == "Etc/UTC"
coresys.config.timezone = "Europe/Zurich"
diff --git a/tests/utils/test_dbus.py b/tests/utils/test_dbus.py
index a857871fc..3ada14cce 100644
--- a/tests/utils/test_dbus.py
+++ b/tests/utils/test_dbus.py
@@ -1,42 +1,76 @@
"""Test dbus utility."""
-from unittest.mock import AsyncMock, Mock
+from unittest.mock import AsyncMock, Mock, patch
from dbus_fast.aio.message_bus import MessageBus
+from dbus_fast.service import method
import pytest
from supervisor.dbus.const import DBUS_OBJECT_BASE
from supervisor.exceptions import DBusFatalError, DBusInterfaceError
from supervisor.utils.dbus import DBus
+from tests.common import load_fixture
+from tests.dbus_service_mocks.base import DBusServiceMock
-async def test_missing_properties_interface(dbus_bus: MessageBus, dbus: list[str]):
+
+class TestInterface(DBusServiceMock):
+ """Test interface."""
+
+ interface = "service.test.TestInterface"
+ object_path = DBUS_OBJECT_BASE
+
+ @method(name="Test")
+ def test(self, _: "b") -> None: # noqa: F821
+ """Do Test method."""
+
+
+@pytest.fixture(name="test_service")
+async def fixture_test_service(dbus_session_bus: MessageBus) -> TestInterface:
+ """Export test interface on dbus."""
+ await dbus_session_bus.request_name("service.test.TestInterface")
+ service = TestInterface()
+ service.export(dbus_session_bus)
+ yield service
+
+
+async def test_missing_properties_interface(dbus_session_bus: MessageBus):
"""Test introspection missing properties interface."""
- service = await DBus.connect(
- dbus_bus, "test.no.properties.interface", DBUS_OBJECT_BASE
- )
+
+ async def mock_introspect(*args, **kwargs):
+ """Return introspection without properties."""
+ return load_fixture("test_no_properties_interface.xml")
+
+ with patch.object(MessageBus, "introspect", new=mock_introspect):
+ service = await DBus.connect(
+ dbus_session_bus, "test.no.properties.interface", DBUS_OBJECT_BASE
+ )
+
with pytest.raises(DBusInterfaceError):
await service.get_properties("test.no.properties.interface")
@pytest.mark.parametrize("err", [BrokenPipeError(), EOFError(), OSError()])
async def test_internal_dbus_errors(
- dbus_minimal: MessageBus,
+ test_service: TestInterface,
+ dbus_session_bus: MessageBus,
capture_exception: Mock,
err: Exception,
):
"""Test internal dbus library errors become dbus error."""
- rauc = await DBus.connect(dbus_minimal, "de.pengutronix.rauc", DBUS_OBJECT_BASE)
+ test_obj = await DBus.connect(
+ dbus_session_bus, "service.test.TestInterface", DBUS_OBJECT_BASE
+ )
setattr(
# pylint: disable=protected-access
- rauc._proxies["de.pengutronix.rauc.Installer"],
+ test_obj._proxies["service.test.TestInterface"],
# pylint: enable=protected-access
- "call_mark",
- proxy_mock := AsyncMock().call_mark,
+ "call_test",
+ proxy_mock := AsyncMock().call_test,
)
proxy_mock.side_effect = err
with pytest.raises(DBusFatalError):
- await rauc.Installer.call_mark("good", "booted")
+ await test_obj.call_test(True)
capture_exception.assert_called_once_with(err)