diff --git a/homeassistant/components/autarco/__init__.py b/homeassistant/components/autarco/__init__.py index 0e29b25ad80..f42bfdf4a0e 100644 --- a/homeassistant/components/autarco/__init__.py +++ b/homeassistant/components/autarco/__init__.py @@ -4,11 +4,12 @@ from __future__ import annotations import asyncio -from autarco import Autarco +from autarco import Autarco, AutarcoConnectionError from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_EMAIL, CONF_PASSWORD, Platform from homeassistant.core import HomeAssistant +from homeassistant.exceptions import ConfigEntryNotReady from homeassistant.helpers.aiohttp_client import async_get_clientsession from .coordinator import AutarcoDataUpdateCoordinator @@ -25,7 +26,12 @@ async def async_setup_entry(hass: HomeAssistant, entry: AutarcoConfigEntry) -> b password=entry.data[CONF_PASSWORD], session=async_get_clientsession(hass), ) - account_sites = await client.get_account() + + try: + account_sites = await client.get_account() + except AutarcoConnectionError as err: + await client.close() + raise ConfigEntryNotReady from err coordinators: list[AutarcoDataUpdateCoordinator] = [ AutarcoDataUpdateCoordinator(hass, client, site) for site in account_sites diff --git a/homeassistant/components/autarco/strings.json b/homeassistant/components/autarco/strings.json index 159dbd09781..a053cd36e09 100644 --- a/homeassistant/components/autarco/strings.json +++ b/homeassistant/components/autarco/strings.json @@ -28,7 +28,7 @@ "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]" }, "abort": { - "already_configured": "[%key:common::config_flow::abort::already_configured_device%]", + "already_configured": "[%key:common::config_flow::abort::already_configured_account%]", "reauth_successful": "[%key:common::config_flow::abort::reauth_successful%]" } }, diff --git a/tests/components/autarco/test_init.py b/tests/components/autarco/test_init.py index 2707c53d35f..6c71eca5ef1 100644 --- a/tests/components/autarco/test_init.py +++ b/tests/components/autarco/test_init.py @@ -4,7 +4,7 @@ from __future__ import annotations from unittest.mock import AsyncMock -from autarco import AutarcoAuthenticationError +from autarco import AutarcoAuthenticationError, AutarcoConnectionError from homeassistant.config_entries import ConfigEntryState from homeassistant.core import HomeAssistant @@ -30,6 +30,21 @@ async def test_load_unload_entry( assert mock_config_entry.state is ConfigEntryState.NOT_LOADED +async def test_config_entry_not_ready( + hass: HomeAssistant, + mock_autarco_client: AsyncMock, + mock_config_entry: MockConfigEntry, +) -> None: + """Test the Autarco configuration entry not ready.""" + mock_autarco_client.get_account.side_effect = AutarcoConnectionError + mock_config_entry.add_to_hass(hass) + + await hass.config_entries.async_setup(mock_config_entry.entry_id) + await hass.async_block_till_done() + + assert mock_config_entry.state is ConfigEntryState.SETUP_RETRY + + async def test_setup_entry_exception( hass: HomeAssistant, mock_autarco_client: AsyncMock,