From d8a15f3ddadaad8cb676d763f2504e6a259eed5d Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 27 Sep 2022 19:22:52 +0200 Subject: [PATCH] Fix Withings authentication to leverage default redirect URI (#79158) --- homeassistant/components/withings/common.py | 8 -------- tests/components/withings/common.py | 4 ++-- tests/components/withings/conftest.py | 5 ++++- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/homeassistant/components/withings/common.py b/homeassistant/components/withings/common.py index 68238791f485..429360b272d8 100644 --- a/homeassistant/components/withings/common.py +++ b/homeassistant/components/withings/common.py @@ -44,12 +44,10 @@ from homeassistant.core import CALLBACK_TYPE, HomeAssistant, callback from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers import config_entry_oauth2_flow, entity_registry as er from homeassistant.helpers.config_entry_oauth2_flow import ( - AUTH_CALLBACK_PATH, AbstractOAuth2Implementation, OAuth2Session, ) from homeassistant.helpers.entity import Entity -from homeassistant.helpers.network import get_url from homeassistant.helpers.update_coordinator import DataUpdateCoordinator from homeassistant.util import dt @@ -1084,12 +1082,6 @@ def get_platform_attributes(platform: str) -> tuple[WithingsAttribute, ...]: class WithingsLocalOAuth2Implementation(AuthImplementation): """Oauth2 implementation that only uses the external url.""" - @property - def redirect_uri(self) -> str: - """Return the redirect uri.""" - url = get_url(self.hass, allow_internal=False, prefer_cloud=True) - return f"{url}{AUTH_CALLBACK_PATH}" - async def _token_request(self, data: dict) -> dict: """Make a token request and adapt Withings API reply.""" new_token = await super()._token_request(data) diff --git a/tests/components/withings/common.py b/tests/components/withings/common.py index f3855ae96f00..598e7ab8c33d 100644 --- a/tests/components/withings/common.py +++ b/tests/components/withings/common.py @@ -201,14 +201,14 @@ class ComponentFactory: self._hass, { "flow_id": result["flow_id"], - "redirect_uri": "http://127.0.0.1:8080/auth/external/callback", + "redirect_uri": "https://example.com/auth/external/callback", }, ) assert result["type"] == data_entry_flow.FlowResultType.EXTERNAL_STEP assert result["url"] == ( "https://account.withings.com/oauth2_user/authorize2?" f"response_type=code&client_id={self._client_id}&" - "redirect_uri=http://127.0.0.1:8080/auth/external/callback&" + "redirect_uri=https://example.com/auth/external/callback&" f"state={state}" "&scope=user.info,user.metrics,user.activity,user.sleepevents" ) diff --git a/tests/components/withings/conftest.py b/tests/components/withings/conftest.py index 787a2ee4cb08..ae4c07410c02 100644 --- a/tests/components/withings/conftest.py +++ b/tests/components/withings/conftest.py @@ -13,7 +13,10 @@ from tests.test_util.aiohttp import AiohttpClientMocker @pytest.fixture() def component_factory( - hass: HomeAssistant, hass_client_no_auth, aioclient_mock: AiohttpClientMocker + hass: HomeAssistant, + hass_client_no_auth, + aioclient_mock: AiohttpClientMocker, + current_request_with_host: None, ): """Return a factory for initializing the withings component.""" with patch(