From a6caccd845e741fcc2e03cfefc606be67a62f5cf Mon Sep 17 00:00:00 2001 From: Mike Degatano Date: Tue, 21 Mar 2023 02:30:31 -0400 Subject: [PATCH] Use session dbus mocks for all tests (#4198) * Use session dbus mocks for all tests * func instead of fn for pylint --- tests/api/test_dns.py | 42 +- tests/api/test_host.py | 12 +- tests/api/test_network.py | 92 ++- tests/api/test_os.py | 74 +- tests/api/test_root.py | 7 +- tests/api/test_supervisor.py | 24 +- tests/common.py | 60 +- tests/conftest.py | 311 ++------ tests/dbus/agent/boards/test_board.py | 10 +- tests/dbus/agent/boards/test_yellow.py | 6 +- tests/dbus/agent/conftest.py | 24 - tests/dbus/agent/test_apparmor.py | 6 +- tests/dbus/agent/test_cgroup.py | 5 +- tests/dbus/agent/test_datadisk.py | 6 +- tests/dbus/agent/test_system.py | 5 +- tests/dbus/network/setting/test_init.py | 2 + tests/dbus/network/test_network_manager.py | 1 + tests/dbus/network/test_settings.py | 2 + tests/dbus/test_hostname.py | 1 + tests/dbus/test_interface.py | 227 +++--- tests/dbus/test_login.py | 2 + tests/dbus/test_systemd.py | 6 + tests/dbus/test_timedate.py | 2 + tests/dbus/udisks2/test_block.py | 1 + tests/dbus/udisks2/test_drive.py | 1 + tests/dbus/udisks2/test_filesystem.py | 4 + tests/dbus/udisks2/test_manager.py | 1 + tests/dbus/udisks2/test_partition_table.py | 1 + .../{apparmor.py => agent_apparmor.py} | 0 .../{boards.py => agent_boards.py} | 0 ...pervised.py => agent_boards_supervised.py} | 0 ...oards_yellow.py => agent_boards_yellow.py} | 0 .../{cgroup.py => agent_cgroup.py} | 0 .../{datadisk.py => agent_datadisk.py} | 0 .../{system.py => agent_system.py} | 0 tests/dbus_service_mocks/base.py | 8 +- .../network_active_connection.py | 2 +- .../network_connection_settings.py | 6 +- .../network_device_wireless.py | 9 +- tests/dbus_service_mocks/network_manager.py | 5 +- tests/dbus_service_mocks/os_agent.py | 7 +- tests/dbus_service_mocks/systemd.py | 62 +- tests/fixtures/de_pengutronix_rauc.xml | 74 -- .../de_pengutronix_rauc_Installer.json | 8 - ...gutronix_rauc_Installer_GetSlotStatus.json | 108 --- .../de_pengutronix_rauc_Installer_Mark.json | 1 - tests/fixtures/io_hass_os.json | 1 - tests/fixtures/io_hass_os.xml | 51 -- .../io_hass_os_AppArmor-LoadProfile.json | 1 - .../io_hass_os_AppArmor-UnloadProfile.json | 1 - tests/fixtures/io_hass_os_AppArmor.json | 1 - tests/fixtures/io_hass_os_AppArmor.xml | 63 -- tests/fixtures/io_hass_os_Boards.json | 3 - tests/fixtures/io_hass_os_Boards.xml | 35 - .../io_hass_os_Boards_Supervised.json | 1 - .../fixtures/io_hass_os_Boards_Supervised.xml | 31 - tests/fixtures/io_hass_os_Boards_Yellow.json | 5 - tests/fixtures/io_hass_os_Boards_Yellow.xml | 41 - .../io_hass_os_CGroup-AddDevicesAllowed.json | 1 - tests/fixtures/io_hass_os_CGroup.xml | 51 -- .../io_hass_os_DataDisk-ChangeDevice.json | 1 - .../io_hass_os_DataDisk-ReloadDevice.json | 1 - tests/fixtures/io_hass_os_DataDisk.json | 1 - tests/fixtures/io_hass_os_DataDisk.xml | 57 -- .../io_hass_os_System-ScheduleWipeDevice.json | 1 - tests/fixtures/io_hass_os_System.xml | 51 -- ...top_NetworkManager-ActivateConnection.json | 1 - ...tworkManager-AddAndActivateConnection.json | 1 - ...ktop_NetworkManager-CheckConnectivity.json | 1 - .../org_freedesktop_NetworkManager.json | 33 - .../org_freedesktop_NetworkManager.xml | 162 ---- ...ktop_NetworkManager_AccessPoint_43099.json | 12 - ...ktop_NetworkManager_AccessPoint_43100.json | 12 - ...eedesktop_NetworkManager_AccessPoint_~.xml | 52 -- ...ktop_NetworkManager_ActiveConnection_~.xml | 62 -- ...op_NetworkManager_Connection_Active_1.json | 18 - ...g_freedesktop_NetworkManager_Device_1.json | 31 - ...g_freedesktop_NetworkManager_Device_3.json | 30 - ..._freedesktop_NetworkManager_Device_35.json | 34 - ...ktop_NetworkManager_Device_Wireless_3.json | 20 - ...kManager_Devices_3-GetAllAccessPoints.json | 4 - ...g_freedesktop_NetworkManager_Devices_~.xml | 120 --- ...freedesktop_NetworkManager_DnsManager.json | 13 - ..._freedesktop_NetworkManager_DnsManager.xml | 42 - ...reedesktop_NetworkManager_IP4Config_1.json | 22 - ...freedesktop_NetworkManager_IP4Config_~.xml | 55 -- ...reedesktop_NetworkManager_IP6Config_1.json | 115 --- ...freedesktop_NetworkManager_IP6Config_~.xml | 52 -- ...NetworkManager_Settings-AddConnection.json | 1 - ...orkManager_Settings-ReloadConnections.json | 1 - ...rg_freedesktop_NetworkManager_Settings.xml | 85 -- ...NetworkManager_Settings_1-GetSettings.json | 39 - ..._freedesktop_NetworkManager_Settings_~.xml | 69 -- .../org_freedesktop_UDisks2_Block_loop0.json | 27 - ...org_freedesktop_UDisks2_Block_mmcblk1.json | 33 - ...g_freedesktop_UDisks2_Block_mmcblk1p1.json | 37 - ...g_freedesktop_UDisks2_Block_mmcblk1p2.json | 34 - ...g_freedesktop_UDisks2_Block_mmcblk1p3.json | 36 - .../org_freedesktop_UDisks2_Block_sda.json | 39 - .../org_freedesktop_UDisks2_Block_sda1.json | 37 - .../org_freedesktop_UDisks2_Block_sdb.json | 33 - .../org_freedesktop_UDisks2_Block_sdb1.json | 34 - .../org_freedesktop_UDisks2_Block_zram1.json | 27 - ...sktop_UDisks2_Drive_BJTD4R_0x97cde291.json | 31 - ...ks2_Drive_Generic_Flash_Disk_61BCDDB6.json | 31 - ...2_Drive_SSK_SSK_Storage_DF56419883D56.json | 31 - ...edesktop_UDisks2_Filesystem_mmcblk1p1.json | 1 - ...edesktop_UDisks2_Filesystem_mmcblk1p3.json | 22 - ...g_freedesktop_UDisks2_Filesystem_sda1.json | 1 - ...g_freedesktop_UDisks2_Filesystem_sdb1.json | 7 - ..._freedesktop_UDisks2_Filesystem_zram1.json | 1 - ...sktop_UDisks2_Manager-GetBlockDevices.json | 12 - ...desktop_UDisks2_Manager-ResolveDevice.json | 1 - .../org_freedesktop_UDisks2_Manager.json | 6 - .../org_freedesktop_UDisks2_Manager.xml | 89 --- ...esktop_UDisks2_PartitionTable_mmcblk1.json | 8 - ...reedesktop_UDisks2_PartitionTable_sda.json | 4 - ...reedesktop_UDisks2_PartitionTable_sdb.json | 4 - ...reedesktop_UDisks2_block_devices_loop0.xml | 117 --- ...edesktop_UDisks2_block_devices_mmcblk1.xml | 127 --- ...esktop_UDisks2_block_devices_mmcblk1p1.xml | 166 ---- ...esktop_UDisks2_block_devices_mmcblk1p2.xml | 136 ---- ...esktop_UDisks2_block_devices_mmcblk1p3.xml | 166 ---- ...ks2_block_devices_sda-CreatePartition.json | 1 - ..._freedesktop_UDisks2_block_devices_sda.xml | 127 --- ...ktop_UDisks2_block_devices_sda1-Check.json | 1 - ...ktop_UDisks2_block_devices_sda1-Mount.json | 1 - ...top_UDisks2_block_devices_sda1-Repair.json | 1 - ...freedesktop_UDisks2_block_devices_sda1.xml | 166 ---- ..._freedesktop_UDisks2_block_devices_sdb.xml | 127 --- ...freedesktop_UDisks2_block_devices_sdb1.xml | 166 ---- ...reedesktop_UDisks2_block_devices_zram1.xml | 135 ---- ...sktop_UDisks2_drives_BJTD4R_0x97cde291.xml | 78 -- ...ks2_drives_Generic_Flash_Disk_61BCDDB6.xml | 78 -- ...2_drives_SSK_SSK_Storage_DF56419883D56.xml | 78 -- tests/fixtures/org_freedesktop_hostname1.json | 15 - tests/fixtures/org_freedesktop_hostname1.xml | 102 --- tests/fixtures/org_freedesktop_login1.xml | 381 --------- tests/fixtures/org_freedesktop_resolve1.xml | 194 ----- .../org_freedesktop_resolve1_Manager.json | 39 - .../org_freedesktop_systemd1-ListUnits.json | 50 -- ...edesktop_systemd1-ReloadOrRestartUnit.json | 1 - .../org_freedesktop_systemd1-RestartUnit.json | 1 - .../org_freedesktop_systemd1-StartUnit.json | 1 - .../org_freedesktop_systemd1-StopUnit.json | 1 - tests/fixtures/org_freedesktop_systemd1.xml | 726 ------------------ .../org_freedesktop_systemd1_Manager.json | 127 --- .../org_freedesktop_systemd1_properties.json | 138 ---- tests/fixtures/org_freedesktop_timedate1.json | 9 - tests/fixtures/org_freedesktop_timedate1.xml | 77 -- tests/host/test_connectivity.py | 34 +- tests/host/test_control.py | 22 +- tests/host/test_manager.py | 58 +- tests/host/test_network.py | 230 +++--- .../fixup/test_system_execute_reboot.py | 23 +- tests/test_coresys.py | 5 +- tests/utils/test_dbus.py | 56 +- 157 files changed, 685 insertions(+), 6572 deletions(-) delete mode 100644 tests/dbus/agent/conftest.py rename tests/dbus_service_mocks/{apparmor.py => agent_apparmor.py} (100%) rename tests/dbus_service_mocks/{boards.py => agent_boards.py} (100%) rename tests/dbus_service_mocks/{boards_supervised.py => agent_boards_supervised.py} (100%) rename tests/dbus_service_mocks/{boards_yellow.py => agent_boards_yellow.py} (100%) rename tests/dbus_service_mocks/{cgroup.py => agent_cgroup.py} (100%) rename tests/dbus_service_mocks/{datadisk.py => agent_datadisk.py} (100%) rename tests/dbus_service_mocks/{system.py => agent_system.py} (100%) delete mode 100644 tests/fixtures/de_pengutronix_rauc.xml delete mode 100644 tests/fixtures/de_pengutronix_rauc_Installer.json delete mode 100644 tests/fixtures/de_pengutronix_rauc_Installer_GetSlotStatus.json delete mode 100644 tests/fixtures/de_pengutronix_rauc_Installer_Mark.json delete mode 100644 tests/fixtures/io_hass_os.json delete mode 100644 tests/fixtures/io_hass_os.xml delete mode 100644 tests/fixtures/io_hass_os_AppArmor-LoadProfile.json delete mode 100644 tests/fixtures/io_hass_os_AppArmor-UnloadProfile.json delete mode 100644 tests/fixtures/io_hass_os_AppArmor.json delete mode 100644 tests/fixtures/io_hass_os_AppArmor.xml delete mode 100644 tests/fixtures/io_hass_os_Boards.json delete mode 100644 tests/fixtures/io_hass_os_Boards.xml delete mode 100644 tests/fixtures/io_hass_os_Boards_Supervised.json delete mode 100644 tests/fixtures/io_hass_os_Boards_Supervised.xml delete mode 100644 tests/fixtures/io_hass_os_Boards_Yellow.json delete mode 100644 tests/fixtures/io_hass_os_Boards_Yellow.xml delete mode 100644 tests/fixtures/io_hass_os_CGroup-AddDevicesAllowed.json delete mode 100644 tests/fixtures/io_hass_os_CGroup.xml delete mode 100644 tests/fixtures/io_hass_os_DataDisk-ChangeDevice.json delete mode 100644 tests/fixtures/io_hass_os_DataDisk-ReloadDevice.json delete mode 100644 tests/fixtures/io_hass_os_DataDisk.json delete mode 100644 tests/fixtures/io_hass_os_DataDisk.xml delete mode 100644 tests/fixtures/io_hass_os_System-ScheduleWipeDevice.json delete mode 100644 tests/fixtures/io_hass_os_System.xml delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager-ActivateConnection.json delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager-AddAndActivateConnection.json delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager-CheckConnectivity.json delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager.json delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager.xml delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_AccessPoint_43099.json delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_AccessPoint_43100.json delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_AccessPoint_~.xml delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_ActiveConnection_~.xml delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_Connection_Active_1.json delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_Device_1.json delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_Device_3.json delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_Device_35.json delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_Device_Wireless_3.json delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_Devices_3-GetAllAccessPoints.json delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_Devices_~.xml delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_DnsManager.json delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_DnsManager.xml delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_IP4Config_1.json delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_IP4Config_~.xml delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_IP6Config_1.json delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_IP6Config_~.xml delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_Settings-AddConnection.json delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_Settings-ReloadConnections.json delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_Settings.xml delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_Settings_1-GetSettings.json delete mode 100644 tests/fixtures/org_freedesktop_NetworkManager_Settings_~.xml delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Block_loop0.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Block_mmcblk1.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Block_mmcblk1p1.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Block_mmcblk1p2.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Block_mmcblk1p3.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Block_sda.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Block_sda1.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Block_sdb.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Block_sdb1.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Block_zram1.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Drive_BJTD4R_0x97cde291.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Drive_Generic_Flash_Disk_61BCDDB6.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Drive_SSK_SSK_Storage_DF56419883D56.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Filesystem_mmcblk1p1.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Filesystem_mmcblk1p3.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Filesystem_sda1.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Filesystem_sdb1.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Filesystem_zram1.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Manager-GetBlockDevices.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Manager-ResolveDevice.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Manager.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_Manager.xml delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_PartitionTable_mmcblk1.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_PartitionTable_sda.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_PartitionTable_sdb.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_block_devices_loop0.xml delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_block_devices_mmcblk1.xml delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_block_devices_mmcblk1p1.xml delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_block_devices_mmcblk1p2.xml delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_block_devices_mmcblk1p3.xml delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_block_devices_sda-CreatePartition.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_block_devices_sda.xml delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_block_devices_sda1-Check.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_block_devices_sda1-Mount.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_block_devices_sda1-Repair.json delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_block_devices_sda1.xml delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_block_devices_sdb.xml delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_block_devices_sdb1.xml delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_block_devices_zram1.xml delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_drives_BJTD4R_0x97cde291.xml delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_drives_Generic_Flash_Disk_61BCDDB6.xml delete mode 100644 tests/fixtures/org_freedesktop_UDisks2_drives_SSK_SSK_Storage_DF56419883D56.xml delete mode 100644 tests/fixtures/org_freedesktop_hostname1.json delete mode 100644 tests/fixtures/org_freedesktop_hostname1.xml delete mode 100644 tests/fixtures/org_freedesktop_login1.xml delete mode 100644 tests/fixtures/org_freedesktop_resolve1.xml delete mode 100644 tests/fixtures/org_freedesktop_resolve1_Manager.json delete mode 100644 tests/fixtures/org_freedesktop_systemd1-ListUnits.json delete mode 100644 tests/fixtures/org_freedesktop_systemd1-ReloadOrRestartUnit.json delete mode 100644 tests/fixtures/org_freedesktop_systemd1-RestartUnit.json delete mode 100644 tests/fixtures/org_freedesktop_systemd1-StartUnit.json delete mode 100644 tests/fixtures/org_freedesktop_systemd1-StopUnit.json delete mode 100644 tests/fixtures/org_freedesktop_systemd1.xml delete mode 100644 tests/fixtures/org_freedesktop_systemd1_Manager.json delete mode 100644 tests/fixtures/org_freedesktop_systemd1_properties.json delete mode 100644 tests/fixtures/org_freedesktop_timedate1.json delete mode 100644 tests/fixtures/org_freedesktop_timedate1.xml 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)