Use console name in UniFi Access discovery title (#173962)

This commit is contained in:
Raphael Hehl
2026-06-16 08:20:29 +02:00
committed by GitHub
parent f0cefe2f2e
commit a992a58367
3 changed files with 43 additions and 1 deletions
@@ -160,7 +160,11 @@ class UnifiAccessConfigFlow(ConfigFlow, domain=DOMAIN):
data=merged_input,
)
name = discovery_info.get("hostname") or discovery_info.get("platform")
name = (
discovery_info.get("name")
or discovery_info.get("hostname")
or discovery_info.get("product_name")
)
if not name:
short_mac = discovery_info["hw_addr"].replace(":", "").upper()[-6:]
name = f"Access {short_mac}"
@@ -11,6 +11,7 @@
"protect_api_key": "This API key is associated with UniFi Protect, not UniFi Access. Please generate a new API key from the UniFi Access application settings.",
"unknown": "[%key:common::config_flow::error::unknown%]"
},
"flow_title": "{name} ({ip_address})",
"step": {
"discovery_confirm": {
"data": {
@@ -820,3 +820,40 @@ async def test_discovery_fallback_name_from_mac(
assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "discovery_confirm"
assert result["description_placeholders"]["name"] == "Access DDEEFF"
@pytest.mark.usefixtures("mock_setup_entry")
@pytest.mark.parametrize(
("extra_info", "expected_name"),
[
(
{"name": "Front Gate", "hostname": "unvr", "product_name": "UNVR"},
"Front Gate",
),
({"hostname": "unvr", "product_name": "UNVR"}, "unvr"),
({"product_name": "UniFi Dream Machine"}, "UniFi Dream Machine"),
],
ids=["console-name", "hostname", "product-name"],
)
async def test_discovery_name_resolution(
hass: HomeAssistant,
mock_client: MagicMock,
extra_info: dict[str, str],
expected_name: str,
) -> None:
"""Test the discovered-device name prefers the console name over raw codes."""
result = await hass.config_entries.flow.async_init(
DOMAIN,
context={"source": SOURCE_INTEGRATION_DISCOVERY},
data={
"source_ip": "10.0.0.5",
"hw_addr": "aa:bb:cc:dd:ee:ff",
"services": {"Access": True},
"direct_connect_domain": "x.ui.direct",
**extra_info,
},
)
assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "discovery_confirm"
assert result["description_placeholders"]["name"] == expected_name