Fix Daikin config flow for zeroconf devices (#36571)

This commit is contained in:
Fredrik Erlandsson 2020-06-10 15:04:59 +02:00 committed by GitHub
parent 212b9df87d
commit fa17e6d5ab
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 7 deletions

View file

@ -40,7 +40,7 @@ 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
if not self.unique_id:
await self.async_set_unique_id(mac)
self._abort_if_unique_id_configured()

View file

@ -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,
)