From b9f97e64f8bc41705fa577ae186d02315a4ce250 Mon Sep 17 00:00:00 2001 From: starkillerOG Date: Tue, 7 Jul 2020 00:16:21 +0200 Subject: [PATCH] Ignore HEOS 1, 3, 5 and 7 for DenonAvr ssdp discovery (#37579) --- .../components/denonavr/config_flow.py | 4 ++++ tests/components/denonavr/test_config_flow.py | 22 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/homeassistant/components/denonavr/config_flow.py b/homeassistant/components/denonavr/config_flow.py index 595f958ce01..05ea21e7227 100644 --- a/homeassistant/components/denonavr/config_flow.py +++ b/homeassistant/components/denonavr/config_flow.py @@ -20,6 +20,7 @@ _LOGGER = logging.getLogger(__name__) DOMAIN = "denonavr" SUPPORTED_MANUFACTURERS = ["Denon", "DENON", "Marantz"] +IGNORED_MODELS = ["HEOS 1", "HEOS 3", "HEOS 5", "HEOS 7"] CONF_SHOW_ALL_SOURCES = "show_all_sources" CONF_ZONE2 = "zone2" @@ -217,6 +218,9 @@ class DenonAvrFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): self.serial_number = discovery_info[ssdp.ATTR_UPNP_SERIAL] self.host = urlparse(discovery_info[ssdp.ATTR_SSDP_LOCATION]).hostname + if self.model_name in IGNORED_MODELS: + return self.async_abort(reason="not_denonavr_manufacturer") + unique_id = self.construct_unique_id(self.model_name, self.serial_number) await self.async_set_unique_id(unique_id) self._abort_if_unique_id_configured({CONF_HOST: self.host}) diff --git a/tests/components/denonavr/test_config_flow.py b/tests/components/denonavr/test_config_flow.py index d7ab51ff029..f88ac38c46c 100644 --- a/tests/components/denonavr/test_config_flow.py +++ b/tests/components/denonavr/test_config_flow.py @@ -23,6 +23,7 @@ TEST_MAC = "ab:cd:ef:gh" TEST_HOST2 = "5.6.7.8" TEST_NAME = "Test_Receiver" TEST_MODEL = "model5" +TEST_IGNORED_MODEL = "HEOS 7" TEST_RECEIVER_TYPE = "avr-x" TEST_SERIALNUMBER = "123456789" TEST_MANUFACTURER = "Denon" @@ -470,6 +471,27 @@ async def test_config_flow_ssdp_missing_info(hass): assert result["reason"] == "not_denonavr_missing" +async def test_config_flow_ssdp_ignored_model(hass): + """ + Failed flow initialized by ssdp discovery. + + Model in the ignored models list. + """ + result = await hass.config_entries.flow.async_init( + DOMAIN, + context={"source": config_entries.SOURCE_SSDP}, + data={ + ssdp.ATTR_UPNP_MANUFACTURER: TEST_MANUFACTURER, + ssdp.ATTR_UPNP_MODEL_NAME: TEST_IGNORED_MODEL, + ssdp.ATTR_UPNP_SERIAL: TEST_SERIALNUMBER, + ssdp.ATTR_SSDP_LOCATION: TEST_SSDP_LOCATION, + }, + ) + + assert result["type"] == "abort" + assert result["reason"] == "not_denonavr_manufacturer" + + async def test_options_flow(hass): """Test specifying non default settings using options flow.""" config_entry = MockConfigEntry(