core/tests/components/config/test_device_registry.py

93 lines
2.7 KiB
Python
Raw Normal View History

"""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