From 76ad576f3164bf877aaaad38e2d892c33b596438 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eugenio=20Panadero=20Maci=C3=A1?= Date: Sun, 12 Mar 2023 18:16:46 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Process=20403=20error=20from=20s?= =?UTF-8?q?erver=20like=20'401=20unauthorized'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit raising `BadApiTokenAuthError` to signal HA for reauth-config for both status codes, when API token is enabled --- CHANGELOG.md | 7 +++++++ aiopvpc/pvpc_data.py | 2 +- pyproject.toml | 2 +- tests/test_pvpc.py | 3 ++- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e15ba9b..baca737 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [v4.1.0](https://github.com/azogue/aiopvpc/tree/v4.0.1) - Adapt to 403 unauthorized error (2023-03-12) + +[Full Changelog](https://github.com/azogue/aiopvpc/compare/v4.1.0...v4.0.1) + +- 🐛 Process 403 error from server like '401 unauthorized', raising `BadApiTokenAuthError` + to signal HA for reauth-config for both status codes, when API token is enabled. + ## [v4.0.1](https://github.com/azogue/aiopvpc/tree/v4.0.1) - Minor fixes (2023-01-11) [Full Changelog](https://github.com/azogue/aiopvpc/compare/v4.0.1...v4.0.0) diff --git a/aiopvpc/pvpc_data.py b/aiopvpc/pvpc_data.py index fcd40c8..246dc81 100644 --- a/aiopvpc/pvpc_data.py +++ b/aiopvpc/pvpc_data.py @@ -137,7 +137,7 @@ async def _api_get_data(self, sensor_key: str, url: str) -> EsiosResponse | None return extract_esios_data( data, url, sensor_key, self.tariff, tz=self._local_timezone ) - elif resp.status == 401 and self._data_source == "esios": + elif resp.status in (401, 403) and self._data_source == "esios": _LOGGER.warning( "[%s] Unauthorized error with '%s': %s", sensor_key, diff --git a/pyproject.toml b/pyproject.toml index 63cb910..c02e225 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ markers = [ [tool.poetry] name = "aiopvpc" -version = "4.0.1" +version = "4.1.0" description = "Retrieval of Spanish Electricity hourly prices (PVPC)" authors = ["Eugenio Panadero "] license = "MIT" diff --git a/tests/test_pvpc.py b/tests/test_pvpc.py index 41f144d..79c8c33 100644 --- a/tests/test_pvpc.py +++ b/tests/test_pvpc.py @@ -26,6 +26,7 @@ ( ("esios_public", None, "2032-10-26", 0, 200, None), ("esios_public", None, "2032-10-26", 1, 500, None), + ("esios", "bad-token", "2032-10-26", 1, 403, None), ("esios", "bad-token", "2032-10-26", 1, 401, None), ("esios_public", None, "2032-10-26", 1, 200, TimeoutError), ("esios_public", None, "2032-10-26", 1, 200, ClientError), @@ -50,7 +51,7 @@ async def test_bad_downloads( data_source=cast(DataSource, data_source), api_token=api_token, ) - if status == 401: + if status in (401, 403): with pytest.raises(BadApiTokenAuthError): await pvpc_data.async_update_all(None, day) assert mock_session.call_count == 1