1
0
mirror of https://github.com/home-assistant/core.git synced 2026-05-18 14:29:57 +01:00
Files
2026-05-17 13:09:56 +02:00

97 lines
2.9 KiB
Python

"""Tests for the Hive integration __init__."""
from unittest.mock import AsyncMock, MagicMock, patch
from homeassistant.components.hive.const import DOMAIN
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr
from tests.common import MockConfigEntry
_ENTRY_DATA = {
CONF_USERNAME: "user@example.com",
CONF_PASSWORD: "password",
"tokens": {
"AuthenticationResult": {
"AccessToken": "mock-access-token",
"RefreshToken": "mock-refresh-token",
},
"ChallengeName": "SUCCESS",
},
}
_HUB_BASE = {
"device_id": "hive-hub-id",
"hiveName": "Hive Hub",
"deviceData": {
"model": "Hub",
"version": "1.2.3",
"manufacturer": "Hive",
"online": True,
},
}
def _make_mock_hive(hub_extra: dict) -> MagicMock:
"""Return a mocked Hive instance.
startSession returns a minimal devices dict.
"""
hub_data = {**_HUB_BASE, **hub_extra}
mock_hive = MagicMock()
mock_hive.session.startSession = AsyncMock(return_value={"parent": [hub_data]})
return mock_hive
async def test_hub_device_registers_mac_connection(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
) -> None:
"""Hub device entry includes a MAC connection when macAddress is present."""
entry = MockConfigEntry(domain=DOMAIN, data=_ENTRY_DATA)
entry.add_to_hass(hass)
mock_hive = _make_mock_hive({"macAddress": "00:1C:2B:1C:2E:68"})
with (
patch(
"homeassistant.components.hive.Hive",
return_value=mock_hive,
),
patch("homeassistant.components.hive.aiohttp_client.async_get_clientsession"),
):
await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done()
device = device_registry.async_get_device(identifiers={(DOMAIN, "hive-hub-id")})
assert device is not None
assert (dr.CONNECTION_NETWORK_MAC, "00:1c:2b:1c:2e:68") in device.connections
async def test_hub_device_no_mac_connection_when_absent(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
) -> None:
"""Hub device entry has no MAC connection when macAddress is absent."""
entry = MockConfigEntry(domain=DOMAIN, data=_ENTRY_DATA)
entry.add_to_hass(hass)
mock_hive = _make_mock_hive({}) # no macAddress key
with (
patch(
"homeassistant.components.hive.Hive",
return_value=mock_hive,
),
patch("homeassistant.components.hive.aiohttp_client.async_get_clientsession"),
):
await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done()
device = device_registry.async_get_device(identifiers={(DOMAIN, "hive-hub-id")})
assert device is not None
assert not any(
conn_type == dr.CONNECTION_NETWORK_MAC for conn_type, _ in device.connections
)