diff --git a/homeassistant/components/powerwall/config_flow.py b/homeassistant/components/powerwall/config_flow.py index 0946a71a01d..a00d1eaa041 100644 --- a/homeassistant/components/powerwall/config_flow.py +++ b/homeassistant/components/powerwall/config_flow.py @@ -166,7 +166,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): description_placeholders: dict[str, str] = {} try: info = await validate_input(self.hass, user_input) - except PowerwallUnreachableError as ex: + except (PowerwallUnreachableError, asyncio.TimeoutError) as ex: errors[CONF_IP_ADDRESS] = "cannot_connect" description_placeholders = {"error": str(ex)} except WrongVersion as ex: diff --git a/tests/components/powerwall/test_config_flow.py b/tests/components/powerwall/test_config_flow.py index d79bf6c50f0..f9dcc4e1c83 100644 --- a/tests/components/powerwall/test_config_flow.py +++ b/tests/components/powerwall/test_config_flow.py @@ -4,6 +4,7 @@ import asyncio from datetime import timedelta from unittest.mock import MagicMock, patch +import pytest from tesla_powerwall import ( AccessDeniedError, MissingAttributeError, @@ -60,15 +61,14 @@ async def test_form_source_user(hass: HomeAssistant) -> None: assert len(mock_setup_entry.mock_calls) == 1 -async def test_form_cannot_connect(hass: HomeAssistant) -> None: +@pytest.mark.parametrize("exc", (PowerwallUnreachableError, asyncio.TimeoutError)) +async def test_form_cannot_connect(hass: HomeAssistant, exc: Exception) -> None: """Test we handle cannot connect error.""" result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_USER} ) - mock_powerwall = await _mock_powerwall_side_effect( - site_info=PowerwallUnreachableError - ) + mock_powerwall = await _mock_powerwall_side_effect(site_info=exc) with patch( "homeassistant.components.powerwall.config_flow.Powerwall",