From fa17e6d5ab75b09c805aa96b6b7104610406414c Mon Sep 17 00:00:00 2001 From: Fredrik Erlandsson Date: Wed, 10 Jun 2020 15:04:59 +0200 Subject: [PATCH] Fix Daikin config flow for zeroconf devices (#36571) --- homeassistant/components/daikin/config_flow.py | 4 ++-- tests/components/daikin/test_config_flow.py | 16 +++++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/daikin/config_flow.py b/homeassistant/components/daikin/config_flow.py index 5f2a8a0c0b1..9d236610361 100644 --- a/homeassistant/components/daikin/config_flow.py +++ b/homeassistant/components/daikin/config_flow.py @@ -40,8 +40,8 @@ class FlowHandler(config_entries.ConfigFlow): async def _create_entry(self, host, mac, key=None, uuid=None, password=None): """Register new entry.""" - # Check if mac already is registered - await self.async_set_unique_id(mac) + if not self.unique_id: + await self.async_set_unique_id(mac) self._abort_if_unique_id_configured() return self.async_create_entry( diff --git a/tests/components/daikin/test_config_flow.py b/tests/components/daikin/test_config_flow.py index 67affc3d501..8d7c99b795e 100644 --- a/tests/components/daikin/test_config_flow.py +++ b/tests/components/daikin/test_config_flow.py @@ -25,6 +25,7 @@ from tests.common import MockConfigEntry MAC = "AABBCCDDEEFF" HOST = "127.0.0.1" +HOSTNAME = "DaikinUNIQUE.local" @pytest.fixture @@ -112,11 +113,7 @@ async def test_device_abort(hass, mock_daikin, s_effect, reason): "source, data, unique_id", [ (SOURCE_DISCOVERY, {KEY_IP: HOST, KEY_MAC: MAC}, MAC), - ( - SOURCE_ZEROCONF, - {CONF_HOST: HOST, KEY_HOSTNAME: "DaikinUNIQE.local"}, - "DaikinUNIQE.local", - ), + (SOURCE_ZEROCONF, {CONF_HOST: HOST, KEY_HOSTNAME: HOSTNAME}, HOSTNAME), ], ) async def test_discovery_zeroconf(hass, mock_daikin, source, data, unique_id): @@ -128,6 +125,15 @@ async def test_discovery_zeroconf(hass, mock_daikin, source, data, unique_id): assert result["step_id"] == "user" MockConfigEntry(domain="daikin", unique_id=unique_id).add_to_hass(hass) + result = await hass.config_entries.flow.async_init( + "daikin", + context={"source": SOURCE_USER, "unique_id": unique_id}, + data={CONF_HOST: HOST}, + ) + + assert result["type"] == RESULT_TYPE_ABORT + assert result["reason"] == "already_configured" + result = await hass.config_entries.flow.async_init( "daikin", context={"source": source}, data=data, )