Fix homematicip_cloud tests that have uncaught exceptions (#33371)

pull/33392/head
SukramJ 2020-03-29 06:01:53 +02:00 committed by GitHub
parent 42cb5a5239
commit 3c2df7f8f2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 38 additions and 24 deletions

View File

@ -121,9 +121,13 @@ class HomematicipGenericDevice(Entity):
# Only go further if the device/entity should be removed from registries
# due to a removal of the HmIP device.
if self.hmip_device_removed:
del self._hap.hmip_device_by_entity_id[self.entity_id]
await self.async_remove_from_registries()
try:
del self._hap.hmip_device_by_entity_id[self.entity_id]
await self.async_remove_from_registries()
except KeyError as err:
_LOGGER.debug("Error removing HMIP entity from registry: %s", err)
async def async_remove_from_registries(self) -> None:
"""Remove entity/device from registry."""

View File

@ -3,6 +3,7 @@ from asynctest import CoroutineMock, MagicMock, Mock, patch
from homematicip.aio.auth import AsyncAuth
from homematicip.aio.connection import AsyncConnection
from homematicip.aio.home import AsyncHome
from homematicip.base.enums import WeatherCondition, WeatherDayTime
import pytest
from homeassistant import config_entries
@ -115,10 +116,21 @@ def simple_mock_home_fixture():
devices=[],
groups=[],
location=Mock(),
weather=Mock(create=True),
weather=Mock(
temperature=0.0,
weatherCondition=WeatherCondition.UNKNOWN,
weatherDayTime=WeatherDayTime.DAY,
minTemperature=0.0,
maxTemperature=0.0,
humidity=0,
windSpeed=0.0,
windDirection=0,
vaporAmount=0.0,
),
id=42,
dutyCycle=88,
connected=True,
currentAPVersion="2.0.36",
)
with patch(

View File

@ -52,6 +52,8 @@ async def test_flow_works(hass, simple_mock_home):
), patch(
"homeassistant.components.homematicip_cloud.hap.HomematicipAuth.async_register",
return_value=True,
), patch(
"homeassistant.components.homematicip_cloud.hap.HomematicipHAP.async_connect",
):
result = await hass.config_entries.flow.async_configure(
result["flow_id"], user_input={}
@ -151,6 +153,8 @@ async def test_import_config(hass, simple_mock_home):
), patch(
"homeassistant.components.homematicip_cloud.hap.HomematicipAuth.async_register",
return_value=True,
), patch(
"homeassistant.components.homematicip_cloud.hap.HomematicipHAP.async_connect",
):
result = await hass.config_entries.flow.async_init(
HMIPC_DOMAIN, context={"source": "import"}, data=IMPORT_CONFIG

View File

@ -39,7 +39,12 @@ async def test_config_with_accesspoint_passed_to_config_entry(
# no acccesspoint exists
assert not hass.data.get(HMIPC_DOMAIN)
assert await async_setup_component(hass, HMIPC_DOMAIN, {HMIPC_DOMAIN: entry_config})
with patch(
"homeassistant.components.homematicip_cloud.hap.HomematicipHAP.async_connect",
):
assert await async_setup_component(
hass, HMIPC_DOMAIN, {HMIPC_DOMAIN: entry_config}
)
# config_entry created for access point
config_entries = hass.config_entries.async_entries(HMIPC_DOMAIN)
@ -77,7 +82,13 @@ async def test_config_already_registered_not_passed_to_config_entry(
CONF_AUTHTOKEN: "123",
CONF_NAME: "name",
}
assert await async_setup_component(hass, HMIPC_DOMAIN, {HMIPC_DOMAIN: entry_config})
with patch(
"homeassistant.components.homematicip_cloud.hap.HomematicipHAP.async_connect",
):
assert await async_setup_component(
hass, HMIPC_DOMAIN, {HMIPC_DOMAIN: entry_config}
)
# no new config_entry created / still one config_entry
config_entries = hass.config_entries.async_entries(HMIPC_DOMAIN)
@ -107,16 +118,14 @@ async def test_load_entry_fails_due_to_connection_error(
assert hmip_config_entry.state == ENTRY_STATE_SETUP_RETRY
async def test_load_entry_fails_due_to_generic_exception(
hass, hmip_config_entry, simple_mock_home
):
async def test_load_entry_fails_due_to_generic_exception(hass, hmip_config_entry):
"""Test load entry fails due to generic exception."""
hmip_config_entry.add_to_hass(hass)
with patch(
"homeassistant.components.homematicip_cloud.hap.AsyncHome.get_current_state",
side_effect=Exception,
):
), patch("homematicip.aio.connection.AsyncConnection.init",):
assert await async_setup_component(hass, HMIPC_DOMAIN, {})
assert hass.data[HMIPC_DOMAIN][hmip_config_entry.unique_id]

View File

@ -54,21 +54,6 @@ IGNORE_UNCAUGHT_EXCEPTIONS = [
("tests.components.geonetnz_quakes.test_geo_location", "test_setup"),
("tests.components.geonetnz_quakes.test_sensor", "test_setup"),
("test_homeassistant_bridge", "test_homeassistant_bridge_fan_setup"),
("tests.components.homematicip_cloud.test_config_flow", "test_flow_works"),
("tests.components.homematicip_cloud.test_config_flow", "test_import_config"),
("tests.components.homematicip_cloud.test_device", "test_hmip_remove_group"),
(
"tests.components.homematicip_cloud.test_init",
"test_config_with_accesspoint_passed_to_config_entry",
),
(
"tests.components.homematicip_cloud.test_init",
"test_config_already_registered_not_passed_to_config_entry",
),
(
"tests.components.homematicip_cloud.test_init",
"test_load_entry_fails_due_to_generic_exception",
),
("tests.components.hue.test_bridge", "test_handle_unauthorized"),
("tests.components.hue.test_init", "test_security_vuln_check"),
("tests.components.hue.test_light", "test_group_features"),