mirror of
https://github.com/home-assistant/core.git
synced 2025-11-10 11:29:46 +00:00
Do not break Alexa sync when encounter bad entity (#39380)
This commit is contained in:
@@ -3,6 +3,8 @@ from homeassistant.components.alexa import smart_home
|
||||
|
||||
from . import DEFAULT_CONFIG, get_new_request
|
||||
|
||||
from tests.async_mock import patch
|
||||
|
||||
|
||||
async def test_unsupported_domain(hass):
|
||||
"""Discovery ignores entities of unknown domains."""
|
||||
@@ -16,3 +18,29 @@ async def test_unsupported_domain(hass):
|
||||
msg = msg["event"]
|
||||
|
||||
assert not msg["payload"]["endpoints"]
|
||||
|
||||
|
||||
async def test_serialize_discovery_recovers(hass, caplog):
|
||||
"""Test we handle an interface raising unexpectedly during serialize discovery."""
|
||||
request = get_new_request("Alexa.Discovery", "Discover")
|
||||
|
||||
hass.states.async_set("switch.bla", "on", {"friendly_name": "Boop Woz"})
|
||||
|
||||
with patch(
|
||||
"homeassistant.components.alexa.capabilities.AlexaPowerController.serialize_discovery",
|
||||
side_effect=TypeError,
|
||||
):
|
||||
msg = await smart_home.async_handle_message(hass, DEFAULT_CONFIG, request)
|
||||
|
||||
assert "event" in msg
|
||||
msg = msg["event"]
|
||||
|
||||
interfaces = {
|
||||
ifc["interface"] for ifc in msg["payload"]["endpoints"][0]["capabilities"]
|
||||
}
|
||||
|
||||
assert "Alexa.PowerController" not in interfaces
|
||||
assert (
|
||||
f"Error serializing Alexa.PowerController discovery for {hass.states.get('switch.bla')}"
|
||||
in caplog.text
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user