mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 09:17:53 +00:00
Improve ipp unique id parsing (#35959)
This commit is contained in:
parent
6e3bba07da
commit
be854b7363
@ -85,12 +85,12 @@ class IPPFlowHandler(ConfigFlow, domain=DOMAIN):
|
||||
|
||||
unique_id = user_input[CONF_UUID] = info[CONF_UUID]
|
||||
|
||||
if unique_id is None and info[CONF_SERIAL] is not None:
|
||||
if not unique_id and info[CONF_SERIAL]:
|
||||
_LOGGER.debug(
|
||||
"Printer UUID is missing from IPP response. Falling back to IPP serial number"
|
||||
)
|
||||
unique_id = info[CONF_SERIAL]
|
||||
elif unique_id is None:
|
||||
elif not unique_id:
|
||||
_LOGGER.debug("Unable to determine unique id from IPP response")
|
||||
|
||||
await self.async_set_unique_id(unique_id)
|
||||
@ -138,17 +138,17 @@ class IPPFlowHandler(ConfigFlow, domain=DOMAIN):
|
||||
return self.async_abort(reason="ipp_error")
|
||||
|
||||
unique_id = self.discovery_info[CONF_UUID]
|
||||
if unique_id is None and info[CONF_UUID] is not None:
|
||||
if not unique_id and info[CONF_UUID]:
|
||||
_LOGGER.debug(
|
||||
"Printer UUID is missing from discovery info. Falling back to IPP UUID"
|
||||
)
|
||||
unique_id = self.discovery_info[CONF_UUID] = info[CONF_UUID]
|
||||
elif unique_id is None and info[CONF_SERIAL] is not None:
|
||||
elif not unique_id and info[CONF_SERIAL]:
|
||||
_LOGGER.debug(
|
||||
"Printer UUID is missing from discovery info and IPP response. Falling back to IPP serial number"
|
||||
)
|
||||
unique_id = info[CONF_SERIAL]
|
||||
elif unique_id is None:
|
||||
elif not unique_id:
|
||||
_LOGGER.debug(
|
||||
"Unable to determine unique id from discovery info and IPP response"
|
||||
)
|
||||
|
@ -264,6 +264,24 @@ async def test_zeroconf_with_uuid_device_exists_abort(
|
||||
assert result["reason"] == "already_configured"
|
||||
|
||||
|
||||
async def test_zeroconf_empty_unique_id_required_abort(
|
||||
hass: HomeAssistant, aioclient_mock: AiohttpClientMocker
|
||||
) -> None:
|
||||
"""Test we abort zeroconf flow if printer lacks (empty) unique identification."""
|
||||
mock_connection(aioclient_mock, no_unique_id=True)
|
||||
|
||||
discovery_info = {
|
||||
**MOCK_ZEROCONF_IPP_SERVICE_INFO,
|
||||
"properties": {**MOCK_ZEROCONF_IPP_SERVICE_INFO["properties"], "UUID": ""},
|
||||
}
|
||||
result = await hass.config_entries.flow.async_init(
|
||||
DOMAIN, context={"source": SOURCE_ZEROCONF}, data=discovery_info,
|
||||
)
|
||||
|
||||
assert result["type"] == RESULT_TYPE_ABORT
|
||||
assert result["reason"] == "unique_id_required"
|
||||
|
||||
|
||||
async def test_zeroconf_unique_id_required_abort(
|
||||
hass: HomeAssistant, aioclient_mock: AiohttpClientMocker
|
||||
) -> None:
|
||||
|
Loading…
x
Reference in New Issue
Block a user