From d10362e226d34ba656e694406a369744253e0e91 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Wed, 29 May 2024 14:38:46 +0200 Subject: [PATCH] Add AiohttpClientMocker type hints in tests (#118373) --- tests/components/android_ip_webcam/conftest.py | 3 ++- .../application_credentials/test_init.py | 2 +- tests/components/duckdns/test_init.py | 2 +- tests/components/flo/conftest.py | 3 ++- tests/components/freedns/test_init.py | 2 +- tests/components/google_domains/test_init.py | 4 +++- tests/components/habitica/test_init.py | 3 ++- tests/components/hassio/conftest.py | 14 ++++++++++---- tests/components/mobile_app/test_notify.py | 6 ++++-- tests/components/myuplink/test_config_flow.py | 6 +++--- tests/components/namecheapdns/test_init.py | 4 +++- tests/components/nest/test_config_flow.py | 9 ++++++++- tests/components/no_ip/test_init.py | 2 +- 13 files changed, 41 insertions(+), 19 deletions(-) diff --git a/tests/components/android_ip_webcam/conftest.py b/tests/components/android_ip_webcam/conftest.py index 17fc3e451a3..eea8e00a1a8 100644 --- a/tests/components/android_ip_webcam/conftest.py +++ b/tests/components/android_ip_webcam/conftest.py @@ -7,10 +7,11 @@ import pytest from homeassistant.const import CONTENT_TYPE_JSON from tests.common import load_fixture +from tests.test_util.aiohttp import AiohttpClientMocker @pytest.fixture -def aioclient_mock_fixture(aioclient_mock) -> None: +def aioclient_mock_fixture(aioclient_mock: AiohttpClientMocker) -> None: """Fixture to provide a aioclient mocker.""" aioclient_mock.get( "http://1.1.1.1:8080/status.json?show_avail=1", diff --git a/tests/components/application_credentials/test_init.py b/tests/components/application_credentials/test_init.py index f0cc79671c8..b8f5840c4f2 100644 --- a/tests/components/application_credentials/test_init.py +++ b/tests/components/application_credentials/test_init.py @@ -175,7 +175,7 @@ class OAuthFixture: async def oauth_fixture( hass: HomeAssistant, hass_client_no_auth: ClientSessionGenerator, - aioclient_mock: Any, + aioclient_mock: AiohttpClientMocker, ) -> OAuthFixture: """Fixture for testing the OAuth flow.""" return OAuthFixture(hass, hass_client_no_auth, aioclient_mock) diff --git a/tests/components/duckdns/test_init.py b/tests/components/duckdns/test_init.py index d019861af1b..c06add7156a 100644 --- a/tests/components/duckdns/test_init.py +++ b/tests/components/duckdns/test_init.py @@ -33,7 +33,7 @@ async def async_set_txt(hass, txt): @pytest.fixture -def setup_duckdns(hass, aioclient_mock): +def setup_duckdns(hass: HomeAssistant, aioclient_mock: AiohttpClientMocker) -> None: """Fixture that sets up DuckDNS.""" aioclient_mock.get( duckdns.UPDATE_URL, params={"domains": DOMAIN, "token": TOKEN}, text="OK" diff --git a/tests/components/flo/conftest.py b/tests/components/flo/conftest.py index 3cd666b7462..33d467a2abf 100644 --- a/tests/components/flo/conftest.py +++ b/tests/components/flo/conftest.py @@ -12,6 +12,7 @@ from homeassistant.const import CONF_PASSWORD, CONF_USERNAME, CONTENT_TYPE_JSON from .common import TEST_EMAIL_ADDRESS, TEST_PASSWORD, TEST_TOKEN, TEST_USER_ID from tests.common import MockConfigEntry, load_fixture +from tests.test_util.aiohttp import AiohttpClientMocker @pytest.fixture @@ -25,7 +26,7 @@ def config_entry(hass): @pytest.fixture -def aioclient_mock_fixture(aioclient_mock): +def aioclient_mock_fixture(aioclient_mock: AiohttpClientMocker) -> None: """Fixture to provide a aioclient mocker.""" now = round(time.time()) # Mocks the login response for flo. diff --git a/tests/components/freedns/test_init.py b/tests/components/freedns/test_init.py index bdb60933a19..d142fd767e1 100644 --- a/tests/components/freedns/test_init.py +++ b/tests/components/freedns/test_init.py @@ -16,7 +16,7 @@ UPDATE_URL = freedns.UPDATE_URL @pytest.fixture -def setup_freedns(hass, aioclient_mock): +def setup_freedns(hass: HomeAssistant, aioclient_mock: AiohttpClientMocker) -> None: """Fixture that sets up FreeDNS.""" params = {} params[ACCESS_TOKEN] = "" diff --git a/tests/components/google_domains/test_init.py b/tests/components/google_domains/test_init.py index a682d4ad090..bb27cf7b483 100644 --- a/tests/components/google_domains/test_init.py +++ b/tests/components/google_domains/test_init.py @@ -20,7 +20,9 @@ UPDATE_URL = f"https://{USERNAME}:{PASSWORD}@domains.google.com/nic/update" @pytest.fixture -def setup_google_domains(hass, aioclient_mock): +def setup_google_domains( + hass: HomeAssistant, aioclient_mock: AiohttpClientMocker +) -> None: """Fixture that sets up NamecheapDNS.""" aioclient_mock.get(UPDATE_URL, params={"hostname": DOMAIN}, text="ok 0.0.0.0") diff --git a/tests/components/habitica/test_init.py b/tests/components/habitica/test_init.py index 244086a632e..24c55c473b9 100644 --- a/tests/components/habitica/test_init.py +++ b/tests/components/habitica/test_init.py @@ -17,6 +17,7 @@ from homeassistant.const import ATTR_NAME from homeassistant.core import HomeAssistant from tests.common import MockConfigEntry, async_capture_events +from tests.test_util.aiohttp import AiohttpClientMocker TEST_API_CALL_ARGS = {"text": "Use API from Home Assistant", "type": "todo"} TEST_USER_NAME = "test_user" @@ -45,7 +46,7 @@ def habitica_entry(hass): @pytest.fixture -def common_requests(aioclient_mock): +def common_requests(aioclient_mock: AiohttpClientMocker) -> AiohttpClientMocker: """Register requests for the tests.""" aioclient_mock.get( "https://habitica.com/api/v3/user", diff --git a/tests/components/hassio/conftest.py b/tests/components/hassio/conftest.py index c32e2cb2bfb..98898eb2f34 100644 --- a/tests/components/hassio/conftest.py +++ b/tests/components/hassio/conftest.py @@ -7,13 +7,14 @@ from unittest.mock import Mock, patch import pytest from homeassistant.components.hassio.handler import HassIO, HassioAPIError -from homeassistant.core import CoreState +from homeassistant.core import CoreState, HomeAssistant from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.setup import async_setup_component from . import SUPERVISOR_TOKEN from tests.test_util.aiohttp import AiohttpClientMocker +from tests.typing import ClientSessionGenerator @pytest.fixture(autouse=True) @@ -45,7 +46,12 @@ def hassio_env(): @pytest.fixture -def hassio_stubs(hassio_env, hass, hass_client, aioclient_mock): +def hassio_stubs( + hassio_env, + hass: HomeAssistant, + hass_client: ClientSessionGenerator, + aioclient_mock: AiohttpClientMocker, +): """Create mock hassio http client.""" with ( patch( @@ -100,7 +106,7 @@ async def hassio_client_supervisor(hass, aiohttp_client, hassio_stubs): @pytest.fixture -async def hassio_handler(hass, aioclient_mock): +async def hassio_handler(hass: HomeAssistant, aioclient_mock: AiohttpClientMocker): """Create mock hassio handler.""" with patch.dict(os.environ, {"SUPERVISOR_TOKEN": SUPERVISOR_TOKEN}): yield HassIO(hass.loop, async_get_clientsession(hass), "127.0.0.1") @@ -109,7 +115,7 @@ async def hassio_handler(hass, aioclient_mock): @pytest.fixture def all_setup_requests( aioclient_mock: AiohttpClientMocker, request: pytest.FixtureRequest -): +) -> None: """Mock all setup requests.""" include_addons = hasattr(request, "param") and request.param.get( "include_addons", False diff --git a/tests/components/mobile_app/test_notify.py b/tests/components/mobile_app/test_notify.py index dacaba32e16..53a51938fed 100644 --- a/tests/components/mobile_app/test_notify.py +++ b/tests/components/mobile_app/test_notify.py @@ -10,13 +10,15 @@ from homeassistant.core import HomeAssistant from homeassistant.exceptions import HomeAssistantError from homeassistant.setup import async_setup_component -from tests.common import MockConfigEntry +from tests.common import MockConfigEntry, MockUser from tests.test_util.aiohttp import AiohttpClientMocker from tests.typing import WebSocketGenerator @pytest.fixture -async def setup_push_receiver(hass, aioclient_mock, hass_admin_user): +async def setup_push_receiver( + hass: HomeAssistant, aioclient_mock: AiohttpClientMocker, hass_admin_user: MockUser +) -> None: """Fixture that sets up a mocked push receiver.""" push_url = "https://mobile-push.home-assistant.dev/push" diff --git a/tests/components/myuplink/test_config_flow.py b/tests/components/myuplink/test_config_flow.py index 7c5ae2c8657..7f94d4af03f 100644 --- a/tests/components/myuplink/test_config_flow.py +++ b/tests/components/myuplink/test_config_flow.py @@ -24,9 +24,9 @@ CURRENT_SCOPE = "WRITESYSTEM READSYSTEM offline_access" async def test_full_flow( hass: HomeAssistant, - hass_client_no_auth, - aioclient_mock, - current_request_with_host, + hass_client_no_auth: ClientSessionGenerator, + aioclient_mock: AiohttpClientMocker, + current_request_with_host: None, setup_credentials, ) -> None: """Check full flow.""" diff --git a/tests/components/namecheapdns/test_init.py b/tests/components/namecheapdns/test_init.py index fdd9081331f..1d5b4ca5949 100644 --- a/tests/components/namecheapdns/test_init.py +++ b/tests/components/namecheapdns/test_init.py @@ -18,7 +18,9 @@ PASSWORD = "abcdefgh" @pytest.fixture -def setup_namecheapdns(hass, aioclient_mock): +def setup_namecheapdns( + hass: HomeAssistant, aioclient_mock: AiohttpClientMocker +) -> None: """Fixture that sets up NamecheapDNS.""" aioclient_mock.get( namecheapdns.UPDATE_URL, diff --git a/tests/components/nest/test_config_flow.py b/tests/components/nest/test_config_flow.py index cef1f5e9a86..abffb33b6b9 100644 --- a/tests/components/nest/test_config_flow.py +++ b/tests/components/nest/test_config_flow.py @@ -35,6 +35,8 @@ from .common import ( ) from tests.common import MockConfigEntry +from tests.test_util.aiohttp import AiohttpClientMocker +from tests.typing import ClientSessionGenerator WEB_REDIRECT_URL = "https://example.com/auth/external/callback" APP_REDIRECT_URL = "urn:ietf:wg:oauth:2.0:oob" @@ -189,7 +191,12 @@ class OAuthFixture: @pytest.fixture -async def oauth(hass, hass_client_no_auth, aioclient_mock, current_request_with_host): +async def oauth( + hass: HomeAssistant, + hass_client_no_auth: ClientSessionGenerator, + aioclient_mock: AiohttpClientMocker, + current_request_with_host: None, +) -> OAuthFixture: """Create the simulated oauth flow.""" return OAuthFixture(hass, hass_client_no_auth, aioclient_mock) diff --git a/tests/components/no_ip/test_init.py b/tests/components/no_ip/test_init.py index 576a04c28a0..e344b984e7d 100644 --- a/tests/components/no_ip/test_init.py +++ b/tests/components/no_ip/test_init.py @@ -22,7 +22,7 @@ USERNAME = "abc@123.com" @pytest.fixture -def setup_no_ip(hass, aioclient_mock): +def setup_no_ip(hass: HomeAssistant, aioclient_mock: AiohttpClientMocker) -> None: """Fixture that sets up NO-IP.""" aioclient_mock.get(UPDATE_URL, params={"hostname": DOMAIN}, text="good 0.0.0.0")