From f4aba286fe4ba470e716d806af6ae7a60bc7d255 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20Strandberg?= Date: Sun, 1 Feb 2026 19:42:27 +0100 Subject: [PATCH] Improved error checking during startup of SENZ (#162026) --- homeassistant/components/senz/__init__.py | 16 ++++++++++++++++ tests/components/senz/test_init.py | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/senz/__init__.py b/homeassistant/components/senz/__init__.py index bd96d6480e7..a23ff7bb994 100644 --- a/homeassistant/components/senz/__init__.py +++ b/homeassistant/components/senz/__init__.py @@ -6,6 +6,7 @@ from datetime import timedelta from http import HTTPStatus import logging +from aiohttp import ClientResponseError from httpx import HTTPStatusError, RequestError import jwt from pysenz import SENZAPI, Thermostat @@ -70,11 +71,26 @@ async def async_setup_entry(hass: HomeAssistant, entry: SENZConfigEntry) -> bool translation_domain=DOMAIN, translation_key="config_entry_not_ready", ) from err + except ClientResponseError as err: + if err.status in (HTTPStatus.UNAUTHORIZED, HTTPStatus.BAD_REQUEST): + raise ConfigEntryAuthFailed( + translation_domain=DOMAIN, + translation_key="config_entry_auth_failed", + ) from err + raise ConfigEntryNotReady( + translation_domain=DOMAIN, + translation_key="config_entry_not_ready", + ) from err except RequestError as err: raise ConfigEntryNotReady( translation_domain=DOMAIN, translation_key="config_entry_not_ready", ) from err + except Exception as err: + raise ConfigEntryAuthFailed( + translation_domain=DOMAIN, + translation_key="config_entry_auth_failed", + ) from err coordinator: SENZDataUpdateCoordinator = DataUpdateCoordinator( hass, diff --git a/tests/components/senz/test_init.py b/tests/components/senz/test_init.py index 20b9000fd69..79ee98ab687 100644 --- a/tests/components/senz/test_init.py +++ b/tests/components/senz/test_init.py @@ -98,7 +98,7 @@ async def test_migrate_config_entry( ( time.time() - 3600, HTTPStatus.INTERNAL_SERVER_ERROR, - ConfigEntryState.SETUP_ERROR, + ConfigEntryState.SETUP_RETRY, ), ], ids=["unauthorized", "internal_server_error"],