Handle http connection errors to Prusa printers (#120456)

This commit is contained in:
Stefan Agner 2024-06-25 22:34:56 +02:00 committed by GitHub
parent 1f0e47b251
commit 5983344746
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 8 additions and 1 deletions

View file

@ -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

View file

@ -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: