diff --git a/homeassistant/components/bond/config_flow.py b/homeassistant/components/bond/config_flow.py index aa22dc628da..ca8965d4d43 100644 --- a/homeassistant/components/bond/config_flow.py +++ b/homeassistant/components/bond/config_flow.py @@ -39,7 +39,11 @@ async def _validate_input(data: Dict[str, Any]) -> str: raise InputValidationError("unknown") # Return unique ID from the hub to be stored in the config entry. - return version["bondid"] + bond_id = version.get("bondid") + if not bond_id: + raise InputValidationError("old_firmware") + + return bond_id class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): diff --git a/homeassistant/components/bond/strings.json b/homeassistant/components/bond/strings.json index ba59a61d58d..5ca2278a3e5 100644 --- a/homeassistant/components/bond/strings.json +++ b/homeassistant/components/bond/strings.json @@ -18,6 +18,7 @@ "error": { "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]", "invalid_auth": "[%key:common::config_flow::error::invalid_auth%]", + "old_firmware": "Unsupported old firmware on the Bond device - please upgrade before continuing", "unknown": "[%key:common::config_flow::error::unknown%]" }, "abort": { diff --git a/homeassistant/components/bond/translations/en.json b/homeassistant/components/bond/translations/en.json index 2e636bb8999..f141a450652 100644 --- a/homeassistant/components/bond/translations/en.json +++ b/homeassistant/components/bond/translations/en.json @@ -6,6 +6,7 @@ "error": { "cannot_connect": "Failed to connect", "invalid_auth": "Invalid authentication", + "old_firmware": "Unsupported old firmware on the Bond device - please upgrade before continuing", "unknown": "Unexpected error" }, "flow_title": "Bond: {bond_id} ({host})", @@ -24,4 +25,4 @@ } } } -} \ No newline at end of file +} diff --git a/tests/components/bond/test_config_flow.py b/tests/components/bond/test_config_flow.py index bd499b8ce61..8671cc4b601 100644 --- a/tests/components/bond/test_config_flow.py +++ b/tests/components/bond/test_config_flow.py @@ -79,6 +79,24 @@ async def test_user_form_cannot_connect(hass: core.HomeAssistant): assert result2["errors"] == {"base": "cannot_connect"} +async def test_user_form_old_firmware(hass: core.HomeAssistant): + """Test we handle unsupported old firmware.""" + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": config_entries.SOURCE_USER} + ) + + with patch_bond_version( + return_value={"no_bond_id": "present"} + ), patch_bond_device_ids(): + result2 = await hass.config_entries.flow.async_configure( + result["flow_id"], + {CONF_HOST: "some host", CONF_ACCESS_TOKEN: "test-token"}, + ) + + assert result2["type"] == "form" + assert result2["errors"] == {"base": "old_firmware"} + + async def test_user_form_unexpected_client_error(hass: core.HomeAssistant): """Test we handle unexpected client error gracefully.""" await _help_test_form_unexpected_error(