Tweak deCONZ init and hub tests (#122484)

* Improve typing of init tests

* Clean up gateway test

* Validate deconz device registry entry

* Rename gateway to hub

* Snake case BRIDGEID to BRIDGE_ID
pull/122493/head
Robert Svensson 2024-07-23 21:29:48 +02:00 committed by GitHub
parent 2730713b39
commit e6ef8a34a7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 74 additions and 137 deletions

View File

@ -35,7 +35,7 @@ class _WebsocketMock(Protocol):
# Config entry fixtures # Config entry fixtures
API_KEY = "1234567890ABCDEF" API_KEY = "1234567890ABCDEF"
BRIDGEID = "01234E56789A" BRIDGE_ID = "01234E56789A"
HOST = "1.2.3.4" HOST = "1.2.3.4"
PORT = 80 PORT = 80
@ -50,7 +50,7 @@ def fixture_config_entry(
return MockConfigEntry( return MockConfigEntry(
domain=DECONZ_DOMAIN, domain=DECONZ_DOMAIN,
entry_id="1", entry_id="1",
unique_id=BRIDGEID, unique_id=BRIDGE_ID,
data=config_entry_data, data=config_entry_data,
options=config_entry_options, options=config_entry_options,
source=config_entry_source, source=config_entry_source,
@ -158,7 +158,7 @@ def fixture_alarm_system_data() -> dict[str, Any]:
def fixture_config_data() -> dict[str, Any]: def fixture_config_data() -> dict[str, Any]:
"""Config data.""" """Config data."""
return { return {
"bridgeid": BRIDGEID, "bridgeid": BRIDGE_ID,
"ipaddress": HOST, "ipaddress": HOST,
"mac": "00:11:22:33:44:55", "mac": "00:11:22:33:44:55",
"modelid": "deCONZ", "modelid": "deCONZ",
@ -219,7 +219,6 @@ async def fixture_config_entry_factory(
@pytest.fixture(name="config_entry_setup") @pytest.fixture(name="config_entry_setup")
async def fixture_config_entry_setup( async def fixture_config_entry_setup(
hass: HomeAssistant,
config_entry_factory: Callable[[], Coroutine[Any, Any, MockConfigEntry]], config_entry_factory: Callable[[], Coroutine[Any, Any, MockConfigEntry]],
) -> MockConfigEntry: ) -> MockConfigEntry:
"""Fixture providing a set up instance of deCONZ integration.""" """Fixture providing a set up instance of deCONZ integration."""

View File

@ -0,0 +1,33 @@
# serializer version: 1
# name: test_device_registry_entry
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': 'http://1.2.3.4:80',
'connections': set({
}),
'disabled_by': None,
'entry_type': <DeviceEntryType.SERVICE: 'service'>,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
tuple(
'deconz',
'01234E56789A',
),
}),
'is_new': False,
'labels': set({
}),
'manufacturer': 'Dresden Elektronik',
'model': 'deCONZ',
'model_id': None,
'name': 'deCONZ mock gateway',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
})
# ---

View File

@ -33,7 +33,7 @@ from homeassistant.const import CONF_API_KEY, CONF_HOST, CONF_PORT, CONTENT_TYPE
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import FlowResultType from homeassistant.data_entry_flow import FlowResultType
from .conftest import API_KEY, BRIDGEID from .conftest import API_KEY, BRIDGE_ID
from tests.test_util.aiohttp import AiohttpClientMocker from tests.test_util.aiohttp import AiohttpClientMocker
@ -48,7 +48,7 @@ async def test_flow_discovered_bridges(
aioclient_mock.get( aioclient_mock.get(
pydeconz.utils.URL_DISCOVER, pydeconz.utils.URL_DISCOVER,
json=[ json=[
{"id": BRIDGEID, "internalipaddress": "1.2.3.4", "internalport": 80}, {"id": BRIDGE_ID, "internalipaddress": "1.2.3.4", "internalport": 80},
{"id": "1234E567890A", "internalipaddress": "5.6.7.8", "internalport": 80}, {"id": "1234E567890A", "internalipaddress": "5.6.7.8", "internalport": 80},
], ],
headers={"content-type": CONTENT_TYPE_JSON}, headers={"content-type": CONTENT_TYPE_JSON},
@ -79,7 +79,7 @@ async def test_flow_discovered_bridges(
) )
assert result["type"] is FlowResultType.CREATE_ENTRY assert result["type"] is FlowResultType.CREATE_ENTRY
assert result["title"] == BRIDGEID assert result["title"] == BRIDGE_ID
assert result["data"] == { assert result["data"] == {
CONF_HOST: "1.2.3.4", CONF_HOST: "1.2.3.4",
CONF_PORT: 80, CONF_PORT: 80,
@ -93,7 +93,7 @@ async def test_flow_manual_configuration_decision(
"""Test that config flow for one discovered bridge works.""" """Test that config flow for one discovered bridge works."""
aioclient_mock.get( aioclient_mock.get(
pydeconz.utils.URL_DISCOVER, pydeconz.utils.URL_DISCOVER,
json=[{"id": BRIDGEID, "internalipaddress": "1.2.3.4", "internalport": 80}], json=[{"id": BRIDGE_ID, "internalipaddress": "1.2.3.4", "internalport": 80}],
headers={"content-type": CONTENT_TYPE_JSON}, headers={"content-type": CONTENT_TYPE_JSON},
) )
@ -124,7 +124,7 @@ async def test_flow_manual_configuration_decision(
aioclient_mock.get( aioclient_mock.get(
f"http://1.2.3.4:80/api/{API_KEY}/config", f"http://1.2.3.4:80/api/{API_KEY}/config",
json={"bridgeid": BRIDGEID}, json={"bridgeid": BRIDGE_ID},
headers={"content-type": CONTENT_TYPE_JSON}, headers={"content-type": CONTENT_TYPE_JSON},
) )
@ -133,7 +133,7 @@ async def test_flow_manual_configuration_decision(
) )
assert result["type"] is FlowResultType.CREATE_ENTRY assert result["type"] is FlowResultType.CREATE_ENTRY
assert result["title"] == BRIDGEID assert result["title"] == BRIDGE_ID
assert result["data"] == { assert result["data"] == {
CONF_HOST: "1.2.3.4", CONF_HOST: "1.2.3.4",
CONF_PORT: 80, CONF_PORT: 80,
@ -175,7 +175,7 @@ async def test_flow_manual_configuration(
aioclient_mock.get( aioclient_mock.get(
f"http://1.2.3.4:80/api/{API_KEY}/config", f"http://1.2.3.4:80/api/{API_KEY}/config",
json={"bridgeid": BRIDGEID}, json={"bridgeid": BRIDGE_ID},
headers={"content-type": CONTENT_TYPE_JSON}, headers={"content-type": CONTENT_TYPE_JSON},
) )
@ -184,7 +184,7 @@ async def test_flow_manual_configuration(
) )
assert result["type"] is FlowResultType.CREATE_ENTRY assert result["type"] is FlowResultType.CREATE_ENTRY
assert result["title"] == BRIDGEID assert result["title"] == BRIDGE_ID
assert result["data"] == { assert result["data"] == {
CONF_HOST: "1.2.3.4", CONF_HOST: "1.2.3.4",
CONF_PORT: 80, CONF_PORT: 80,
@ -257,7 +257,7 @@ async def test_manual_configuration_update_configuration(
aioclient_mock.get( aioclient_mock.get(
f"http://2.3.4.5:80/api/{API_KEY}/config", f"http://2.3.4.5:80/api/{API_KEY}/config",
json={"bridgeid": BRIDGEID}, json={"bridgeid": BRIDGE_ID},
headers={"content-type": CONTENT_TYPE_JSON}, headers={"content-type": CONTENT_TYPE_JSON},
) )
@ -304,7 +304,7 @@ async def test_manual_configuration_dont_update_configuration(
aioclient_mock.get( aioclient_mock.get(
f"http://1.2.3.4:80/api/{API_KEY}/config", f"http://1.2.3.4:80/api/{API_KEY}/config",
json={"bridgeid": BRIDGEID}, json={"bridgeid": BRIDGE_ID},
headers={"content-type": CONTENT_TYPE_JSON}, headers={"content-type": CONTENT_TYPE_JSON},
) )
@ -375,7 +375,7 @@ async def test_link_step_fails(
"""Test config flow should abort if no API key was possible to retrieve.""" """Test config flow should abort if no API key was possible to retrieve."""
aioclient_mock.get( aioclient_mock.get(
pydeconz.utils.URL_DISCOVER, pydeconz.utils.URL_DISCOVER,
json=[{"id": BRIDGEID, "internalipaddress": "1.2.3.4", "internalport": 80}], json=[{"id": BRIDGE_ID, "internalipaddress": "1.2.3.4", "internalport": 80}],
headers={"content-type": CONTENT_TYPE_JSON}, headers={"content-type": CONTENT_TYPE_JSON},
) )
@ -426,7 +426,7 @@ async def test_reauth_flow_update_configuration(
aioclient_mock.get( aioclient_mock.get(
f"http://1.2.3.4:80/api/{new_api_key}/config", f"http://1.2.3.4:80/api/{new_api_key}/config",
json={"bridgeid": BRIDGEID}, json={"bridgeid": BRIDGE_ID},
headers={"content-type": CONTENT_TYPE_JSON}, headers={"content-type": CONTENT_TYPE_JSON},
) )
@ -451,7 +451,7 @@ async def test_flow_ssdp_discovery(
ssdp_location="http://1.2.3.4:80/", ssdp_location="http://1.2.3.4:80/",
upnp={ upnp={
ATTR_UPNP_MANUFACTURER_URL: DECONZ_MANUFACTURERURL, ATTR_UPNP_MANUFACTURER_URL: DECONZ_MANUFACTURERURL,
ATTR_UPNP_SERIAL: BRIDGEID, ATTR_UPNP_SERIAL: BRIDGE_ID,
}, },
), ),
context={"source": SOURCE_SSDP}, context={"source": SOURCE_SSDP},
@ -475,7 +475,7 @@ async def test_flow_ssdp_discovery(
) )
assert result["type"] is FlowResultType.CREATE_ENTRY assert result["type"] is FlowResultType.CREATE_ENTRY
assert result["title"] == BRIDGEID assert result["title"] == BRIDGE_ID
assert result["data"] == { assert result["data"] == {
CONF_HOST: "1.2.3.4", CONF_HOST: "1.2.3.4",
CONF_PORT: 80, CONF_PORT: 80,
@ -499,7 +499,7 @@ async def test_ssdp_discovery_update_configuration(
ssdp_location="http://2.3.4.5:80/", ssdp_location="http://2.3.4.5:80/",
upnp={ upnp={
ATTR_UPNP_MANUFACTURER_URL: DECONZ_MANUFACTURERURL, ATTR_UPNP_MANUFACTURER_URL: DECONZ_MANUFACTURERURL,
ATTR_UPNP_SERIAL: BRIDGEID, ATTR_UPNP_SERIAL: BRIDGE_ID,
}, },
), ),
context={"source": SOURCE_SSDP}, context={"source": SOURCE_SSDP},
@ -525,7 +525,7 @@ async def test_ssdp_discovery_dont_update_configuration(
ssdp_location="http://1.2.3.4:80/", ssdp_location="http://1.2.3.4:80/",
upnp={ upnp={
ATTR_UPNP_MANUFACTURER_URL: DECONZ_MANUFACTURERURL, ATTR_UPNP_MANUFACTURER_URL: DECONZ_MANUFACTURERURL,
ATTR_UPNP_SERIAL: BRIDGEID, ATTR_UPNP_SERIAL: BRIDGE_ID,
}, },
), ),
context={"source": SOURCE_SSDP}, context={"source": SOURCE_SSDP},
@ -549,7 +549,7 @@ async def test_ssdp_discovery_dont_update_existing_hassio_configuration(
ssdp_location="http://1.2.3.4:80/", ssdp_location="http://1.2.3.4:80/",
upnp={ upnp={
ATTR_UPNP_MANUFACTURER_URL: DECONZ_MANUFACTURERURL, ATTR_UPNP_MANUFACTURER_URL: DECONZ_MANUFACTURERURL,
ATTR_UPNP_SERIAL: BRIDGEID, ATTR_UPNP_SERIAL: BRIDGE_ID,
}, },
), ),
context={"source": SOURCE_SSDP}, context={"source": SOURCE_SSDP},
@ -569,7 +569,7 @@ async def test_flow_hassio_discovery(hass: HomeAssistant) -> None:
"addon": "Mock Addon", "addon": "Mock Addon",
CONF_HOST: "mock-deconz", CONF_HOST: "mock-deconz",
CONF_PORT: 80, CONF_PORT: 80,
CONF_SERIAL: BRIDGEID, CONF_SERIAL: BRIDGE_ID,
CONF_API_KEY: API_KEY, CONF_API_KEY: API_KEY,
}, },
name="Mock Addon", name="Mock Addon",
@ -622,7 +622,7 @@ async def test_hassio_discovery_update_configuration(
CONF_HOST: "2.3.4.5", CONF_HOST: "2.3.4.5",
CONF_PORT: 8080, CONF_PORT: 8080,
CONF_API_KEY: "updated", CONF_API_KEY: "updated",
CONF_SERIAL: BRIDGEID, CONF_SERIAL: BRIDGE_ID,
}, },
name="Mock Addon", name="Mock Addon",
slug="deconz", slug="deconz",
@ -650,7 +650,7 @@ async def test_hassio_discovery_dont_update_configuration(hass: HomeAssistant) -
CONF_HOST: "1.2.3.4", CONF_HOST: "1.2.3.4",
CONF_PORT: 80, CONF_PORT: 80,
CONF_API_KEY: API_KEY, CONF_API_KEY: API_KEY,
CONF_SERIAL: BRIDGEID, CONF_SERIAL: BRIDGE_ID,
}, },
name="Mock Addon", name="Mock Addon",
slug="deconz", slug="deconz",

View File

@ -1,120 +1,40 @@
"""Test deCONZ gateway.""" """Test deCONZ gateway."""
from collections.abc import Callable
from unittest.mock import patch from unittest.mock import patch
import pydeconz import pydeconz
from pydeconz.websocket import State from pydeconz.websocket import State
import pytest import pytest
from syrupy import SnapshotAssertion
from homeassistant.components import ssdp from homeassistant.components import ssdp
from homeassistant.components.alarm_control_panel import (
DOMAIN as ALARM_CONTROL_PANEL_DOMAIN,
)
from homeassistant.components.binary_sensor import DOMAIN as BINARY_SENSOR_DOMAIN
from homeassistant.components.button import DOMAIN as BUTTON_DOMAIN
from homeassistant.components.climate import DOMAIN as CLIMATE_DOMAIN
from homeassistant.components.cover import DOMAIN as COVER_DOMAIN
from homeassistant.components.deconz.config_flow import DECONZ_MANUFACTURERURL from homeassistant.components.deconz.config_flow import DECONZ_MANUFACTURERURL
from homeassistant.components.deconz.const import DOMAIN as DECONZ_DOMAIN from homeassistant.components.deconz.const import DOMAIN as DECONZ_DOMAIN
from homeassistant.components.deconz.errors import AuthenticationRequired, CannotConnect from homeassistant.components.deconz.errors import AuthenticationRequired, CannotConnect
from homeassistant.components.deconz.hub import DeconzHub, get_deconz_api from homeassistant.components.deconz.hub import DeconzHub, get_deconz_api
from homeassistant.components.fan import DOMAIN as FAN_DOMAIN
from homeassistant.components.light import DOMAIN as LIGHT_DOMAIN
from homeassistant.components.lock import DOMAIN as LOCK_DOMAIN
from homeassistant.components.number import DOMAIN as NUMBER_DOMAIN
from homeassistant.components.scene import DOMAIN as SCENE_DOMAIN
from homeassistant.components.select import DOMAIN as SELECT_DOMAIN
from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN
from homeassistant.components.siren import DOMAIN as SIREN_DOMAIN
from homeassistant.components.ssdp import ( from homeassistant.components.ssdp import (
ATTR_UPNP_MANUFACTURER_URL, ATTR_UPNP_MANUFACTURER_URL,
ATTR_UPNP_SERIAL, ATTR_UPNP_SERIAL,
ATTR_UPNP_UDN, ATTR_UPNP_UDN,
) )
from homeassistant.components.switch import DOMAIN as SWITCH_DOMAIN from homeassistant.config_entries import SOURCE_SSDP, ConfigEntry
from homeassistant.config_entries import SOURCE_HASSIO, SOURCE_SSDP, ConfigEntry
from homeassistant.const import STATE_OFF, STATE_UNAVAILABLE from homeassistant.const import STATE_OFF, STATE_UNAVAILABLE
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr from homeassistant.helpers import device_registry as dr
from .conftest import BRIDGEID, HOST, PORT from .conftest import BRIDGE_ID
async def test_gateway_setup( async def test_device_registry_entry(
hass: HomeAssistant, config_entry_setup: ConfigEntry,
device_registry: dr.DeviceRegistry, device_registry: dr.DeviceRegistry,
config_entry_factory: Callable[[], ConfigEntry], snapshot: SnapshotAssertion,
) -> None: ) -> None:
"""Successful setup.""" """Successful setup."""
# Patching async_forward_entry_setup* is not advisable, and should be refactored device_entry = device_registry.async_get_device(
# in the future. identifiers={(DECONZ_DOMAIN, config_entry_setup.unique_id)}
with patch(
"homeassistant.config_entries.ConfigEntries.async_forward_entry_setups",
return_value=True,
) as forward_entry_setup:
config_entry = await config_entry_factory()
gateway = DeconzHub.get_hub(hass, config_entry)
assert gateway.bridgeid == BRIDGEID
assert gateway.master is True
assert gateway.config.allow_clip_sensor is False
assert gateway.config.allow_deconz_groups is True
assert gateway.config.allow_new_devices is True
assert len(gateway.deconz_ids) == 0
assert len(hass.states.async_all()) == 0
assert forward_entry_setup.mock_calls[0][1] == (
config_entry,
[
ALARM_CONTROL_PANEL_DOMAIN,
BINARY_SENSOR_DOMAIN,
BUTTON_DOMAIN,
CLIMATE_DOMAIN,
COVER_DOMAIN,
FAN_DOMAIN,
LIGHT_DOMAIN,
LOCK_DOMAIN,
NUMBER_DOMAIN,
SCENE_DOMAIN,
SELECT_DOMAIN,
SENSOR_DOMAIN,
SIREN_DOMAIN,
SWITCH_DOMAIN,
],
)
gateway_entry = device_registry.async_get_device(
identifiers={(DECONZ_DOMAIN, gateway.bridgeid)}
)
assert gateway_entry.configuration_url == f"http://{HOST}:{PORT}"
assert gateway_entry.entry_type is dr.DeviceEntryType.SERVICE
@pytest.mark.parametrize("config_entry_source", [SOURCE_HASSIO])
async def test_gateway_device_configuration_url_when_addon(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
config_entry_factory: Callable[[], ConfigEntry],
) -> None:
"""Successful setup."""
# Patching async_forward_entry_setup* is not advisable, and should be refactored
# in the future.
with patch(
"homeassistant.config_entries.ConfigEntries.async_forward_entry_setups",
return_value=True,
):
config_entry = await config_entry_factory()
gateway = DeconzHub.get_hub(hass, config_entry)
gateway_entry = device_registry.async_get_device(
identifiers={(DECONZ_DOMAIN, gateway.bridgeid)}
)
assert (
gateway_entry.configuration_url == "homeassistant://hassio/ingress/core_deconz"
) )
assert device_entry == snapshot
@pytest.mark.parametrize( @pytest.mark.parametrize(
@ -166,7 +86,7 @@ async def test_update_address(
ssdp_location="http://2.3.4.5:80/", ssdp_location="http://2.3.4.5:80/",
upnp={ upnp={
ATTR_UPNP_MANUFACTURER_URL: DECONZ_MANUFACTURERURL, ATTR_UPNP_MANUFACTURER_URL: DECONZ_MANUFACTURERURL,
ATTR_UPNP_SERIAL: BRIDGEID, ATTR_UPNP_SERIAL: BRIDGE_ID,
ATTR_UPNP_UDN: "uuid:456DEF", ATTR_UPNP_UDN: "uuid:456DEF",
}, },
), ),

View File

@ -16,22 +16,9 @@ from homeassistant.core import HomeAssistant
from .conftest import ConfigEntryFactoryType from .conftest import ConfigEntryFactoryType
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
from tests.test_util.aiohttp import AiohttpClientMocker
ENTRY1_HOST = "1.2.3.4"
ENTRY1_PORT = 80
ENTRY1_API_KEY = "1234567890ABCDEF"
ENTRY1_BRIDGEID = "12345ABC"
ENTRY1_UUID = "456DEF"
ENTRY2_HOST = "2.3.4.5"
ENTRY2_PORT = 80
ENTRY2_API_KEY = "1234567890ABCDEF"
ENTRY2_BRIDGEID = "23456DEF"
ENTRY2_UUID = "789ACE"
async def setup_entry(hass, entry): async def setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> None:
"""Test that setup entry works.""" """Test that setup entry works."""
with ( with (
patch.object(DeconzHub, "async_setup", return_value=True), patch.object(DeconzHub, "async_setup", return_value=True),
@ -109,9 +96,7 @@ async def test_unload_entry(
async def test_unload_entry_multiple_gateways( async def test_unload_entry_multiple_gateways(
hass: HomeAssistant, hass: HomeAssistant, config_entry_factory: ConfigEntryFactoryType
aioclient_mock: AiohttpClientMocker,
config_entry_factory,
) -> None: ) -> None:
"""Test being able to unload an entry and master gateway gets moved.""" """Test being able to unload an entry and master gateway gets moved."""
config_entry = await config_entry_factory() config_entry = await config_entry_factory()
@ -133,7 +118,7 @@ async def test_unload_entry_multiple_gateways(
async def test_unload_entry_multiple_gateways_parallel( async def test_unload_entry_multiple_gateways_parallel(
hass: HomeAssistant, config_entry_factory hass: HomeAssistant, config_entry_factory: ConfigEntryFactoryType
) -> None: ) -> None:
"""Test race condition when unloading multiple config entries in parallel.""" """Test race condition when unloading multiple config entries in parallel."""
config_entry = await config_entry_factory() config_entry = await config_entry_factory()

View File

@ -25,7 +25,7 @@ from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr, entity_registry as er from homeassistant.helpers import device_registry as dr, entity_registry as er
from .test_gateway import BRIDGEID from .test_hub import BRIDGE_ID
from tests.common import async_capture_events from tests.common import async_capture_events
from tests.test_util.aiohttp import AiohttpClientMocker from tests.test_util.aiohttp import AiohttpClientMocker
@ -39,7 +39,7 @@ async def test_configure_service_with_field(
"""Test that service invokes pydeconz with the correct path and data.""" """Test that service invokes pydeconz with the correct path and data."""
data = { data = {
SERVICE_FIELD: "/lights/2", SERVICE_FIELD: "/lights/2",
CONF_BRIDGE_ID: BRIDGEID, CONF_BRIDGE_ID: BRIDGE_ID,
SERVICE_DATA: {"on": True, "attr1": 10, "attr2": 20}, SERVICE_DATA: {"on": True, "attr1": 10, "attr2": 20},
} }
@ -228,7 +228,7 @@ async def test_service_refresh_devices(
mock_requests() mock_requests()
await hass.services.async_call( await hass.services.async_call(
DECONZ_DOMAIN, SERVICE_DEVICE_REFRESH, service_data={CONF_BRIDGE_ID: BRIDGEID} DECONZ_DOMAIN, SERVICE_DEVICE_REFRESH, service_data={CONF_BRIDGE_ID: BRIDGE_ID}
) )
await hass.async_block_till_done() await hass.async_block_till_done()
@ -294,7 +294,7 @@ async def test_service_refresh_devices_trigger_no_state_update(
mock_requests() mock_requests()
await hass.services.async_call( await hass.services.async_call(
DECONZ_DOMAIN, SERVICE_DEVICE_REFRESH, service_data={CONF_BRIDGE_ID: BRIDGEID} DECONZ_DOMAIN, SERVICE_DEVICE_REFRESH, service_data={CONF_BRIDGE_ID: BRIDGE_ID}
) )
await hass.async_block_till_done() await hass.async_block_till_done()
@ -369,7 +369,7 @@ async def test_remove_orphaned_entries_service(
await hass.services.async_call( await hass.services.async_call(
DECONZ_DOMAIN, DECONZ_DOMAIN,
SERVICE_REMOVE_ORPHANED_ENTRIES, SERVICE_REMOVE_ORPHANED_ENTRIES,
service_data={CONF_BRIDGE_ID: BRIDGEID}, service_data={CONF_BRIDGE_ID: BRIDGE_ID},
) )
await hass.async_block_till_done() await hass.async_block_till_done()