diff --git a/homeassistant/components/roomba/config_flow.py b/homeassistant/components/roomba/config_flow.py index f17eb0a07c0..e1919941068 100644 --- a/homeassistant/components/roomba/config_flow.py +++ b/homeassistant/components/roomba/config_flow.py @@ -8,9 +8,10 @@ from roombapy.getpassword import RoombaPassword import voluptuous as vol from homeassistant import config_entries, core -from homeassistant.components.dhcp import HOSTNAME, IP_ADDRESS +from homeassistant.components import dhcp from homeassistant.const import CONF_DELAY, CONF_HOST, CONF_NAME, CONF_PASSWORD from homeassistant.core import callback +from homeassistant.data_entry_flow import FlowResult from . import CannotConnect, async_connect_or_timeout, async_disconnect_or_timeout from .const import ( @@ -77,15 +78,15 @@ class RoombaConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): """Get the options flow for this handler.""" return OptionsFlowHandler(config_entry) - async def async_step_dhcp(self, discovery_info): + async def async_step_dhcp(self, discovery_info: dhcp.DhcpServiceInfo) -> FlowResult: """Handle dhcp discovery.""" - self._async_abort_entries_match({CONF_HOST: discovery_info[IP_ADDRESS]}) + self._async_abort_entries_match({CONF_HOST: discovery_info[dhcp.IP_ADDRESS]}) - if not discovery_info[HOSTNAME].startswith(("irobot-", "roomba-")): + if not discovery_info[dhcp.HOSTNAME].startswith(("irobot-", "roomba-")): return self.async_abort(reason="not_irobot_device") - self.host = discovery_info[IP_ADDRESS] - self.blid = _async_blid_from_hostname(discovery_info[HOSTNAME]) + self.host = discovery_info[dhcp.IP_ADDRESS] + self.blid = _async_blid_from_hostname(discovery_info[dhcp.HOSTNAME]) await self.async_set_unique_id(self.blid) self._abort_if_unique_id_configured(updates={CONF_HOST: self.host}) diff --git a/tests/components/roomba/test_config_flow.py b/tests/components/roomba/test_config_flow.py index 54554af6ecb..de66a1ae3b7 100644 --- a/tests/components/roomba/test_config_flow.py +++ b/tests/components/roomba/test_config_flow.py @@ -5,7 +5,7 @@ import pytest from roombapy import RoombaConnectionError, RoombaInfo from homeassistant import config_entries, data_entry_flow -from homeassistant.components.dhcp import HOSTNAME, IP_ADDRESS, MAC_ADDRESS +from homeassistant.components import dhcp from homeassistant.components.roomba import config_flow from homeassistant.components.roomba.const import CONF_BLID, CONF_CONTINUOUS, DOMAIN from homeassistant.const import CONF_DELAY, CONF_HOST, CONF_PASSWORD @@ -16,30 +16,30 @@ MOCK_IP = "1.2.3.4" VALID_CONFIG = {CONF_HOST: MOCK_IP, CONF_BLID: "BLID", CONF_PASSWORD: "password"} DHCP_DISCOVERY_DEVICES = [ - { - IP_ADDRESS: MOCK_IP, - MAC_ADDRESS: "50:14:79:DD:EE:FF", - HOSTNAME: "irobot-blid", - }, - { - IP_ADDRESS: MOCK_IP, - MAC_ADDRESS: "80:A5:89:DD:EE:FF", - HOSTNAME: "roomba-blid", - }, + dhcp.DhcpServiceInfo( + ip=MOCK_IP, + macaddress="50:14:79:DD:EE:FF", + hostname="irobot-blid", + ), + dhcp.DhcpServiceInfo( + ip=MOCK_IP, + macaddress="80:A5:89:DD:EE:FF", + hostname="roomba-blid", + ), ] DHCP_DISCOVERY_DEVICES_WITHOUT_MATCHING_IP = [ - { - IP_ADDRESS: "4.4.4.4", - MAC_ADDRESS: "50:14:79:DD:EE:FF", - HOSTNAME: "irobot-blid", - }, - { - IP_ADDRESS: "5.5.5.5", - MAC_ADDRESS: "80:A5:89:DD:EE:FF", - HOSTNAME: "roomba-blid", - }, + dhcp.DhcpServiceInfo( + ip="4.4.4.4", + macaddress="50:14:79:DD:EE:FF", + hostname="irobot-blid", + ), + dhcp.DhcpServiceInfo( + ip="5.5.5.5", + macaddress="80:A5:89:DD:EE:FF", + hostname="roomba-blid", + ), ] @@ -815,11 +815,11 @@ async def test_dhcp_discovery_with_ignored(hass): result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_DHCP}, - data={ - IP_ADDRESS: MOCK_IP, - MAC_ADDRESS: "AA:BB:CC:DD:EE:FF", - HOSTNAME: "irobot-blid", - }, + data=dhcp.DhcpServiceInfo( + ip=MOCK_IP, + macaddress="AA:BB:CC:DD:EE:FF", + hostname="irobot-blid", + ), ) await hass.async_block_till_done() @@ -838,11 +838,11 @@ async def test_dhcp_discovery_already_configured_host(hass): result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_DHCP}, - data={ - IP_ADDRESS: MOCK_IP, - MAC_ADDRESS: "AA:BB:CC:DD:EE:FF", - HOSTNAME: "irobot-blid", - }, + data=dhcp.DhcpServiceInfo( + ip=MOCK_IP, + macaddress="AA:BB:CC:DD:EE:FF", + hostname="irobot-blid", + ), ) await hass.async_block_till_done() @@ -864,11 +864,11 @@ async def test_dhcp_discovery_already_configured_blid(hass): result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_DHCP}, - data={ - IP_ADDRESS: MOCK_IP, - MAC_ADDRESS: "AA:BB:CC:DD:EE:FF", - HOSTNAME: "irobot-blid", - }, + data=dhcp.DhcpServiceInfo( + ip=MOCK_IP, + macaddress="AA:BB:CC:DD:EE:FF", + hostname="irobot-blid", + ), ) await hass.async_block_till_done() @@ -890,11 +890,11 @@ async def test_dhcp_discovery_not_irobot(hass): result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_DHCP}, - data={ - IP_ADDRESS: MOCK_IP, - MAC_ADDRESS: "AA:BB:CC:DD:EE:FF", - HOSTNAME: "Notirobot-blid", - }, + data=dhcp.DhcpServiceInfo( + ip=MOCK_IP, + macaddress="AA:BB:CC:DD:EE:FF", + hostname="Notirobot-blid", + ), ) await hass.async_block_till_done() @@ -911,11 +911,11 @@ async def test_dhcp_discovery_partial_hostname(hass): result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_DHCP}, - data={ - IP_ADDRESS: MOCK_IP, - MAC_ADDRESS: "AA:BB:CC:DD:EE:FF", - HOSTNAME: "irobot-blid", - }, + data=dhcp.DhcpServiceInfo( + ip=MOCK_IP, + macaddress="AA:BB:CC:DD:EE:FF", + hostname="irobot-blid", + ), ) await hass.async_block_till_done() @@ -928,11 +928,11 @@ async def test_dhcp_discovery_partial_hostname(hass): result2 = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_DHCP}, - data={ - IP_ADDRESS: MOCK_IP, - MAC_ADDRESS: "AA:BB:CC:DD:EE:FF", - HOSTNAME: "irobot-blidthatislonger", - }, + data=dhcp.DhcpServiceInfo( + ip=MOCK_IP, + macaddress="AA:BB:CC:DD:EE:FF", + hostname="irobot-blidthatislonger", + ), ) await hass.async_block_till_done() @@ -949,11 +949,11 @@ async def test_dhcp_discovery_partial_hostname(hass): result3 = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_DHCP}, - data={ - IP_ADDRESS: MOCK_IP, - MAC_ADDRESS: "AA:BB:CC:DD:EE:FF", - HOSTNAME: "irobot-bl", - }, + data=dhcp.DhcpServiceInfo( + ip=MOCK_IP, + macaddress="AA:BB:CC:DD:EE:FF", + hostname="irobot-bl", + ), ) await hass.async_block_till_done()