From 354499c4f1d66cfdb9512236de21a9fc7c469d27 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Mon, 29 Nov 2021 20:56:03 +0000 Subject: [PATCH 1/4] Use dataclass properties in axis discovery --- homeassistant/components/axis/config_flow.py | 22 +++++++++----------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/homeassistant/components/axis/config_flow.py b/homeassistant/components/axis/config_flow.py index 74dbeb0b2c70..afafb7c18927 100644 --- a/homeassistant/components/axis/config_flow.py +++ b/homeassistant/components/axis/config_flow.py @@ -156,21 +156,21 @@ async def async_step_dhcp(self, discovery_info: dhcp.DhcpServiceInfo) -> FlowRes """Prepare configuration for a DHCP discovered Axis device.""" return await self._process_discovered_device( { - CONF_HOST: discovery_info[dhcp.IP_ADDRESS], - CONF_MAC: format_mac(discovery_info[dhcp.MAC_ADDRESS]), - CONF_NAME: discovery_info[dhcp.HOSTNAME], + CONF_HOST: discovery_info.ip, + CONF_MAC: format_mac(discovery_info.macaddress), + CONF_NAME: discovery_info.hostname, CONF_PORT: DEFAULT_PORT, } ) async def async_step_ssdp(self, discovery_info: ssdp.SsdpServiceInfo): """Prepare configuration for a SSDP discovered Axis device.""" - url = urlsplit(discovery_info["presentationURL"]) + url = urlsplit(discovery_info.upnp["presentationURL"]) return await self._process_discovered_device( { CONF_HOST: url.hostname, - CONF_MAC: format_mac(discovery_info["serialNumber"]), - CONF_NAME: f"{discovery_info['friendlyName']}", + CONF_MAC: format_mac(discovery_info.upnp["serialNumber"]), + CONF_NAME: f"{discovery_info.upnp['friendlyName']}", CONF_PORT: url.port, } ) @@ -181,12 +181,10 @@ async def async_step_zeroconf( """Prepare configuration for a Zeroconf discovered Axis device.""" return await self._process_discovered_device( { - CONF_HOST: discovery_info[zeroconf.ATTR_HOST], - CONF_MAC: format_mac( - discovery_info[zeroconf.ATTR_PROPERTIES]["macaddress"] - ), - CONF_NAME: discovery_info[zeroconf.ATTR_NAME].split(".", 1)[0], - CONF_PORT: discovery_info[zeroconf.ATTR_PORT], + CONF_HOST: discovery_info.host, + CONF_MAC: format_mac(discovery_info.properties["macaddress"]), + CONF_NAME: discovery_info.name.split(".", 1)[0], + CONF_PORT: discovery_info.port, } ) From a4c9f57aaa792102aceb78631768ced133392913 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Mon, 29 Nov 2021 21:11:36 +0000 Subject: [PATCH 2/4] Adjust tests --- tests/components/axis/test_device.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/tests/components/axis/test_device.py b/tests/components/axis/test_device.py index 2d2ba83f633b..d43845e01adb 100644 --- a/tests/components/axis/test_device.py +++ b/tests/components/axis/test_device.py @@ -8,7 +8,7 @@ import pytest import respx -from homeassistant.components import axis +from homeassistant.components import axis, zeroconf from homeassistant.components.axis.const import ( CONF_EVENTS, CONF_MODEL, @@ -383,12 +383,14 @@ async def test_update_address(hass): mock_default_vapix_requests(respx, "2.3.4.5") await hass.config_entries.flow.async_init( AXIS_DOMAIN, - data={ - "host": "2.3.4.5", - "port": 80, - "name": "name", - "properties": {"macaddress": MAC}, - }, + data=zeroconf.ZeroconfServiceInfo( + host="2.3.4.5", + hostname="mock_hostname", + name="name", + port=80, + properties={"macaddress": MAC}, + type="mock_type", + ), context={"source": SOURCE_ZEROCONF}, ) await hass.async_block_till_done() From 75b959ab3e91b639e2c9bd8d5a8d1656643148fb Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Mon, 29 Nov 2021 21:12:23 +0000 Subject: [PATCH 3/4] Add type hint --- homeassistant/components/axis/config_flow.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/axis/config_flow.py b/homeassistant/components/axis/config_flow.py index afafb7c18927..f2d123af460f 100644 --- a/homeassistant/components/axis/config_flow.py +++ b/homeassistant/components/axis/config_flow.py @@ -163,7 +163,7 @@ async def async_step_dhcp(self, discovery_info: dhcp.DhcpServiceInfo) -> FlowRes } ) - async def async_step_ssdp(self, discovery_info: ssdp.SsdpServiceInfo): + async def async_step_ssdp(self, discovery_info: ssdp.SsdpServiceInfo) -> FlowResult: """Prepare configuration for a SSDP discovered Axis device.""" url = urlsplit(discovery_info.upnp["presentationURL"]) return await self._process_discovered_device( From 74ee5139edc326ffb5951e4c779274ab45a2454f Mon Sep 17 00:00:00 2001 From: epenet Date: Tue, 30 Nov 2021 08:08:33 +0000 Subject: [PATCH 4/4] Use ssdp constants --- homeassistant/components/axis/config_flow.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/axis/config_flow.py b/homeassistant/components/axis/config_flow.py index f2d123af460f..a47592fc8770 100644 --- a/homeassistant/components/axis/config_flow.py +++ b/homeassistant/components/axis/config_flow.py @@ -165,12 +165,12 @@ async def async_step_dhcp(self, discovery_info: dhcp.DhcpServiceInfo) -> FlowRes async def async_step_ssdp(self, discovery_info: ssdp.SsdpServiceInfo) -> FlowResult: """Prepare configuration for a SSDP discovered Axis device.""" - url = urlsplit(discovery_info.upnp["presentationURL"]) + url = urlsplit(discovery_info.upnp[ssdp.ATTR_UPNP_PRESENTATION_URL]) return await self._process_discovered_device( { CONF_HOST: url.hostname, - CONF_MAC: format_mac(discovery_info.upnp["serialNumber"]), - CONF_NAME: f"{discovery_info.upnp['friendlyName']}", + CONF_MAC: format_mac(discovery_info.upnp[ssdp.ATTR_UPNP_SERIAL]), + CONF_NAME: f"{discovery_info.upnp[ssdp.ATTR_UPNP_FRIENDLY_NAME]}", CONF_PORT: url.port, } )