Fix Daikin config flow for zeroconf devices (#36571)
This commit is contained in:
parent
212b9df87d
commit
fa17e6d5ab
2 changed files with 13 additions and 7 deletions
|
@ -40,8 +40,8 @@ class FlowHandler(config_entries.ConfigFlow):
|
||||||
|
|
||||||
async def _create_entry(self, host, mac, key=None, uuid=None, password=None):
|
async def _create_entry(self, host, mac, key=None, uuid=None, password=None):
|
||||||
"""Register new entry."""
|
"""Register new entry."""
|
||||||
# Check if mac already is registered
|
if not self.unique_id:
|
||||||
await self.async_set_unique_id(mac)
|
await self.async_set_unique_id(mac)
|
||||||
self._abort_if_unique_id_configured()
|
self._abort_if_unique_id_configured()
|
||||||
|
|
||||||
return self.async_create_entry(
|
return self.async_create_entry(
|
||||||
|
|
|
@ -25,6 +25,7 @@ from tests.common import MockConfigEntry
|
||||||
|
|
||||||
MAC = "AABBCCDDEEFF"
|
MAC = "AABBCCDDEEFF"
|
||||||
HOST = "127.0.0.1"
|
HOST = "127.0.0.1"
|
||||||
|
HOSTNAME = "DaikinUNIQUE.local"
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
@ -112,11 +113,7 @@ async def test_device_abort(hass, mock_daikin, s_effect, reason):
|
||||||
"source, data, unique_id",
|
"source, data, unique_id",
|
||||||
[
|
[
|
||||||
(SOURCE_DISCOVERY, {KEY_IP: HOST, KEY_MAC: MAC}, MAC),
|
(SOURCE_DISCOVERY, {KEY_IP: HOST, KEY_MAC: MAC}, MAC),
|
||||||
(
|
(SOURCE_ZEROCONF, {CONF_HOST: HOST, KEY_HOSTNAME: HOSTNAME}, HOSTNAME),
|
||||||
SOURCE_ZEROCONF,
|
|
||||||
{CONF_HOST: HOST, KEY_HOSTNAME: "DaikinUNIQE.local"},
|
|
||||||
"DaikinUNIQE.local",
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_discovery_zeroconf(hass, mock_daikin, source, data, unique_id):
|
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"
|
assert result["step_id"] == "user"
|
||||||
|
|
||||||
MockConfigEntry(domain="daikin", unique_id=unique_id).add_to_hass(hass)
|
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(
|
result = await hass.config_entries.flow.async_init(
|
||||||
"daikin", context={"source": source}, data=data,
|
"daikin", context={"source": source}, data=data,
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue