diff --git a/homeassistant/components/webostv/config_flow.py b/homeassistant/components/webostv/config_flow.py index 38948da1bdb..10f7686d807 100644 --- a/homeassistant/components/webostv/config_flow.py +++ b/homeassistant/components/webostv/config_flow.py @@ -11,6 +11,7 @@ from homeassistant import config_entries, data_entry_flow from homeassistant.components import ssdp from homeassistant.const import CONF_CLIENT_SECRET, CONF_HOST, CONF_NAME, CONF_UNIQUE_ID from homeassistant.core import callback +from homeassistant.data_entry_flow import FlowResult from homeassistant.helpers import config_validation as cv from . import async_control_connect @@ -116,12 +117,12 @@ class FlowHandler(config_entries.ConfigFlow, domain=DOMAIN): return self.async_show_form(step_id="pairing", errors=errors) - async def async_step_ssdp(self, discovery_info): + async def async_step_ssdp(self, discovery_info: ssdp.SsdpServiceInfo) -> FlowResult: """Handle a flow initialized by discovery.""" - self._host = urlparse(discovery_info[ssdp.ATTR_SSDP_LOCATION]).hostname - self._name = discovery_info[ssdp.ATTR_UPNP_FRIENDLY_NAME] + self._host = urlparse(discovery_info.ssdp_location).hostname + self._name = discovery_info.upnp[ssdp.ATTR_UPNP_FRIENDLY_NAME] - uuid = discovery_info[ssdp.ATTR_UPNP_UDN] + uuid = discovery_info.upnp[ssdp.ATTR_UPNP_UDN] if uuid.startswith("uuid:"): uuid = uuid[5:] await self.async_set_unique_id(uuid) diff --git a/tests/components/webostv/test_config_flow.py b/tests/components/webostv/test_config_flow.py index 6c0bf59e316..da0dd7f6ba5 100644 --- a/tests/components/webostv/test_config_flow.py +++ b/tests/components/webostv/test_config_flow.py @@ -1,4 +1,5 @@ """Test the WebOS Tv config flow.""" +import dataclasses from unittest.mock import Mock, patch from aiowebostv import WebOsTvPairError @@ -31,11 +32,15 @@ MOCK_YAML_CONFIG = { CONF_UNIQUE_ID: "fake-uuid", } -MOCK_DISCOVERY_INFO = { - ssdp.ATTR_SSDP_LOCATION: "http://1.2.3.4", - ssdp.ATTR_UPNP_FRIENDLY_NAME: "LG Webostv", - ssdp.ATTR_UPNP_UDN: "uuid:some-fake-uuid", -} +MOCK_DISCOVERY_INFO = ssdp.SsdpServiceInfo( + ssdp_usn="mock_usn", + ssdp_st="mock_st", + ssdp_location="http://1.2.3.4", + upnp={ + ssdp.ATTR_UPNP_FRIENDLY_NAME: "LG Webostv", + ssdp.ATTR_UPNP_UDN: "uuid:some-fake-uuid", + }, +) async def test_import(hass, client): @@ -250,8 +255,8 @@ async def test_ssdp_not_update_uuid(hass, client): assert client assert entry.unique_id is None - discovery_info = MOCK_DISCOVERY_INFO.copy() - discovery_info.update({ssdp.ATTR_SSDP_LOCATION: "http://1.2.3.5"}) + discovery_info = dataclasses.replace(MOCK_DISCOVERY_INFO) + discovery_info.ssdp_location = "http://1.2.3.5" result2 = await hass.config_entries.flow.async_init( DOMAIN, context={CONF_SOURCE: SOURCE_SSDP}, data=discovery_info