From 028e09c295642bed3bcd3edc0c52d51a4a127a2f Mon Sep 17 00:00:00 2001 From: epenet Date: Thu, 25 Nov 2021 09:49:07 +0000 Subject: [PATCH 01/15] Update axis --- tests/components/axis/test_config_flow.py | 117 +++++++++++++--------- 1 file changed, 71 insertions(+), 46 deletions(-) diff --git a/tests/components/axis/test_config_flow.py b/tests/components/axis/test_config_flow.py index 2261a462113e3..840e792ec1355 100644 --- a/tests/components/axis/test_config_flow.py +++ b/tests/components/axis/test_config_flow.py @@ -5,7 +5,7 @@ import respx from homeassistant import data_entry_flow -from homeassistant.components import dhcp, zeroconf +from homeassistant.components import dhcp, ssdp, zeroconf from homeassistant.components.axis import config_flow from homeassistant.components.axis.const import ( CONF_EVENTS, @@ -263,32 +263,37 @@ async def test_reauth_flow_update_configuration(hass): ), ( SOURCE_SSDP, - { - "st": "urn:axis-com:service:BasicService:1", - "usn": f"uuid:Upnp-BasicDevice-1_0-{MAC}::urn:axis-com:service:BasicService:1", - "ext": "", - "server": "Linux/4.14.173-axis8, UPnP/1.0, Portable SDK for UPnP devices/1.8.7", - "deviceType": "urn:schemas-upnp-org:device:Basic:1", - "friendlyName": f"AXIS M1065-LW - {MAC}", - "manufacturer": "AXIS", - "manufacturerURL": "http://www.axis.com/", - "modelDescription": "AXIS M1065-LW Network Camera", - "modelName": "AXIS M1065-LW", - "modelNumber": "M1065-LW", - "modelURL": "http://www.axis.com/", - "serialNumber": MAC, - "UDN": f"uuid:Upnp-BasicDevice-1_0-{MAC}", - "serviceList": { - "service": { - "serviceType": "urn:axis-com:service:BasicService:1", - "serviceId": "urn:axis-com:serviceId:BasicServiceId", - "controlURL": "/upnp/control/BasicServiceId", - "eventSubURL": "/upnp/event/BasicServiceId", - "SCPDURL": "/scpd_basic.xml", - } + ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="mock_location", + upnp={ + "st": "urn:axis-com:service:BasicService:1", + "usn": f"uuid:Upnp-BasicDevice-1_0-{MAC}::urn:axis-com:service:BasicService:1", + "ext": "", + "server": "Linux/4.14.173-axis8, UPnP/1.0, Portable SDK for UPnP devices/1.8.7", + "deviceType": "urn:schemas-upnp-org:device:Basic:1", + "friendlyName": f"AXIS M1065-LW - {MAC}", + "manufacturer": "AXIS", + "manufacturerURL": "http://www.axis.com/", + "modelDescription": "AXIS M1065-LW Network Camera", + "modelName": "AXIS M1065-LW", + "modelNumber": "M1065-LW", + "modelURL": "http://www.axis.com/", + "serialNumber": MAC, + "UDN": f"uuid:Upnp-BasicDevice-1_0-{MAC}", + "serviceList": { + "service": { + "serviceType": "urn:axis-com:service:BasicService:1", + "serviceId": "urn:axis-com:serviceId:BasicServiceId", + "controlURL": "/upnp/control/BasicServiceId", + "eventSubURL": "/upnp/event/BasicServiceId", + "SCPDURL": "/scpd_basic.xml", + } + }, + "presentationURL": f"http://{DEFAULT_HOST}:80/", }, - "presentationURL": f"http://{DEFAULT_HOST}:80/", - }, + ), ), ( SOURCE_ZEROCONF, @@ -354,11 +359,16 @@ async def test_discovery_flow(hass, source: str, discovery_info: dict): ), ( SOURCE_SSDP, - { - "friendlyName": f"AXIS M1065-LW - {MAC}", - "serialNumber": MAC, - "presentationURL": f"http://{DEFAULT_HOST}:80/", - }, + ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="mock_location", + upnp={ + "friendlyName": f"AXIS M1065-LW - {MAC}", + "serialNumber": MAC, + "presentationURL": f"http://{DEFAULT_HOST}:80/", + }, + ), ), ( SOURCE_ZEROCONF, @@ -403,11 +413,16 @@ async def test_discovered_device_already_configured( ), ( SOURCE_SSDP, - { - "friendlyName": f"AXIS M1065-LW - {MAC}", - "serialNumber": MAC, - "presentationURL": "http://2.3.4.5:8080/", - }, + ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="mock_location", + upnp={ + "friendlyName": f"AXIS M1065-LW - {MAC}", + "serialNumber": MAC, + "presentationURL": "http://2.3.4.5:8080/", + }, + ), 8080, ), ( @@ -474,11 +489,16 @@ async def test_discovery_flow_updated_configuration( ), ( SOURCE_SSDP, - { - "friendlyName": "", - "serialNumber": "01234567890", - "presentationURL": "", - }, + ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="mock_location", + upnp={ + "friendlyName": "", + "serialNumber": "01234567890", + "presentationURL": "", + }, + ), ), ( SOURCE_ZEROCONF, @@ -518,11 +538,16 @@ async def test_discovery_flow_ignore_non_axis_device( ), ( SOURCE_SSDP, - { - "friendlyName": f"AXIS M1065-LW - {MAC}", - "serialNumber": MAC, - "presentationURL": "http://169.254.3.4:80/", - }, + ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="mock_location", + upnp={ + "friendlyName": f"AXIS M1065-LW - {MAC}", + "serialNumber": MAC, + "presentationURL": "http://169.254.3.4:80/", + }, + ), ), ( SOURCE_ZEROCONF, From 120660d8e5cd8aae167c8295687b1f2523467140 Mon Sep 17 00:00:00 2001 From: epenet Date: Thu, 25 Nov 2021 09:49:15 +0000 Subject: [PATCH 02/15] Update harmony --- tests/components/harmony/test_config_flow.py | 37 +++++++++++++------- 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/tests/components/harmony/test_config_flow.py b/tests/components/harmony/test_config_flow.py index 9195af40cf151..7725e9752f563 100644 --- a/tests/components/harmony/test_config_flow.py +++ b/tests/components/harmony/test_config_flow.py @@ -4,6 +4,7 @@ import aiohttp from homeassistant import config_entries, data_entry_flow +from homeassistant.components import ssdp from homeassistant.components.harmony.config_flow import CannotConnect from homeassistant.components.harmony.const import DOMAIN, PREVIOUS_ACTIVE_ACTIVITY from homeassistant.const import CONF_HOST, CONF_NAME @@ -58,10 +59,14 @@ async def test_form_ssdp(hass): result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_SSDP}, - data={ - "friendlyName": "Harmony Hub", - "ssdp_location": "http://192.168.1.12:8088/description", - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="http://192.168.1.12:8088/description", + upnp={ + "friendlyName": "Harmony Hub", + }, + ), ) assert result["type"] == "form" assert result["step_id"] == "link" @@ -106,10 +111,14 @@ async def test_form_ssdp_fails_to_get_remote_id(hass): result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_SSDP}, - data={ - "friendlyName": "Harmony Hub", - "ssdp_location": "http://192.168.1.12:8088/description", - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="http://192.168.1.12:8088/description", + upnp={ + "friendlyName": "Harmony Hub", + }, + ), ) assert result["type"] == "abort" assert result["reason"] == "cannot_connect" @@ -139,10 +148,14 @@ async def test_form_ssdp_aborts_before_checking_remoteid_if_host_known(hass): result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_SSDP}, - data={ - "friendlyName": "Harmony Hub", - "ssdp_location": "http://2.2.2.2:8088/description", - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="http://2.2.2.2:8088/description", + upnp={ + "friendlyName": "Harmony Hub", + }, + ), ) assert result["type"] == "abort" From 196b80fb5322fc847991642967676acfa7176356 Mon Sep 17 00:00:00 2001 From: epenet Date: Thu, 25 Nov 2021 09:49:23 +0000 Subject: [PATCH 03/15] Update heos --- tests/components/heos/conftest.py | 24 +++++++++++++---------- tests/components/heos/test_config_flow.py | 22 ++++++++++++--------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/tests/components/heos/conftest.py b/tests/components/heos/conftest.py index 693e665d1ee84..a6b5c11dc9e43 100644 --- a/tests/components/heos/conftest.py +++ b/tests/components/heos/conftest.py @@ -146,16 +146,20 @@ def dispatcher_fixture() -> Dispatcher: @pytest.fixture(name="discovery_data") def discovery_data_fixture() -> dict: """Return mock discovery data for testing.""" - return { - ssdp.ATTR_SSDP_LOCATION: "http://127.0.0.1:60006/upnp/desc/aios_device/aios_device.xml", - ssdp.ATTR_UPNP_DEVICE_TYPE: "urn:schemas-denon-com:device:AiosDevice:1", - ssdp.ATTR_UPNP_FRIENDLY_NAME: "Office", - ssdp.ATTR_UPNP_MANUFACTURER: "Denon", - ssdp.ATTR_UPNP_MODEL_NAME: "HEOS Drive", - ssdp.ATTR_UPNP_MODEL_NUMBER: "DWSA-10 4.0", - ssdp.ATTR_UPNP_SERIAL: None, - ssdp.ATTR_UPNP_UDN: "uuid:e61de70c-2250-1c22-0080-0005cdf512be", - } + return ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="http://127.0.0.1:60006/upnp/desc/aios_device/aios_device.xml", + upnp={ + ssdp.ATTR_UPNP_DEVICE_TYPE: "urn:schemas-denon-com:device:AiosDevice:1", + ssdp.ATTR_UPNP_FRIENDLY_NAME: "Office", + ssdp.ATTR_UPNP_MANUFACTURER: "Denon", + ssdp.ATTR_UPNP_MODEL_NAME: "HEOS Drive", + ssdp.ATTR_UPNP_MODEL_NUMBER: "DWSA-10 4.0", + ssdp.ATTR_UPNP_SERIAL: None, + ssdp.ATTR_UPNP_UDN: "uuid:e61de70c-2250-1c22-0080-0005cdf512be", + }, + ) @pytest.fixture(name="quick_selects") diff --git a/tests/components/heos/test_config_flow.py b/tests/components/heos/test_config_flow.py index 76ff06e2a9678..d1d940671b803 100644 --- a/tests/components/heos/test_config_flow.py +++ b/tests/components/heos/test_config_flow.py @@ -79,7 +79,9 @@ async def test_create_entry_when_friendly_name_valid(hass, controller): assert DATA_DISCOVERED_HOSTS not in hass.data -async def test_discovery_shows_create_form(hass, controller, discovery_data): +async def test_discovery_shows_create_form( + hass, controller, discovery_data: ssdp.SsdpServiceInfo +): """Test discovery shows form to confirm setup and subsequent abort.""" await hass.config_entries.flow.async_init( @@ -91,9 +93,9 @@ async def test_discovery_shows_create_form(hass, controller, discovery_data): assert len(flows_in_progress) == 1 assert hass.data[DATA_DISCOVERED_HOSTS] == {"Office (127.0.0.1)": "127.0.0.1"} - port = urlparse(discovery_data[ssdp.ATTR_SSDP_LOCATION]).port - discovery_data[ssdp.ATTR_SSDP_LOCATION] = f"http://127.0.0.2:{port}/" - discovery_data[ssdp.ATTR_UPNP_FRIENDLY_NAME] = "Bedroom" + port = urlparse(discovery_data.ssdp_location).port + discovery_data.ssdp_location = f"http://127.0.0.2:{port}/" + discovery_data.upnp[ssdp.ATTR_UPNP_FRIENDLY_NAME] = "Bedroom" await hass.config_entries.flow.async_init( heos.DOMAIN, context={"source": SOURCE_SSDP}, data=discovery_data @@ -109,7 +111,7 @@ async def test_discovery_shows_create_form(hass, controller, discovery_data): async def test_discovery_flow_aborts_already_setup( - hass, controller, discovery_data, config_entry + hass, controller, discovery_data: ssdp.SsdpServiceInfo, config_entry ): """Test discovery flow aborts when entry already setup.""" config_entry.add_to_hass(hass) @@ -120,12 +122,14 @@ async def test_discovery_flow_aborts_already_setup( assert result["reason"] == "single_instance_allowed" -async def test_discovery_sets_the_unique_id(hass, controller, discovery_data): +async def test_discovery_sets_the_unique_id( + hass, controller, discovery_data: ssdp.SsdpServiceInfo +): """Test discovery sets the unique id.""" - port = urlparse(discovery_data[ssdp.ATTR_SSDP_LOCATION]).port - discovery_data[ssdp.ATTR_SSDP_LOCATION] = f"http://127.0.0.2:{port}/" - discovery_data[ssdp.ATTR_UPNP_FRIENDLY_NAME] = "Bedroom" + port = urlparse(discovery_data.ssdp_location).port + discovery_data.ssdp_location = f"http://127.0.0.2:{port}/" + discovery_data.upnp[ssdp.ATTR_UPNP_FRIENDLY_NAME] = "Bedroom" await hass.config_entries.flow.async_init( heos.DOMAIN, context={"source": SOURCE_SSDP}, data=discovery_data From f5547bd5cecd55274f7b4d20d02ff52d5ff8add9 Mon Sep 17 00:00:00 2001 From: epenet Date: Thu, 25 Nov 2021 09:49:31 +0000 Subject: [PATCH 04/15] Update isy994 --- tests/components/isy994/test_config_flow.py | 84 +++++++++++++-------- 1 file changed, 54 insertions(+), 30 deletions(-) diff --git a/tests/components/isy994/test_config_flow.py b/tests/components/isy994/test_config_flow.py index c28534543274d..e9a4c5dc4fb3c 100644 --- a/tests/components/isy994/test_config_flow.py +++ b/tests/components/isy994/test_config_flow.py @@ -326,11 +326,15 @@ async def test_form_ssdp_already_configured(hass: HomeAssistant) -> None: result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": SOURCE_SSDP}, - data={ - ssdp.ATTR_SSDP_LOCATION: f"http://{MOCK_HOSTNAME}{ISY_URL_POSTFIX}", - ssdp.ATTR_UPNP_FRIENDLY_NAME: "myisy", - ssdp.ATTR_UPNP_UDN: f"{UDN_UUID_PREFIX}{MOCK_UUID}", - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location=f"http://{MOCK_HOSTNAME}{ISY_URL_POSTFIX}", + upnp={ + ssdp.ATTR_UPNP_FRIENDLY_NAME: "myisy", + ssdp.ATTR_UPNP_UDN: f"{UDN_UUID_PREFIX}{MOCK_UUID}", + }, + ), ) assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT @@ -341,11 +345,15 @@ async def test_form_ssdp(hass: HomeAssistant): result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": SOURCE_SSDP}, - data={ - ssdp.ATTR_SSDP_LOCATION: f"http://{MOCK_HOSTNAME}{ISY_URL_POSTFIX}", - ssdp.ATTR_UPNP_FRIENDLY_NAME: "myisy", - ssdp.ATTR_UPNP_UDN: f"{UDN_UUID_PREFIX}{MOCK_UUID}", - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location=f"http://{MOCK_HOSTNAME}{ISY_URL_POSTFIX}", + upnp={ + ssdp.ATTR_UPNP_FRIENDLY_NAME: "myisy", + ssdp.ATTR_UPNP_UDN: f"{UDN_UUID_PREFIX}{MOCK_UUID}", + }, + ), ) assert result["type"] == data_entry_flow.RESULT_TYPE_FORM assert result["step_id"] == "user" @@ -385,11 +393,15 @@ async def test_form_ssdp_existing_entry(hass: HomeAssistant): result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": SOURCE_SSDP}, - data={ - ssdp.ATTR_SSDP_LOCATION: f"http://3.3.3.3{ISY_URL_POSTFIX}", - ssdp.ATTR_UPNP_FRIENDLY_NAME: "myisy", - ssdp.ATTR_UPNP_UDN: f"{UDN_UUID_PREFIX}{MOCK_UUID}", - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location=f"http://3.3.3.3{ISY_URL_POSTFIX}", + upnp={ + ssdp.ATTR_UPNP_FRIENDLY_NAME: "myisy", + ssdp.ATTR_UPNP_UDN: f"{UDN_UUID_PREFIX}{MOCK_UUID}", + }, + ), ) await hass.async_block_till_done() @@ -412,11 +424,15 @@ async def test_form_ssdp_existing_entry_with_no_port(hass: HomeAssistant): result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": SOURCE_SSDP}, - data={ - ssdp.ATTR_SSDP_LOCATION: f"http://3.3.3.3/{ISY_URL_POSTFIX}", - ssdp.ATTR_UPNP_FRIENDLY_NAME: "myisy", - ssdp.ATTR_UPNP_UDN: f"{UDN_UUID_PREFIX}{MOCK_UUID}", - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location=f"http://3.3.3.3/{ISY_URL_POSTFIX}", + upnp={ + ssdp.ATTR_UPNP_FRIENDLY_NAME: "myisy", + ssdp.ATTR_UPNP_UDN: f"{UDN_UUID_PREFIX}{MOCK_UUID}", + }, + ), ) await hass.async_block_till_done() @@ -439,11 +455,15 @@ async def test_form_ssdp_existing_entry_with_alternate_port(hass: HomeAssistant) result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": SOURCE_SSDP}, - data={ - ssdp.ATTR_SSDP_LOCATION: f"http://3.3.3.3:1443/{ISY_URL_POSTFIX}", - ssdp.ATTR_UPNP_FRIENDLY_NAME: "myisy", - ssdp.ATTR_UPNP_UDN: f"{UDN_UUID_PREFIX}{MOCK_UUID}", - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location=f"http://3.3.3.3:1443/{ISY_URL_POSTFIX}", + upnp={ + ssdp.ATTR_UPNP_FRIENDLY_NAME: "myisy", + ssdp.ATTR_UPNP_UDN: f"{UDN_UUID_PREFIX}{MOCK_UUID}", + }, + ), ) await hass.async_block_till_done() @@ -466,11 +486,15 @@ async def test_form_ssdp_existing_entry_no_port_https(hass: HomeAssistant): result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": SOURCE_SSDP}, - data={ - ssdp.ATTR_SSDP_LOCATION: f"https://3.3.3.3/{ISY_URL_POSTFIX}", - ssdp.ATTR_UPNP_FRIENDLY_NAME: "myisy", - ssdp.ATTR_UPNP_UDN: f"{UDN_UUID_PREFIX}{MOCK_UUID}", - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location=f"https://3.3.3.3/{ISY_URL_POSTFIX}", + upnp={ + ssdp.ATTR_UPNP_FRIENDLY_NAME: "myisy", + ssdp.ATTR_UPNP_UDN: f"{UDN_UUID_PREFIX}{MOCK_UUID}", + }, + ), ) await hass.async_block_till_done() From 04bd153687d7aa3ae8ab517fecfa53b6d11d989a Mon Sep 17 00:00:00 2001 From: epenet Date: Thu, 25 Nov 2021 09:49:40 +0000 Subject: [PATCH 05/15] Update nanoleaf --- tests/components/nanoleaf/test_config_flow.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/tests/components/nanoleaf/test_config_flow.py b/tests/components/nanoleaf/test_config_flow.py index 9faf48b625cd1..5c41636b188ff 100644 --- a/tests/components/nanoleaf/test_config_flow.py +++ b/tests/components/nanoleaf/test_config_flow.py @@ -7,7 +7,7 @@ import pytest from homeassistant import config_entries -from homeassistant.components import zeroconf +from homeassistant.components import ssdp, zeroconf from homeassistant.components.nanoleaf.const import DOMAIN from homeassistant.const import CONF_HOST, CONF_TOKEN from homeassistant.core import HomeAssistant @@ -462,11 +462,16 @@ async def test_ssdp_discovery(hass: HomeAssistant) -> None: result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_SSDP}, - data={ - "_host": TEST_HOST, - "nl-devicename": TEST_NAME, - "nl-deviceid": TEST_DEVICE_ID, - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="mock_location", + upnp={ + "_host": TEST_HOST, + "nl-devicename": TEST_NAME, + "nl-deviceid": TEST_DEVICE_ID, + }, + ), ) assert result["type"] == "form" From 37a5de3bd816948b0bacbb4cc5a504981eb71912 Mon Sep 17 00:00:00 2001 From: epenet Date: Thu, 25 Nov 2021 09:49:48 +0000 Subject: [PATCH 06/15] Update octoprint --- .../components/octoprint/test_config_flow.py | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/tests/components/octoprint/test_config_flow.py b/tests/components/octoprint/test_config_flow.py index b55d43fda9eb1..654a6e9cee687 100644 --- a/tests/components/octoprint/test_config_flow.py +++ b/tests/components/octoprint/test_config_flow.py @@ -4,7 +4,7 @@ from pyoctoprintapi import ApiError, DiscoverySettings from homeassistant import config_entries, data_entry_flow -from homeassistant.components import zeroconf +from homeassistant.components import ssdp, zeroconf from homeassistant.components.octoprint.const import DOMAIN from homeassistant.core import HomeAssistant @@ -235,11 +235,16 @@ async def test_show_ssdp_form(hass: HomeAssistant) -> None: result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_SSDP}, - data={ - "presentationURL": "http://192.168.1.123:80/discovery/device.xml", - "port": 80, - "UDN": "uuid:83747482", - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="mock_location", + upnp={ + "presentationURL": "http://192.168.1.123:80/discovery/device.xml", + "port": 80, + "UDN": "uuid:83747482", + }, + ), ) assert result["type"] == "form" assert not result["errors"] @@ -512,11 +517,16 @@ async def test_duplicate_ssdp_ignored(hass: HomeAssistant) -> None: result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_SSDP}, - data={ - "presentationURL": "http://192.168.1.123:80/discovery/device.xml", - "port": 80, - "UDN": "uuid:83747482", - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="mock_location", + upnp={ + "presentationURL": "http://192.168.1.123:80/discovery/device.xml", + "port": 80, + "UDN": "uuid:83747482", + }, + ), ) assert result["type"] == "abort" assert result["reason"] == "already_configured" From 7226b47df74db84ea1624adee6083e1acbd7d820 Mon Sep 17 00:00:00 2001 From: epenet Date: Thu, 25 Nov 2021 09:49:56 +0000 Subject: [PATCH 07/15] Update roku --- tests/components/roku/__init__.py | 22 +++++++++++----------- tests/components/roku/test_config_flow.py | 8 ++++---- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/tests/components/roku/__init__.py b/tests/components/roku/__init__.py index ece58de763a0f..5ae81eb7b72c5 100644 --- a/tests/components/roku/__init__.py +++ b/tests/components/roku/__init__.py @@ -3,13 +3,9 @@ import re from socket import gaierror as SocketGIAError -from homeassistant.components import zeroconf +from homeassistant.components import ssdp, zeroconf from homeassistant.components.roku.const import DOMAIN -from homeassistant.components.ssdp import ( - ATTR_SSDP_LOCATION, - ATTR_UPNP_FRIENDLY_NAME, - ATTR_UPNP_SERIAL, -) +from homeassistant.components.ssdp import ATTR_UPNP_FRIENDLY_NAME, ATTR_UPNP_SERIAL from homeassistant.const import CONF_HOST from homeassistant.core import HomeAssistant @@ -24,11 +20,15 @@ UPNP_FRIENDLY_NAME = "My Roku 3" UPNP_SERIAL = "1GU48T017973" -MOCK_SSDP_DISCOVERY_INFO = { - ATTR_SSDP_LOCATION: SSDP_LOCATION, - ATTR_UPNP_FRIENDLY_NAME: UPNP_FRIENDLY_NAME, - ATTR_UPNP_SERIAL: UPNP_SERIAL, -} +MOCK_SSDP_DISCOVERY_INFO = ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location=SSDP_LOCATION, + upnp={ + ATTR_UPNP_FRIENDLY_NAME: UPNP_FRIENDLY_NAME, + ATTR_UPNP_SERIAL: UPNP_SERIAL, + }, +) HOMEKIT_HOST = "192.168.1.161" diff --git a/tests/components/roku/test_config_flow.py b/tests/components/roku/test_config_flow.py index 768f42548c0ed..459c90f536a42 100644 --- a/tests/components/roku/test_config_flow.py +++ b/tests/components/roku/test_config_flow.py @@ -48,7 +48,7 @@ async def test_duplicate_error( assert result["type"] == RESULT_TYPE_ABORT assert result["reason"] == "already_configured" - discovery_info = MOCK_SSDP_DISCOVERY_INFO.copy() + discovery_info = dataclasses.replace(MOCK_SSDP_DISCOVERY_INFO) result = await hass.config_entries.flow.async_init( DOMAIN, context={CONF_SOURCE: SOURCE_SSDP}, data=discovery_info ) @@ -216,7 +216,7 @@ async def test_ssdp_cannot_connect( """Test we abort SSDP flow on connection error.""" mock_connection(aioclient_mock, error=True) - discovery_info = MOCK_SSDP_DISCOVERY_INFO.copy() + discovery_info = dataclasses.replace(MOCK_SSDP_DISCOVERY_INFO) result = await hass.config_entries.flow.async_init( DOMAIN, context={CONF_SOURCE: SOURCE_SSDP}, @@ -231,7 +231,7 @@ async def test_ssdp_unknown_error( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker ) -> None: """Test we abort SSDP flow on unknown error.""" - discovery_info = MOCK_SSDP_DISCOVERY_INFO.copy() + discovery_info = dataclasses.replace(MOCK_SSDP_DISCOVERY_INFO) with patch( "homeassistant.components.roku.config_flow.Roku.update", side_effect=Exception, @@ -252,7 +252,7 @@ async def test_ssdp_discovery( """Test the SSDP discovery flow.""" mock_connection(aioclient_mock) - discovery_info = MOCK_SSDP_DISCOVERY_INFO.copy() + discovery_info = dataclasses.replace(MOCK_SSDP_DISCOVERY_INFO) result = await hass.config_entries.flow.async_init( DOMAIN, context={CONF_SOURCE: SOURCE_SSDP}, data=discovery_info ) From e05621d526f8450c463fcaddc17f7c11ff3f3204 Mon Sep 17 00:00:00 2001 From: epenet Date: Thu, 25 Nov 2021 09:50:03 +0000 Subject: [PATCH 08/15] Update songpal --- tests/components/songpal/test_config_flow.py | 28 ++++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/tests/components/songpal/test_config_flow.py b/tests/components/songpal/test_config_flow.py index a1751bca676c2..4d58639a1d05a 100644 --- a/tests/components/songpal/test_config_flow.py +++ b/tests/components/songpal/test_config_flow.py @@ -1,5 +1,6 @@ """Test the songpal config flow.""" import copy +import dataclasses from unittest.mock import patch from homeassistant.components import ssdp @@ -26,17 +27,21 @@ UDN = "uuid:1234" -SSDP_DATA = { - ssdp.ATTR_UPNP_UDN: UDN, - ssdp.ATTR_UPNP_FRIENDLY_NAME: FRIENDLY_NAME, - ssdp.ATTR_SSDP_LOCATION: f"http://{HOST}:52323/dmr.xml", - "X_ScalarWebAPI_DeviceInfo": { - "X_ScalarWebAPI_BaseURL": ENDPOINT, - "X_ScalarWebAPI_ServiceList": { - "X_ScalarWebAPI_ServiceType": ["guide", "system", "audio", "avContent"], +SSDP_DATA = ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location=f"http://{HOST}:52323/dmr.xml", + upnp={ + ssdp.ATTR_UPNP_UDN: UDN, + ssdp.ATTR_UPNP_FRIENDLY_NAME: FRIENDLY_NAME, + "X_ScalarWebAPI_DeviceInfo": { + "X_ScalarWebAPI_BaseURL": ENDPOINT, + "X_ScalarWebAPI_ServiceList": { + "X_ScalarWebAPI_ServiceType": ["guide", "system", "audio", "avContent"], + }, }, }, -} +) def _flow_next(hass, flow_id): @@ -150,8 +155,9 @@ def _create_mock_config_entry(hass): async def test_ssdp_bravia(hass): """Test discovering a bravia TV.""" - ssdp_data = copy.deepcopy(SSDP_DATA) - ssdp_data["X_ScalarWebAPI_DeviceInfo"]["X_ScalarWebAPI_ServiceList"][ + ssdp_data = dataclasses.replace(SSDP_DATA) + ssdp_data.upnp = copy.deepcopy(ssdp_data.upnp) + ssdp_data.upnp["X_ScalarWebAPI_DeviceInfo"]["X_ScalarWebAPI_ServiceList"][ "X_ScalarWebAPI_ServiceType" ].append("videoScreen") result = await hass.config_entries.flow.async_init( From 0ec6b8898072f27ccc20b14561be88d1176dc52d Mon Sep 17 00:00:00 2001 From: epenet Date: Thu, 25 Nov 2021 09:50:11 +0000 Subject: [PATCH 09/15] Update synology_dsm --- .../synology_dsm/test_config_flow.py | 56 ++++++++++++------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/tests/components/synology_dsm/test_config_flow.py b/tests/components/synology_dsm/test_config_flow.py index 435ed3bdb4b35..3907f9c42eca3 100644 --- a/tests/components/synology_dsm/test_config_flow.py +++ b/tests/components/synology_dsm/test_config_flow.py @@ -387,11 +387,15 @@ async def test_form_ssdp(hass: HomeAssistant, service: MagicMock): result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": SOURCE_SSDP}, - data={ - ssdp.ATTR_SSDP_LOCATION: "http://192.168.1.5:5000", - ssdp.ATTR_UPNP_FRIENDLY_NAME: "mydsm", - ssdp.ATTR_UPNP_SERIAL: "001132XXXX99", # MAC address, but SSDP does not have `-` - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="http://192.168.1.5:5000", + upnp={ + ssdp.ATTR_UPNP_FRIENDLY_NAME: "mydsm", + ssdp.ATTR_UPNP_SERIAL: "001132XXXX99", # MAC address, but SSDP does not have `-` + }, + ), ) assert result["type"] == data_entry_flow.RESULT_TYPE_FORM assert result["step_id"] == "link" @@ -434,11 +438,15 @@ async def test_reconfig_ssdp(hass: HomeAssistant, service: MagicMock): result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": SOURCE_SSDP}, - data={ - ssdp.ATTR_SSDP_LOCATION: "http://192.168.1.5:5000", - ssdp.ATTR_UPNP_FRIENDLY_NAME: "mydsm", - ssdp.ATTR_UPNP_SERIAL: "001132XXXX59", # Existing in MACS[0], but SSDP does not have `-` - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="http://192.168.1.5:5000", + upnp={ + ssdp.ATTR_UPNP_FRIENDLY_NAME: "mydsm", + ssdp.ATTR_UPNP_SERIAL: "001132XXXX59", # Existing in MACS[0], but SSDP does not have `-` + }, + ), ) assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT assert result["reason"] == "reconfigure_successful" @@ -462,11 +470,15 @@ async def test_skip_reconfig_ssdp(hass: HomeAssistant, service: MagicMock): result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": SOURCE_SSDP}, - data={ - ssdp.ATTR_SSDP_LOCATION: "http://192.168.1.5:5000", - ssdp.ATTR_UPNP_FRIENDLY_NAME: "mydsm", - ssdp.ATTR_UPNP_SERIAL: "001132XXXX59", # Existing in MACS[0], but SSDP does not have `-` - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="http://192.168.1.5:5000", + upnp={ + ssdp.ATTR_UPNP_FRIENDLY_NAME: "mydsm", + ssdp.ATTR_UPNP_SERIAL: "001132XXXX59", # Existing in MACS[0], but SSDP does not have `-` + }, + ), ) assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT assert result["reason"] == "already_configured" @@ -490,11 +502,15 @@ async def test_existing_ssdp(hass: HomeAssistant, service: MagicMock): result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": SOURCE_SSDP}, - data={ - ssdp.ATTR_SSDP_LOCATION: "http://192.168.1.5:5000", - ssdp.ATTR_UPNP_FRIENDLY_NAME: "mydsm", - ssdp.ATTR_UPNP_SERIAL: "001132XXXX59", # Existing in MACS[0], but SSDP does not have `-` - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="http://192.168.1.5:5000", + upnp={ + ssdp.ATTR_UPNP_FRIENDLY_NAME: "mydsm", + ssdp.ATTR_UPNP_SERIAL: "001132XXXX59", # Existing in MACS[0], but SSDP does not have `-` + }, + ), ) assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT assert result["reason"] == "already_configured" From 3b9a0111c3d5ef809116fe66d4b5be4f16cf9cc3 Mon Sep 17 00:00:00 2001 From: epenet Date: Thu, 25 Nov 2021 09:50:18 +0000 Subject: [PATCH 10/15] Update unifi --- tests/components/unifi/test_config_flow.py | 65 ++++++++++++++-------- 1 file changed, 41 insertions(+), 24 deletions(-) diff --git a/tests/components/unifi/test_config_flow.py b/tests/components/unifi/test_config_flow.py index 24628fae60e12..151baee617657 100644 --- a/tests/components/unifi/test_config_flow.py +++ b/tests/components/unifi/test_config_flow.py @@ -6,6 +6,7 @@ import aiounifi from homeassistant import config_entries, data_entry_flow +from homeassistant.components import ssdp from homeassistant.components.unifi.config_flow import async_discover_unifi from homeassistant.components.unifi.const import ( CONF_ALLOW_BANDWIDTH_SENSORS, @@ -547,12 +548,16 @@ async def test_form_ssdp(hass): result = await hass.config_entries.flow.async_init( UNIFI_DOMAIN, context={"source": config_entries.SOURCE_SSDP}, - data={ - "friendlyName": "UniFi Dream Machine", - "modelDescription": "UniFi Dream Machine Pro", - "ssdp_location": "http://192.168.208.1:41417/rootDesc.xml", - "serialNumber": "e0:63:da:20:14:a9", - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="http://192.168.208.1:41417/rootDesc.xml", + upnp={ + "friendlyName": "UniFi Dream Machine", + "modelDescription": "UniFi Dream Machine Pro", + "serialNumber": "e0:63:da:20:14:a9", + }, + ), ) assert result["type"] == "form" assert result["step_id"] == "user" @@ -579,12 +584,16 @@ async def test_form_ssdp_aborts_if_host_already_exists(hass): result = await hass.config_entries.flow.async_init( UNIFI_DOMAIN, context={"source": config_entries.SOURCE_SSDP}, - data={ - "friendlyName": "UniFi Dream Machine", - "modelDescription": "UniFi Dream Machine Pro", - "ssdp_location": "http://192.168.208.1:41417/rootDesc.xml", - "serialNumber": "e0:63:da:20:14:a9", - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="http://192.168.208.1:41417/rootDesc.xml", + upnp={ + "friendlyName": "UniFi Dream Machine", + "modelDescription": "UniFi Dream Machine Pro", + "serialNumber": "e0:63:da:20:14:a9", + }, + ), ) assert result["type"] == "abort" assert result["reason"] == "already_configured" @@ -602,12 +611,16 @@ async def test_form_ssdp_aborts_if_serial_already_exists(hass): result = await hass.config_entries.flow.async_init( UNIFI_DOMAIN, context={"source": config_entries.SOURCE_SSDP}, - data={ - "friendlyName": "UniFi Dream Machine", - "modelDescription": "UniFi Dream Machine Pro", - "ssdp_location": "http://192.168.208.1:41417/rootDesc.xml", - "serialNumber": "e0:63:da:20:14:a9", - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="http://192.168.208.1:41417/rootDesc.xml", + upnp={ + "friendlyName": "UniFi Dream Machine", + "modelDescription": "UniFi Dream Machine Pro", + "serialNumber": "e0:63:da:20:14:a9", + }, + ), ) assert result["type"] == "abort" assert result["reason"] == "already_configured" @@ -625,12 +638,16 @@ async def test_form_ssdp_gets_form_with_ignored_entry(hass): result = await hass.config_entries.flow.async_init( UNIFI_DOMAIN, context={"source": config_entries.SOURCE_SSDP}, - data={ - "friendlyName": "UniFi Dream Machine New", - "modelDescription": "UniFi Dream Machine Pro", - "ssdp_location": "http://1.2.3.4:41417/rootDesc.xml", - "serialNumber": "e0:63:da:20:14:a9", - }, + data=ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="http://1.2.3.4:41417/rootDesc.xml", + upnp={ + "friendlyName": "UniFi Dream Machine New", + "modelDescription": "UniFi Dream Machine Pro", + "serialNumber": "e0:63:da:20:14:a9", + }, + ), ) assert result["type"] == "form" assert result["step_id"] == "user" From 42ddf36e1b76b794a485f56e24812ad31337f53a Mon Sep 17 00:00:00 2001 From: epenet Date: Thu, 25 Nov 2021 09:50:26 +0000 Subject: [PATCH 11/15] Update yeelight --- tests/components/yeelight/test_config_flow.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/tests/components/yeelight/test_config_flow.py b/tests/components/yeelight/test_config_flow.py index 8628e9620e9e5..797af5b6153b5 100644 --- a/tests/components/yeelight/test_config_flow.py +++ b/tests/components/yeelight/test_config_flow.py @@ -4,7 +4,7 @@ import pytest from homeassistant import config_entries -from homeassistant.components import dhcp, zeroconf +from homeassistant.components import dhcp, ssdp, zeroconf from homeassistant.components.yeelight.config_flow import MODEL_UNKNOWN, CannotConnect from homeassistant.components.yeelight.const import ( CONF_DETECTED_MODEL, @@ -52,6 +52,13 @@ CONF_NIGHTLIGHT_SWITCH: DEFAULT_NIGHTLIGHT_SWITCH, } +SSDP_INFO = ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="mock_location", + upnp=CAPABILITIES, +) + async def test_discovery(hass: HomeAssistant): """Test setting up discovery.""" @@ -627,7 +634,7 @@ async def test_discovered_ssdp(hass): f"{MODULE_CONFIG_FLOW}.AsyncBulb", return_value=mocked_bulb ): result = await hass.config_entries.flow.async_init( - DOMAIN, context={"source": config_entries.SOURCE_SSDP}, data=CAPABILITIES + DOMAIN, context={"source": config_entries.SOURCE_SSDP}, data=SSDP_INFO ) await hass.async_block_till_done() @@ -656,7 +663,7 @@ async def test_discovered_ssdp(hass): f"{MODULE_CONFIG_FLOW}.AsyncBulb", return_value=mocked_bulb ): result = await hass.config_entries.flow.async_init( - DOMAIN, context={"source": config_entries.SOURCE_SSDP}, data=CAPABILITIES + DOMAIN, context={"source": config_entries.SOURCE_SSDP}, data=SSDP_INFO ) await hass.async_block_till_done() @@ -719,7 +726,7 @@ async def test_discovered_zeroconf(hass): result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_SSDP}, - data=CAPABILITIES, + data=SSDP_INFO, ) await hass.async_block_till_done() From 6beac6c744da730c069880f2e207dd4dbc9a7951 Mon Sep 17 00:00:00 2001 From: epenet Date: Thu, 25 Nov 2021 09:54:19 +0000 Subject: [PATCH 12/15] Revert "Update axis" (optional location) This reverts commit ffe92d093e9b807f43faebf3a53395758969aa7f. --- tests/components/axis/test_config_flow.py | 117 +++++++++------------- 1 file changed, 46 insertions(+), 71 deletions(-) diff --git a/tests/components/axis/test_config_flow.py b/tests/components/axis/test_config_flow.py index 840e792ec1355..2261a462113e3 100644 --- a/tests/components/axis/test_config_flow.py +++ b/tests/components/axis/test_config_flow.py @@ -5,7 +5,7 @@ import respx from homeassistant import data_entry_flow -from homeassistant.components import dhcp, ssdp, zeroconf +from homeassistant.components import dhcp, zeroconf from homeassistant.components.axis import config_flow from homeassistant.components.axis.const import ( CONF_EVENTS, @@ -263,37 +263,32 @@ async def test_reauth_flow_update_configuration(hass): ), ( SOURCE_SSDP, - ssdp.SsdpServiceInfo( - ssdp_usn="mock_usn", - ssdp_st="mock_st", - ssdp_location="mock_location", - upnp={ - "st": "urn:axis-com:service:BasicService:1", - "usn": f"uuid:Upnp-BasicDevice-1_0-{MAC}::urn:axis-com:service:BasicService:1", - "ext": "", - "server": "Linux/4.14.173-axis8, UPnP/1.0, Portable SDK for UPnP devices/1.8.7", - "deviceType": "urn:schemas-upnp-org:device:Basic:1", - "friendlyName": f"AXIS M1065-LW - {MAC}", - "manufacturer": "AXIS", - "manufacturerURL": "http://www.axis.com/", - "modelDescription": "AXIS M1065-LW Network Camera", - "modelName": "AXIS M1065-LW", - "modelNumber": "M1065-LW", - "modelURL": "http://www.axis.com/", - "serialNumber": MAC, - "UDN": f"uuid:Upnp-BasicDevice-1_0-{MAC}", - "serviceList": { - "service": { - "serviceType": "urn:axis-com:service:BasicService:1", - "serviceId": "urn:axis-com:serviceId:BasicServiceId", - "controlURL": "/upnp/control/BasicServiceId", - "eventSubURL": "/upnp/event/BasicServiceId", - "SCPDURL": "/scpd_basic.xml", - } - }, - "presentationURL": f"http://{DEFAULT_HOST}:80/", + { + "st": "urn:axis-com:service:BasicService:1", + "usn": f"uuid:Upnp-BasicDevice-1_0-{MAC}::urn:axis-com:service:BasicService:1", + "ext": "", + "server": "Linux/4.14.173-axis8, UPnP/1.0, Portable SDK for UPnP devices/1.8.7", + "deviceType": "urn:schemas-upnp-org:device:Basic:1", + "friendlyName": f"AXIS M1065-LW - {MAC}", + "manufacturer": "AXIS", + "manufacturerURL": "http://www.axis.com/", + "modelDescription": "AXIS M1065-LW Network Camera", + "modelName": "AXIS M1065-LW", + "modelNumber": "M1065-LW", + "modelURL": "http://www.axis.com/", + "serialNumber": MAC, + "UDN": f"uuid:Upnp-BasicDevice-1_0-{MAC}", + "serviceList": { + "service": { + "serviceType": "urn:axis-com:service:BasicService:1", + "serviceId": "urn:axis-com:serviceId:BasicServiceId", + "controlURL": "/upnp/control/BasicServiceId", + "eventSubURL": "/upnp/event/BasicServiceId", + "SCPDURL": "/scpd_basic.xml", + } }, - ), + "presentationURL": f"http://{DEFAULT_HOST}:80/", + }, ), ( SOURCE_ZEROCONF, @@ -359,16 +354,11 @@ async def test_discovery_flow(hass, source: str, discovery_info: dict): ), ( SOURCE_SSDP, - ssdp.SsdpServiceInfo( - ssdp_usn="mock_usn", - ssdp_st="mock_st", - ssdp_location="mock_location", - upnp={ - "friendlyName": f"AXIS M1065-LW - {MAC}", - "serialNumber": MAC, - "presentationURL": f"http://{DEFAULT_HOST}:80/", - }, - ), + { + "friendlyName": f"AXIS M1065-LW - {MAC}", + "serialNumber": MAC, + "presentationURL": f"http://{DEFAULT_HOST}:80/", + }, ), ( SOURCE_ZEROCONF, @@ -413,16 +403,11 @@ async def test_discovered_device_already_configured( ), ( SOURCE_SSDP, - ssdp.SsdpServiceInfo( - ssdp_usn="mock_usn", - ssdp_st="mock_st", - ssdp_location="mock_location", - upnp={ - "friendlyName": f"AXIS M1065-LW - {MAC}", - "serialNumber": MAC, - "presentationURL": "http://2.3.4.5:8080/", - }, - ), + { + "friendlyName": f"AXIS M1065-LW - {MAC}", + "serialNumber": MAC, + "presentationURL": "http://2.3.4.5:8080/", + }, 8080, ), ( @@ -489,16 +474,11 @@ async def test_discovery_flow_updated_configuration( ), ( SOURCE_SSDP, - ssdp.SsdpServiceInfo( - ssdp_usn="mock_usn", - ssdp_st="mock_st", - ssdp_location="mock_location", - upnp={ - "friendlyName": "", - "serialNumber": "01234567890", - "presentationURL": "", - }, - ), + { + "friendlyName": "", + "serialNumber": "01234567890", + "presentationURL": "", + }, ), ( SOURCE_ZEROCONF, @@ -538,16 +518,11 @@ async def test_discovery_flow_ignore_non_axis_device( ), ( SOURCE_SSDP, - ssdp.SsdpServiceInfo( - ssdp_usn="mock_usn", - ssdp_st="mock_st", - ssdp_location="mock_location", - upnp={ - "friendlyName": f"AXIS M1065-LW - {MAC}", - "serialNumber": MAC, - "presentationURL": "http://169.254.3.4:80/", - }, - ), + { + "friendlyName": f"AXIS M1065-LW - {MAC}", + "serialNumber": MAC, + "presentationURL": "http://169.254.3.4:80/", + }, ), ( SOURCE_ZEROCONF, From 6425ea9eedd17a74e20ff0f13620c834c2a44255 Mon Sep 17 00:00:00 2001 From: epenet Date: Thu, 25 Nov 2021 09:55:48 +0000 Subject: [PATCH 13/15] Revert "Update nanoleaf" (optional location) This reverts commit 3611fad9a313c68fa5704960a678e632c66fdc2d. --- tests/components/nanoleaf/test_config_flow.py | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/tests/components/nanoleaf/test_config_flow.py b/tests/components/nanoleaf/test_config_flow.py index 5c41636b188ff..9faf48b625cd1 100644 --- a/tests/components/nanoleaf/test_config_flow.py +++ b/tests/components/nanoleaf/test_config_flow.py @@ -7,7 +7,7 @@ import pytest from homeassistant import config_entries -from homeassistant.components import ssdp, zeroconf +from homeassistant.components import zeroconf from homeassistant.components.nanoleaf.const import DOMAIN from homeassistant.const import CONF_HOST, CONF_TOKEN from homeassistant.core import HomeAssistant @@ -462,16 +462,11 @@ async def test_ssdp_discovery(hass: HomeAssistant) -> None: result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_SSDP}, - data=ssdp.SsdpServiceInfo( - ssdp_usn="mock_usn", - ssdp_st="mock_st", - ssdp_location="mock_location", - upnp={ - "_host": TEST_HOST, - "nl-devicename": TEST_NAME, - "nl-deviceid": TEST_DEVICE_ID, - }, - ), + data={ + "_host": TEST_HOST, + "nl-devicename": TEST_NAME, + "nl-deviceid": TEST_DEVICE_ID, + }, ) assert result["type"] == "form" From e8a4ab313b188fcc3bfadbe99376dd49dccbd7bf Mon Sep 17 00:00:00 2001 From: epenet Date: Thu, 25 Nov 2021 09:57:24 +0000 Subject: [PATCH 14/15] Revert "Update octoprint" (optional location) This reverts commit 3bd27ff3bb52d0d2e755e08ac137aa3913cdfa6e. --- .../components/octoprint/test_config_flow.py | 32 +++++++------------ 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/tests/components/octoprint/test_config_flow.py b/tests/components/octoprint/test_config_flow.py index 654a6e9cee687..b55d43fda9eb1 100644 --- a/tests/components/octoprint/test_config_flow.py +++ b/tests/components/octoprint/test_config_flow.py @@ -4,7 +4,7 @@ from pyoctoprintapi import ApiError, DiscoverySettings from homeassistant import config_entries, data_entry_flow -from homeassistant.components import ssdp, zeroconf +from homeassistant.components import zeroconf from homeassistant.components.octoprint.const import DOMAIN from homeassistant.core import HomeAssistant @@ -235,16 +235,11 @@ async def test_show_ssdp_form(hass: HomeAssistant) -> None: result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_SSDP}, - data=ssdp.SsdpServiceInfo( - ssdp_usn="mock_usn", - ssdp_st="mock_st", - ssdp_location="mock_location", - upnp={ - "presentationURL": "http://192.168.1.123:80/discovery/device.xml", - "port": 80, - "UDN": "uuid:83747482", - }, - ), + data={ + "presentationURL": "http://192.168.1.123:80/discovery/device.xml", + "port": 80, + "UDN": "uuid:83747482", + }, ) assert result["type"] == "form" assert not result["errors"] @@ -517,16 +512,11 @@ async def test_duplicate_ssdp_ignored(hass: HomeAssistant) -> None: result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_SSDP}, - data=ssdp.SsdpServiceInfo( - ssdp_usn="mock_usn", - ssdp_st="mock_st", - ssdp_location="mock_location", - upnp={ - "presentationURL": "http://192.168.1.123:80/discovery/device.xml", - "port": 80, - "UDN": "uuid:83747482", - }, - ), + data={ + "presentationURL": "http://192.168.1.123:80/discovery/device.xml", + "port": 80, + "UDN": "uuid:83747482", + }, ) assert result["type"] == "abort" assert result["reason"] == "already_configured" From aaf8814fa5163e2cc8d094c91be3bb65266cfcf5 Mon Sep 17 00:00:00 2001 From: epenet Date: Thu, 25 Nov 2021 09:58:24 +0000 Subject: [PATCH 15/15] Revert "Update yeelight" (optional location) This reverts commit 36e5f48749f2124822d719e52aca2036cc9c821d. --- tests/components/yeelight/test_config_flow.py | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/tests/components/yeelight/test_config_flow.py b/tests/components/yeelight/test_config_flow.py index 797af5b6153b5..8628e9620e9e5 100644 --- a/tests/components/yeelight/test_config_flow.py +++ b/tests/components/yeelight/test_config_flow.py @@ -4,7 +4,7 @@ import pytest from homeassistant import config_entries -from homeassistant.components import dhcp, ssdp, zeroconf +from homeassistant.components import dhcp, zeroconf from homeassistant.components.yeelight.config_flow import MODEL_UNKNOWN, CannotConnect from homeassistant.components.yeelight.const import ( CONF_DETECTED_MODEL, @@ -52,13 +52,6 @@ CONF_NIGHTLIGHT_SWITCH: DEFAULT_NIGHTLIGHT_SWITCH, } -SSDP_INFO = ssdp.SsdpServiceInfo( - ssdp_usn="mock_usn", - ssdp_st="mock_st", - ssdp_location="mock_location", - upnp=CAPABILITIES, -) - async def test_discovery(hass: HomeAssistant): """Test setting up discovery.""" @@ -634,7 +627,7 @@ async def test_discovered_ssdp(hass): f"{MODULE_CONFIG_FLOW}.AsyncBulb", return_value=mocked_bulb ): result = await hass.config_entries.flow.async_init( - DOMAIN, context={"source": config_entries.SOURCE_SSDP}, data=SSDP_INFO + DOMAIN, context={"source": config_entries.SOURCE_SSDP}, data=CAPABILITIES ) await hass.async_block_till_done() @@ -663,7 +656,7 @@ async def test_discovered_ssdp(hass): f"{MODULE_CONFIG_FLOW}.AsyncBulb", return_value=mocked_bulb ): result = await hass.config_entries.flow.async_init( - DOMAIN, context={"source": config_entries.SOURCE_SSDP}, data=SSDP_INFO + DOMAIN, context={"source": config_entries.SOURCE_SSDP}, data=CAPABILITIES ) await hass.async_block_till_done() @@ -726,7 +719,7 @@ async def test_discovered_zeroconf(hass): result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_SSDP}, - data=SSDP_INFO, + data=CAPABILITIES, ) await hass.async_block_till_done()