"""Test device_registry API.""" import pytest from homeassistant.components.config import device_registry from tests.common import mock_device_registry @pytest.fixture def client(hass, hass_ws_client): """Fixture that can interact with the config manager API.""" hass.loop.run_until_complete(device_registry.async_setup(hass)) yield hass.loop.run_until_complete(hass_ws_client(hass)) @pytest.fixture def registry(hass): """Return an empty, loaded, registry.""" return mock_device_registry(hass) async def test_list_devices(hass, client, registry): """Test list entries.""" registry.async_get_or_create( config_entry_id="1234", connections={("ethernet", "12:34:56:78:90:AB:CD:EF")}, identifiers={("bridgeid", "0123")}, manufacturer="manufacturer", model="model", ) registry.async_get_or_create( config_entry_id="1234", identifiers={("bridgeid", "1234")}, manufacturer="manufacturer", model="model", via_device=("bridgeid", "0123"), ) await client.send_json({"id": 5, "type": "config/device_registry/list"}) msg = await client.receive_json() dev1, dev2 = [entry.pop("id") for entry in msg["result"]] assert msg["result"] == [ { "config_entries": ["1234"], "connections": [["ethernet", "12:34:56:78:90:AB:CD:EF"]], "manufacturer": "manufacturer", "model": "model", "name": None, "sw_version": None, "via_device_id": None, "area_id": None, "name_by_user": None, }, { "config_entries": ["1234"], "connections": [], "manufacturer": "manufacturer", "model": "model", "name": None, "sw_version": None, "via_device_id": dev1, "area_id": None, "name_by_user": None, }, ] async def test_update_device(hass, client, registry): """Test update entry.""" device = registry.async_get_or_create( config_entry_id="1234", connections={("ethernet", "12:34:56:78:90:AB:CD:EF")}, identifiers={("bridgeid", "0123")}, manufacturer="manufacturer", model="model", ) assert not device.area_id assert not device.name_by_user await client.send_json( { "id": 1, "device_id": device.id, "area_id": "12345A", "name_by_user": "Test Friendly Name", "type": "config/device_registry/update", } ) msg = await client.receive_json() assert msg["result"]["id"] == device.id assert msg["result"]["area_id"] == "12345A" assert msg["result"]["name_by_user"] == "Test Friendly Name" assert len(registry.devices) == 1