Decrease fitbit logging verbosity on connection error (#108228)
* Add test for connection error * Decrease fitbit connection error log verbositypull/108248/head
parent
c47fb5d161
commit
9d5f714e29
|
@ -7,6 +7,7 @@ from typing import Any, TypeVar, cast
|
||||||
|
|
||||||
from fitbit import Fitbit
|
from fitbit import Fitbit
|
||||||
from fitbit.exceptions import HTTPException, HTTPUnauthorized
|
from fitbit.exceptions import HTTPException, HTTPUnauthorized
|
||||||
|
from requests.exceptions import ConnectionError as RequestsConnectionError
|
||||||
|
|
||||||
from homeassistant.const import CONF_ACCESS_TOKEN
|
from homeassistant.const import CONF_ACCESS_TOKEN
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
|
@ -132,6 +133,9 @@ class FitbitApi(ABC):
|
||||||
"""Run client command."""
|
"""Run client command."""
|
||||||
try:
|
try:
|
||||||
return await self._hass.async_add_executor_job(func)
|
return await self._hass.async_add_executor_job(func)
|
||||||
|
except RequestsConnectionError as err:
|
||||||
|
_LOGGER.debug("Connection error to fitbit API: %s", err)
|
||||||
|
raise FitbitApiException("Connection error to fitbit API") from err
|
||||||
except HTTPUnauthorized as err:
|
except HTTPUnauthorized as err:
|
||||||
_LOGGER.debug("Unauthorized error from fitbit API: %s", err)
|
_LOGGER.debug("Unauthorized error from fitbit API: %s", err)
|
||||||
raise FitbitAuthException("Authentication error from fitbit API") from err
|
raise FitbitAuthException("Authentication error from fitbit API") from err
|
||||||
|
|
|
@ -6,6 +6,7 @@ from http import HTTPStatus
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
from requests.exceptions import ConnectionError as RequestsConnectionError
|
||||||
from requests_mock.mocker import Mocker
|
from requests_mock.mocker import Mocker
|
||||||
from syrupy.assertion import SnapshotAssertion
|
from syrupy.assertion import SnapshotAssertion
|
||||||
|
|
||||||
|
@ -599,10 +600,11 @@ async def test_settings_scope_config_entry(
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
("scopes", "server_status"),
|
("scopes", "request_condition"),
|
||||||
[
|
[
|
||||||
(["heartrate"], HTTPStatus.INTERNAL_SERVER_ERROR),
|
(["heartrate"], {"status_code": HTTPStatus.INTERNAL_SERVER_ERROR}),
|
||||||
(["heartrate"], HTTPStatus.BAD_REQUEST),
|
(["heartrate"], {"status_code": HTTPStatus.BAD_REQUEST}),
|
||||||
|
(["heartrate"], {"exc": RequestsConnectionError}),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_sensor_update_failed(
|
async def test_sensor_update_failed(
|
||||||
|
@ -610,14 +612,14 @@ async def test_sensor_update_failed(
|
||||||
setup_credentials: None,
|
setup_credentials: None,
|
||||||
integration_setup: Callable[[], Awaitable[bool]],
|
integration_setup: Callable[[], Awaitable[bool]],
|
||||||
requests_mock: Mocker,
|
requests_mock: Mocker,
|
||||||
server_status: HTTPStatus,
|
request_condition: dict[str, Any],
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test a failed sensor update when talking to the API."""
|
"""Test a failed sensor update when talking to the API."""
|
||||||
|
|
||||||
requests_mock.register_uri(
|
requests_mock.register_uri(
|
||||||
"GET",
|
"GET",
|
||||||
TIMESERIES_API_URL_FORMAT.format(resource="activities/heart"),
|
TIMESERIES_API_URL_FORMAT.format(resource="activities/heart"),
|
||||||
status_code=server_status,
|
**request_condition,
|
||||||
)
|
)
|
||||||
|
|
||||||
assert await integration_setup()
|
assert await integration_setup()
|
||||||
|
|
Loading…
Reference in New Issue