From 5983344746b68babf98eecf09d48609754114cc5 Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Tue, 25 Jun 2024 22:34:56 +0200 Subject: [PATCH] Handle http connection errors to Prusa printers (#120456) --- homeassistant/components/prusalink/coordinator.py | 3 +++ tests/components/prusalink/test_init.py | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/prusalink/coordinator.py b/homeassistant/components/prusalink/coordinator.py index 7d4526a8b45..1d1989119fa 100644 --- a/homeassistant/components/prusalink/coordinator.py +++ b/homeassistant/components/prusalink/coordinator.py @@ -9,6 +9,7 @@ import logging from time import monotonic from typing import TypeVar +from httpx import ConnectError from pyprusalink import JobInfo, LegacyPrinterStatus, PrinterStatus, PrusaLink from pyprusalink.types import InvalidAuth, PrusaLinkError @@ -47,6 +48,8 @@ class PrusaLinkUpdateCoordinator(DataUpdateCoordinator[T], ABC): raise UpdateFailed("Invalid authentication") from None except PrusaLinkError as err: raise UpdateFailed(str(err)) from err + except (TimeoutError, ConnectError) as err: + raise UpdateFailed("Cannot connect") from err self.update_interval = self._get_update_interval(data) return data diff --git a/tests/components/prusalink/test_init.py b/tests/components/prusalink/test_init.py index 2cdc6894eeb..bd0fb84cafd 100644 --- a/tests/components/prusalink/test_init.py +++ b/tests/components/prusalink/test_init.py @@ -3,6 +3,7 @@ from datetime import timedelta from unittest.mock import patch +from httpx import ConnectError from pyprusalink.types import InvalidAuth, PrusaLinkError import pytest @@ -36,7 +37,10 @@ async def test_unloading( assert state.state == "unavailable" -@pytest.mark.parametrize("exception", [InvalidAuth, PrusaLinkError]) +@pytest.mark.parametrize( + "exception", + [InvalidAuth, PrusaLinkError, ConnectError("All connection attempts failed")], +) async def test_failed_update( hass: HomeAssistant, mock_config_entry: ConfigEntry, exception ) -> None: