diff --git a/tests/components/homeassistant_hardware/test_util.py b/tests/components/homeassistant_hardware/test_util.py index 5d824bfbbca..cdb506abf1e 100644 --- a/tests/components/homeassistant_hardware/test_util.py +++ b/tests/components/homeassistant_hardware/test_util.py @@ -1,17 +1,13 @@ """Test hardware utilities.""" -import sys from unittest.mock import AsyncMock, patch -import pytest - from homeassistant.components.hassio import AddonError, AddonInfo, AddonState from homeassistant.components.homeassistant_hardware.util import ( ApplicationType, FirmwareInfo, OwningAddon, OwningIntegration, - get_zha_firmware_info, guess_firmware_info, ) from homeassistant.config_entries import ConfigEntryState @@ -108,11 +104,11 @@ async def test_guess_firmware_info_integrations(hass: HomeAssistant) -> None: with ( patch( - "homeassistant.components.homeassistant_hardware.util.get_zha_firmware_info", + "homeassistant.components.zha.homeassistant_hardware.get_firmware_info", return_value=zha_firmware_info, ), patch( - "homeassistant.components.homeassistant_hardware.util.get_otbr_firmware_info", + "homeassistant.components.otbr.homeassistant_hardware.get_firmware_info", side_effect=lambda _, config_entry: { otbr1: otbr_firmware_info1, otbr2: otbr_firmware_info2, @@ -238,97 +234,3 @@ async def test_firmware_info(hass: HomeAssistant) -> None: ) assert (await firmware_info2.is_running(hass)) is False - - -async def test_get_zha_firmware_info_normal(hass: HomeAssistant) -> None: - """Test `get_zha_firmware_info`.""" - - zha = MockConfigEntry( - domain="zha", - unique_id="some_unique_id", - data={ - "device": { - "path": "/dev/ttyUSB1", - "baudrate": 115200, - "flow_control": None, - }, - "radio_type": "ezsp", - }, - version=4, - ) - zha.add_to_hass(hass) - zha.mock_state(hass, ConfigEntryState.LOADED) - - # With ZHA running - with patch( - "homeassistant.components.zha.helpers.get_zha_gateway" - ) as mock_get_zha_gateway: - mock_get_zha_gateway.return_value.state.node_info.version = "1.2.3.4" - fw_info_running = await get_zha_firmware_info(hass, zha) - - assert fw_info_running == FirmwareInfo( - device="/dev/ttyUSB1", - firmware_type=ApplicationType.EZSP, - firmware_version="1.2.3.4", - source="zha", - owners=[OwningIntegration(config_entry_id=zha.entry_id)], - ) - assert await fw_info_running.is_running(hass) is True - - # With ZHA not running - zha.mock_state(hass, ConfigEntryState.NOT_LOADED) - fw_info_not_running = await get_zha_firmware_info(hass, zha) - - assert fw_info_not_running == FirmwareInfo( - device="/dev/ttyUSB1", - firmware_type=ApplicationType.EZSP, - firmware_version=None, - source="zha", - owners=[OwningIntegration(config_entry_id=zha.entry_id)], - ) - assert await fw_info_not_running.is_running(hass) is False - - -@pytest.mark.parametrize( - "data", - [ - # Missing data - {}, - # Bad radio type - {"device": {"path": "/dev/ttyUSB1"}, "radio_type": "znp"}, - ], -) -async def test_get_zha_firmware_info_errors( - hass: HomeAssistant, data: dict[str, str | int | None] -) -> None: - """Test `get_zha_firmware_info` with config entry data format errors.""" - zha = MockConfigEntry( - domain="zha", - unique_id="some_unique_id", - data=data, - version=4, - ) - zha.add_to_hass(hass) - - assert (await get_zha_firmware_info(hass, zha)) is None - - -async def test_get_zha_firmware_info_stale(hass: HomeAssistant) -> None: - """Test `get_zha_firmware_info` with a stale config entry.""" - zha = MockConfigEntry( - domain="zha", - unique_id="some_unique_id", - data={ - "device": { - "path": "/dev/ttyUSB1", - "baudrate": 115200, - "flow_control": None, - }, - "radio_type": "ezsp", - }, - version=4, - ) - zha.add_to_hass(hass) - - with patch.dict(sys.modules, {"homeassistant.components.zha.helpers": None}): - assert (await get_zha_firmware_info(hass, zha)) is None diff --git a/tests/components/zha/test_homeassistant_hardware.py b/tests/components/zha/test_homeassistant_hardware.py new file mode 100644 index 00000000000..86bb741b538 --- /dev/null +++ b/tests/components/zha/test_homeassistant_hardware.py @@ -0,0 +1,89 @@ +"""Test Home Assistant Hardware platform for ZHA.""" + +from unittest.mock import patch + +import pytest + +from homeassistant.components.homeassistant_hardware.util import ( + ApplicationType, + FirmwareInfo, + OwningIntegration, +) +from homeassistant.components.zha.homeassistant_hardware import get_firmware_info +from homeassistant.config_entries import ConfigEntryState +from homeassistant.core import HomeAssistant + +from tests.common import MockConfigEntry + + +async def test_get_firmware_info_normal(hass: HomeAssistant) -> None: + """Test `get_firmware_info`.""" + + zha = MockConfigEntry( + domain="zha", + unique_id="some_unique_id", + data={ + "device": { + "path": "/dev/ttyUSB1", + "baudrate": 115200, + "flow_control": None, + }, + "radio_type": "ezsp", + }, + version=4, + ) + zha.add_to_hass(hass) + zha.mock_state(hass, ConfigEntryState.LOADED) + + # With ZHA running + with patch( + "homeassistant.components.zha.homeassistant_hardware.get_zha_gateway" + ) as mock_get_zha_gateway: + mock_get_zha_gateway.return_value.state.node_info.version = "1.2.3.4" + fw_info_running = await get_firmware_info(hass, zha) + + assert fw_info_running == FirmwareInfo( + device="/dev/ttyUSB1", + firmware_type=ApplicationType.EZSP, + firmware_version="1.2.3.4", + source="zha", + owners=[OwningIntegration(config_entry_id=zha.entry_id)], + ) + assert await fw_info_running.is_running(hass) is True + + # With ZHA not running + zha.mock_state(hass, ConfigEntryState.NOT_LOADED) + fw_info_not_running = await get_firmware_info(hass, zha) + + assert fw_info_not_running == FirmwareInfo( + device="/dev/ttyUSB1", + firmware_type=ApplicationType.EZSP, + firmware_version=None, + source="zha", + owners=[OwningIntegration(config_entry_id=zha.entry_id)], + ) + assert await fw_info_not_running.is_running(hass) is False + + +@pytest.mark.parametrize( + "data", + [ + # Missing data + {}, + # Bad radio type + {"device": {"path": "/dev/ttyUSB1"}, "radio_type": "znp"}, + ], +) +async def test_get_firmware_info_errors( + hass: HomeAssistant, data: dict[str, str | int | None] +) -> None: + """Test `get_firmware_info` with config entry data format errors.""" + zha = MockConfigEntry( + domain="zha", + unique_id="some_unique_id", + data=data, + version=4, + ) + zha.add_to_hass(hass) + + assert (await get_firmware_info(hass, zha)) is None