mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 22:27:07 +00:00
Reuse title of deleted enphase_envoy config entry if present (#133611)
This commit is contained in:
parent
ef31413a59
commit
cc134c820b
@ -141,9 +141,13 @@ class EnphaseConfigFlow(ConfigFlow, domain=DOMAIN):
|
|||||||
and entry.data[CONF_HOST] == self.ip_address
|
and entry.data[CONF_HOST] == self.ip_address
|
||||||
):
|
):
|
||||||
_LOGGER.debug(
|
_LOGGER.debug(
|
||||||
"Zeroconf update envoy with this ip and blank serial in unique_id",
|
"Zeroconf update envoy with this ip and blank unique_id",
|
||||||
)
|
)
|
||||||
title = f"{ENVOY} {serial}" if entry.title == ENVOY else ENVOY
|
# Found an entry with blank unique_id (prior deleted) with same ip
|
||||||
|
# If the title is still default shorthand 'Envoy' then append serial
|
||||||
|
# to differentiate multiple Envoy. Don't change the title if any other
|
||||||
|
# title is still present in the old entry.
|
||||||
|
title = f"{ENVOY} {serial}" if entry.title == ENVOY else entry.title
|
||||||
return self.async_update_reload_and_abort(
|
return self.async_update_reload_and_abort(
|
||||||
entry, title=title, unique_id=serial, reason="already_configured"
|
entry, title=title, unique_id=serial, reason="already_configured"
|
||||||
)
|
)
|
||||||
|
@ -18,8 +18,6 @@ rules:
|
|||||||
config-flow:
|
config-flow:
|
||||||
status: todo
|
status: todo
|
||||||
comment: |
|
comment: |
|
||||||
- async_step_zeroconf -> a config entry title is considered userland,
|
|
||||||
so if someone renamed their entry, it will be reverted back with the code at L146.
|
|
||||||
- async_step_reaut L160: I believe that the unique is already set when starting a reauth flow
|
- async_step_reaut L160: I believe that the unique is already set when starting a reauth flow
|
||||||
- The config flow is missing data descriptions for the other fields
|
- The config flow is missing data descriptions for the other fields
|
||||||
dependency-transparency: done
|
dependency-transparency: done
|
||||||
|
@ -631,6 +631,88 @@ async def test_zero_conf_old_blank_entry(
|
|||||||
assert entry.title == "Envoy 1234"
|
assert entry.title == "Envoy 1234"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_zero_conf_old_blank_entry_standard_title(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
mock_setup_entry: AsyncMock,
|
||||||
|
mock_envoy: AsyncMock,
|
||||||
|
) -> None:
|
||||||
|
"""Test re-using old blank entry was Envoy as title."""
|
||||||
|
entry = MockConfigEntry(
|
||||||
|
domain=DOMAIN,
|
||||||
|
data={
|
||||||
|
CONF_HOST: "1.1.1.1",
|
||||||
|
CONF_USERNAME: "",
|
||||||
|
CONF_PASSWORD: "",
|
||||||
|
CONF_NAME: "unknown",
|
||||||
|
},
|
||||||
|
unique_id=None,
|
||||||
|
title="Envoy",
|
||||||
|
)
|
||||||
|
entry.add_to_hass(hass)
|
||||||
|
# test if shorthand title Envoy gets serial appended
|
||||||
|
hass.config_entries.async_update_entry(entry, title="Envoy")
|
||||||
|
result = await hass.config_entries.flow.async_init(
|
||||||
|
DOMAIN,
|
||||||
|
context={"source": SOURCE_ZEROCONF},
|
||||||
|
data=zeroconf.ZeroconfServiceInfo(
|
||||||
|
ip_address=ip_address("1.1.1.1"),
|
||||||
|
ip_addresses=[ip_address("1.1.1.1"), ip_address("1.1.1.2")],
|
||||||
|
hostname="mock_hostname",
|
||||||
|
name="mock_name",
|
||||||
|
port=None,
|
||||||
|
properties={"serialnum": "1234", "protovers": "7.1.2"},
|
||||||
|
type="mock_type",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
assert result["type"] is FlowResultType.ABORT
|
||||||
|
assert result["reason"] == "already_configured"
|
||||||
|
|
||||||
|
assert entry.data[CONF_HOST] == "1.1.1.1"
|
||||||
|
assert entry.unique_id == "1234"
|
||||||
|
assert entry.title == "Envoy 1234"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_zero_conf_old_blank_entry_user_title(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
mock_setup_entry: AsyncMock,
|
||||||
|
mock_envoy: AsyncMock,
|
||||||
|
) -> None:
|
||||||
|
"""Test re-using old blank entry with user title."""
|
||||||
|
entry = MockConfigEntry(
|
||||||
|
domain=DOMAIN,
|
||||||
|
data={
|
||||||
|
CONF_HOST: "1.1.1.1",
|
||||||
|
CONF_USERNAME: "",
|
||||||
|
CONF_PASSWORD: "",
|
||||||
|
CONF_NAME: "unknown",
|
||||||
|
},
|
||||||
|
unique_id=None,
|
||||||
|
title="Envoy",
|
||||||
|
)
|
||||||
|
entry.add_to_hass(hass)
|
||||||
|
# set user title on entry
|
||||||
|
hass.config_entries.async_update_entry(entry, title="Envoy Backyard")
|
||||||
|
result = await hass.config_entries.flow.async_init(
|
||||||
|
DOMAIN,
|
||||||
|
context={"source": SOURCE_ZEROCONF},
|
||||||
|
data=zeroconf.ZeroconfServiceInfo(
|
||||||
|
ip_address=ip_address("1.1.1.1"),
|
||||||
|
ip_addresses=[ip_address("1.1.1.1"), ip_address("1.1.1.2")],
|
||||||
|
hostname="mock_hostname",
|
||||||
|
name="mock_name",
|
||||||
|
port=None,
|
||||||
|
properties={"serialnum": "1234", "protovers": "7.1.2"},
|
||||||
|
type="mock_type",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
assert result["type"] is FlowResultType.ABORT
|
||||||
|
assert result["reason"] == "already_configured"
|
||||||
|
|
||||||
|
assert entry.data[CONF_HOST] == "1.1.1.1"
|
||||||
|
assert entry.unique_id == "1234"
|
||||||
|
assert entry.title == "Envoy Backyard"
|
||||||
|
|
||||||
|
|
||||||
async def test_reauth(
|
async def test_reauth(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
config_entry: MockConfigEntry,
|
config_entry: MockConfigEntry,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user