Add type hints to integration tests (m-p) (#87705)

This commit is contained in:
epenet 2023-02-08 16:48:54 +01:00 committed by GitHub
parent 6551eb168d
commit 3abf7ea18a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
99 changed files with 637 additions and 438 deletions

View file

@ -5,12 +5,13 @@ from mullvad_api import MullvadAPIError
from homeassistant import config_entries, setup from homeassistant import config_entries, setup
from homeassistant.components.mullvad.const import DOMAIN from homeassistant.components.mullvad.const import DOMAIN
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import FlowResultType from homeassistant.data_entry_flow import FlowResultType
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
async def test_form_user(hass): async def test_form_user(hass: HomeAssistant) -> None:
"""Test we can setup by the user.""" """Test we can setup by the user."""
await setup.async_setup_component(hass, DOMAIN, {}) await setup.async_setup_component(hass, DOMAIN, {})
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -38,7 +39,7 @@ async def test_form_user(hass):
assert len(mock_mullvad_api.mock_calls) == 1 assert len(mock_mullvad_api.mock_calls) == 1
async def test_form_user_only_once(hass): async def test_form_user_only_once(hass: HomeAssistant) -> None:
"""Test we can setup by the user only once.""" """Test we can setup by the user only once."""
MockConfigEntry(domain=DOMAIN).add_to_hass(hass) MockConfigEntry(domain=DOMAIN).add_to_hass(hass)
@ -49,7 +50,7 @@ async def test_form_user_only_once(hass):
assert result["reason"] == "already_configured" assert result["reason"] == "already_configured"
async def test_connection_error(hass): async def test_connection_error(hass: HomeAssistant) -> None:
"""Test we show an error when we have trouble connecting.""" """Test we show an error when we have trouble connecting."""
await setup.async_setup_component(hass, DOMAIN, {}) await setup.async_setup_component(hass, DOMAIN, {})
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -70,7 +71,7 @@ async def test_connection_error(hass):
assert result2["errors"] == {"base": "cannot_connect"} assert result2["errors"] == {"base": "cannot_connect"}
async def test_unknown_error(hass): async def test_unknown_error(hass: HomeAssistant) -> None:
"""Test we show an error when an unknown error occurs.""" """Test we show an error when an unknown error occurs."""
await setup.async_setup_component(hass, DOMAIN, {}) await setup.async_setup_component(hass, DOMAIN, {})
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(

View file

@ -1,12 +1,12 @@
"""Test the my init.""" """Test the my init."""
from unittest import mock from unittest import mock
from homeassistant.components.my import URL_PATH from homeassistant.components.my import URL_PATH
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
async def test_setup(hass): async def test_setup(hass: HomeAssistant) -> None:
"""Test setup.""" """Test setup."""
with mock.patch( with mock.patch(
"homeassistant.components.frontend.async_register_built_in_panel" "homeassistant.components.frontend.async_register_built_in_panel"

View file

@ -1,11 +1,11 @@
"""The scene tests for the myq platform.""" """The scene tests for the myq platform."""
from homeassistant.const import STATE_ON from homeassistant.const import STATE_ON
from homeassistant.core import HomeAssistant
from .util import async_init_integration from .util import async_init_integration
async def test_create_binary_sensors(hass): async def test_create_binary_sensors(hass: HomeAssistant) -> None:
"""Test creation of binary_sensors.""" """Test creation of binary_sensors."""
await async_init_integration(hass) await async_init_integration(hass)

View file

@ -6,11 +6,12 @@ from pymyq.errors import InvalidCredentialsError, MyQError
from homeassistant import config_entries from homeassistant import config_entries
from homeassistant.components.myq.const import DOMAIN from homeassistant.components.myq.const import DOMAIN
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
async def test_form_user(hass): async def test_form_user(hass: HomeAssistant) -> None:
"""Test we get the user form.""" """Test we get the user form."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -41,7 +42,7 @@ async def test_form_user(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_form_invalid_auth(hass): async def test_form_invalid_auth(hass: HomeAssistant) -> None:
"""Test we handle invalid auth.""" """Test we handle invalid auth."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -60,7 +61,7 @@ async def test_form_invalid_auth(hass):
assert result2["errors"] == {"password": "invalid_auth"} assert result2["errors"] == {"password": "invalid_auth"}
async def test_form_cannot_connect(hass): async def test_form_cannot_connect(hass: HomeAssistant) -> None:
"""Test we handle cannot connect error.""" """Test we handle cannot connect error."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -79,7 +80,7 @@ async def test_form_cannot_connect(hass):
assert result2["errors"] == {"base": "cannot_connect"} assert result2["errors"] == {"base": "cannot_connect"}
async def test_form_unknown_exception(hass): async def test_form_unknown_exception(hass: HomeAssistant) -> None:
"""Test we handle unknown exceptions.""" """Test we handle unknown exceptions."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -98,7 +99,7 @@ async def test_form_unknown_exception(hass):
assert result2["errors"] == {"base": "unknown"} assert result2["errors"] == {"base": "unknown"}
async def test_reauth(hass): async def test_reauth(hass: HomeAssistant) -> None:
"""Test we can reauth.""" """Test we can reauth."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,

View file

@ -1,11 +1,11 @@
"""The scene tests for the myq platform.""" """The scene tests for the myq platform."""
from homeassistant.const import STATE_CLOSED from homeassistant.const import STATE_CLOSED
from homeassistant.core import HomeAssistant
from .util import async_init_integration from .util import async_init_integration
async def test_create_covers(hass): async def test_create_covers(hass: HomeAssistant) -> None:
"""Test creation of covers.""" """Test creation of covers."""
await async_init_integration(hass) await async_init_integration(hass)

View file

@ -1,11 +1,12 @@
"""The scene tests for the myq platform.""" """The scene tests for the myq platform."""
from homeassistant.components.light import ColorMode from homeassistant.components.light import ColorMode
from homeassistant.const import STATE_OFF, STATE_ON from homeassistant.const import STATE_OFF, STATE_ON
from homeassistant.core import HomeAssistant
from .util import async_init_integration from .util import async_init_integration
async def test_create_lights(hass): async def test_create_lights(hass: HomeAssistant) -> None:
"""Test creation of lights.""" """Test creation of lights."""
await async_init_integration(hass) await async_init_integration(hass)

View file

@ -3,6 +3,7 @@ import logging
from unittest.mock import patch from unittest.mock import patch
from homeassistant.components import mythicbeastsdns from homeassistant.components import mythicbeastsdns
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -20,7 +21,7 @@ async def mbddns_update_mock(domain, password, host, ttl=60, session=None):
@patch("mbddns.update", new=mbddns_update_mock) @patch("mbddns.update", new=mbddns_update_mock)
async def test_update(hass): async def test_update(hass: HomeAssistant) -> None:
"""Run with correct values and check true is returned.""" """Run with correct values and check true is returned."""
result = await async_setup_component( result = await async_setup_component(
hass, hass,
@ -37,7 +38,7 @@ async def test_update(hass):
@patch("mbddns.update", new=mbddns_update_mock) @patch("mbddns.update", new=mbddns_update_mock)
async def test_update_fails_if_wrong_token(hass): async def test_update_fails_if_wrong_token(hass: HomeAssistant) -> None:
"""Run with incorrect token and check false is returned.""" """Run with incorrect token and check false is returned."""
result = await async_setup_component( result = await async_setup_component(
hass, hass,
@ -54,7 +55,7 @@ async def test_update_fails_if_wrong_token(hass):
@patch("mbddns.update", new=mbddns_update_mock) @patch("mbddns.update", new=mbddns_update_mock)
async def test_update_fails_if_invalid_host(hass): async def test_update_fails_if_invalid_host(hass: HomeAssistant) -> None:
"""Run with invalid characters in host and check false is returned.""" """Run with invalid characters in host and check false is returned."""
result = await async_setup_component( result = await async_setup_component(
hass, hass,

View file

@ -3,13 +3,14 @@ from unittest.mock import patch
from homeassistant.components.button import DOMAIN as BUTTON_DOMAIN, ButtonDeviceClass from homeassistant.components.button import DOMAIN as BUTTON_DOMAIN, ButtonDeviceClass
from homeassistant.const import ATTR_DEVICE_CLASS, ATTR_ENTITY_ID, STATE_UNKNOWN from homeassistant.const import ATTR_DEVICE_CLASS, ATTR_ENTITY_ID, STATE_UNKNOWN
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er from homeassistant.helpers import entity_registry as er
from homeassistant.util import dt as dt_util from homeassistant.util import dt as dt_util
from . import init_integration from . import init_integration
async def test_button(hass): async def test_button(hass: HomeAssistant) -> None:
"""Test states of the button.""" """Test states of the button."""
registry = er.async_get(hass) registry = er.async_get(hass)
@ -25,7 +26,7 @@ async def test_button(hass):
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-restart" assert entry.unique_id == "aa:bb:cc:dd:ee:ff-restart"
async def test_button_press(hass): async def test_button_press(hass: HomeAssistant) -> None:
"""Test button press.""" """Test button press."""
await init_integration(hass) await init_integration(hass)

View file

@ -9,6 +9,7 @@ from homeassistant import data_entry_flow
from homeassistant.components import zeroconf from homeassistant.components import zeroconf
from homeassistant.components.nam.const import DOMAIN from homeassistant.components.nam.const import DOMAIN
from homeassistant.config_entries import SOURCE_REAUTH, SOURCE_USER, SOURCE_ZEROCONF from homeassistant.config_entries import SOURCE_REAUTH, SOURCE_USER, SOURCE_ZEROCONF
from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
@ -27,7 +28,7 @@ DEVICE_CONFIG = {"www_basicauth_enabled": False}
DEVICE_CONFIG_AUTH = {"www_basicauth_enabled": True} DEVICE_CONFIG_AUTH = {"www_basicauth_enabled": True}
async def test_form_create_entry_without_auth(hass): async def test_form_create_entry_without_auth(hass: HomeAssistant) -> None:
"""Test that the user step without auth works.""" """Test that the user step without auth works."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER} DOMAIN, context={"source": SOURCE_USER}
@ -57,7 +58,7 @@ async def test_form_create_entry_without_auth(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_form_create_entry_with_auth(hass): async def test_form_create_entry_with_auth(hass: HomeAssistant) -> None:
"""Test that the user step with auth works.""" """Test that the user step with auth works."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER} DOMAIN, context={"source": SOURCE_USER}
@ -97,7 +98,7 @@ async def test_form_create_entry_with_auth(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_reauth_successful(hass): async def test_reauth_successful(hass: HomeAssistant) -> None:
"""Test starting a reauthentication flow.""" """Test starting a reauthentication flow."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -132,7 +133,7 @@ async def test_reauth_successful(hass):
assert result["reason"] == "reauth_successful" assert result["reason"] == "reauth_successful"
async def test_reauth_unsuccessful(hass): async def test_reauth_unsuccessful(hass: HomeAssistant) -> None:
"""Test starting a reauthentication flow.""" """Test starting a reauthentication flow."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -228,7 +229,7 @@ async def test_form_errors(hass, error):
assert result["errors"] == {"base": base_error} assert result["errors"] == {"base": base_error}
async def test_form_abort(hass): async def test_form_abort(hass: HomeAssistant) -> None:
"""Test we handle abort after error.""" """Test we handle abort after error."""
with patch( with patch(
"homeassistant.components.nam.NettigoAirMonitor.async_check_credentials", "homeassistant.components.nam.NettigoAirMonitor.async_check_credentials",
@ -247,7 +248,7 @@ async def test_form_abort(hass):
assert result["reason"] == "device_unsupported" assert result["reason"] == "device_unsupported"
async def test_form_already_configured(hass): async def test_form_already_configured(hass: HomeAssistant) -> None:
"""Test that errors are shown when duplicates are added.""" """Test that errors are shown when duplicates are added."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, unique_id="aa:bb:cc:dd:ee:ff", data=VALID_CONFIG domain=DOMAIN, unique_id="aa:bb:cc:dd:ee:ff", data=VALID_CONFIG
@ -277,7 +278,7 @@ async def test_form_already_configured(hass):
assert entry.data["host"] == "1.1.1.1" assert entry.data["host"] == "1.1.1.1"
async def test_zeroconf(hass): async def test_zeroconf(hass: HomeAssistant) -> None:
"""Test we get the form.""" """Test we get the form."""
with patch( with patch(
"homeassistant.components.nam.NettigoAirMonitor.async_check_credentials", "homeassistant.components.nam.NettigoAirMonitor.async_check_credentials",
@ -318,7 +319,7 @@ async def test_zeroconf(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_zeroconf_with_auth(hass): async def test_zeroconf_with_auth(hass: HomeAssistant) -> None:
"""Test that the zeroconf step with auth works.""" """Test that the zeroconf step with auth works."""
with patch( with patch(
"homeassistant.components.nam.NettigoAirMonitor.async_check_credentials", "homeassistant.components.nam.NettigoAirMonitor.async_check_credentials",
@ -366,7 +367,7 @@ async def test_zeroconf_with_auth(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_zeroconf_host_already_configured(hass): async def test_zeroconf_host_already_configured(hass: HomeAssistant) -> None:
"""Test that errors are shown when host is already configured.""" """Test that errors are shown when host is already configured."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, unique_id="aa:bb:cc:dd:ee:ff", data=VALID_CONFIG domain=DOMAIN, unique_id="aa:bb:cc:dd:ee:ff", data=VALID_CONFIG

View file

@ -1,13 +1,18 @@
"""Test NAM diagnostics.""" """Test NAM diagnostics."""
import json import json
from homeassistant.core import HomeAssistant
from . import init_integration from . import init_integration
from tests.common import load_fixture from tests.common import load_fixture
from tests.components.diagnostics import get_diagnostics_for_config_entry from tests.components.diagnostics import get_diagnostics_for_config_entry
from tests.typing import ClientSessionGenerator
async def test_entry_diagnostics(hass, hass_client): async def test_entry_diagnostics(
hass: HomeAssistant, hass_client: ClientSessionGenerator
) -> None:
"""Test config entry diagnostics.""" """Test config entry diagnostics."""
entry = await init_integration(hass) entry = await init_integration(hass)

View file

@ -7,6 +7,7 @@ from homeassistant.components.air_quality import DOMAIN as AIR_QUALITY_PLATFORM
from homeassistant.components.nam.const import DOMAIN from homeassistant.components.nam.const import DOMAIN
from homeassistant.config_entries import ConfigEntryState from homeassistant.config_entries import ConfigEntryState
from homeassistant.const import STATE_UNAVAILABLE from homeassistant.const import STATE_UNAVAILABLE
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er from homeassistant.helpers import entity_registry as er
from . import init_integration from . import init_integration
@ -14,7 +15,7 @@ from . import init_integration
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
async def test_async_setup_entry(hass): async def test_async_setup_entry(hass: HomeAssistant) -> None:
"""Test a successful setup entry.""" """Test a successful setup entry."""
await init_integration(hass) await init_integration(hass)
@ -24,7 +25,7 @@ async def test_async_setup_entry(hass):
assert state.state == "11.0" assert state.state == "11.0"
async def test_config_not_ready(hass): async def test_config_not_ready(hass: HomeAssistant) -> None:
"""Test for setup failure if the connection to the device fails.""" """Test for setup failure if the connection to the device fails."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -42,7 +43,7 @@ async def test_config_not_ready(hass):
assert entry.state is ConfigEntryState.SETUP_RETRY assert entry.state is ConfigEntryState.SETUP_RETRY
async def test_config_not_ready_while_checking_credentials(hass): async def test_config_not_ready_while_checking_credentials(hass: HomeAssistant) -> None:
"""Test for setup failure if the connection fails while checking credentials.""" """Test for setup failure if the connection fails while checking credentials."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -60,7 +61,7 @@ async def test_config_not_ready_while_checking_credentials(hass):
assert entry.state is ConfigEntryState.SETUP_RETRY assert entry.state is ConfigEntryState.SETUP_RETRY
async def test_config_auth_failed(hass): async def test_config_auth_failed(hass: HomeAssistant) -> None:
"""Test for setup failure if the auth fails.""" """Test for setup failure if the auth fails."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -78,7 +79,7 @@ async def test_config_auth_failed(hass):
assert entry.state is ConfigEntryState.SETUP_ERROR assert entry.state is ConfigEntryState.SETUP_ERROR
async def test_unload_entry(hass): async def test_unload_entry(hass: HomeAssistant) -> None:
"""Test successful unload of entry.""" """Test successful unload of entry."""
entry = await init_integration(hass) entry = await init_integration(hass)
@ -92,7 +93,7 @@ async def test_unload_entry(hass):
assert not hass.data.get(DOMAIN) assert not hass.data.get(DOMAIN)
async def test_remove_air_quality_entities(hass): async def test_remove_air_quality_entities(hass: HomeAssistant) -> None:
"""Test remove air_quality entities from registry.""" """Test remove air_quality entities from registry."""
registry = er.async_get(hass) registry = er.async_get(hass)

View file

@ -25,6 +25,7 @@ from homeassistant.const import (
UnitOfPressure, UnitOfPressure,
UnitOfTemperature, UnitOfTemperature,
) )
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er from homeassistant.helpers import entity_registry as er
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from homeassistant.util.dt import utcnow from homeassistant.util.dt import utcnow
@ -34,7 +35,7 @@ from . import INCOMPLETE_NAM_DATA, init_integration, nam_data
from tests.common import async_fire_time_changed from tests.common import async_fire_time_changed
async def test_sensor(hass): async def test_sensor(hass: HomeAssistant) -> None:
"""Test states of the air_quality.""" """Test states of the air_quality."""
registry = er.async_get(hass) registry = er.async_get(hass)
@ -466,7 +467,7 @@ async def test_sensor(hass):
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-mhz14a_carbon_dioxide" assert entry.unique_id == "aa:bb:cc:dd:ee:ff-mhz14a_carbon_dioxide"
async def test_sensor_disabled(hass): async def test_sensor_disabled(hass: HomeAssistant) -> None:
"""Test sensor disabled by default.""" """Test sensor disabled by default."""
await init_integration(hass) await init_integration(hass)
registry = er.async_get(hass) registry = er.async_get(hass)
@ -486,7 +487,7 @@ async def test_sensor_disabled(hass):
assert updated_entry.disabled is False assert updated_entry.disabled is False
async def test_incompleta_data_after_device_restart(hass): async def test_incompleta_data_after_device_restart(hass: HomeAssistant) -> None:
"""Test states of the air_quality after device restart.""" """Test states of the air_quality after device restart."""
await init_integration(hass) await init_integration(hass)
@ -510,7 +511,7 @@ async def test_incompleta_data_after_device_restart(hass):
assert state.state == STATE_UNAVAILABLE assert state.state == STATE_UNAVAILABLE
async def test_availability(hass): async def test_availability(hass: HomeAssistant) -> None:
"""Ensure that we mark the entities unavailable correctly when device causes an error.""" """Ensure that we mark the entities unavailable correctly when device causes an error."""
await init_integration(hass) await init_integration(hass)
@ -546,7 +547,7 @@ async def test_availability(hass):
assert state.state == "7.6" assert state.state == "7.6"
async def test_manual_update_entity(hass): async def test_manual_update_entity(hass: HomeAssistant) -> None:
"""Test manual update entity via service homeasasistant/update_entity.""" """Test manual update entity via service homeasasistant/update_entity."""
await init_integration(hass) await init_integration(hass)
@ -567,7 +568,7 @@ async def test_manual_update_entity(hass):
assert mock_get_data.call_count == 1 assert mock_get_data.call_count == 1
async def test_unique_id_migration(hass): async def test_unique_id_migration(hass: HomeAssistant) -> None:
"""Test states of the unique_id migration.""" """Test states of the unique_id migration."""
registry = er.async_get(hass) registry = er.async_get(hass)

View file

@ -4,10 +4,12 @@ from datetime import timedelta
import pytest import pytest
from homeassistant.components import namecheapdns from homeassistant.components import namecheapdns
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from homeassistant.util.dt import utcnow from homeassistant.util.dt import utcnow
from tests.common import async_fire_time_changed from tests.common import async_fire_time_changed
from tests.test_util.aiohttp import AiohttpClientMocker
HOST = "test" HOST = "test"
DOMAIN = "bla" DOMAIN = "bla"
@ -32,7 +34,7 @@ def setup_namecheapdns(hass, aioclient_mock):
) )
async def test_setup(hass, aioclient_mock): async def test_setup(hass: HomeAssistant, aioclient_mock: AiohttpClientMocker) -> None:
"""Test setup works if update passes.""" """Test setup works if update passes."""
aioclient_mock.get( aioclient_mock.get(
namecheapdns.UPDATE_URL, namecheapdns.UPDATE_URL,
@ -53,7 +55,9 @@ async def test_setup(hass, aioclient_mock):
assert aioclient_mock.call_count == 2 assert aioclient_mock.call_count == 2
async def test_setup_fails_if_update_fails(hass, aioclient_mock): async def test_setup_fails_if_update_fails(
hass: HomeAssistant, aioclient_mock: AiohttpClientMocker
) -> None:
"""Test setup fails if first update fails.""" """Test setup fails if first update fails."""
aioclient_mock.get( aioclient_mock.get(
namecheapdns.UPDATE_URL, namecheapdns.UPDATE_URL,

View file

@ -7,7 +7,6 @@ for token refresh and for testing:
The tests below exercise both cases during integration setup. The tests below exercise both cases during integration setup.
""" """
import time import time
from unittest.mock import patch from unittest.mock import patch
@ -15,6 +14,7 @@ import pytest
from homeassistant.components.nest import DOMAIN from homeassistant.components.nest import DOMAIN
from homeassistant.components.nest.const import API_URL, OAUTH2_TOKEN, SDM_SCOPES from homeassistant.components.nest.const import API_URL, OAUTH2_TOKEN, SDM_SCOPES
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from homeassistant.util import dt from homeassistant.util import dt
@ -29,6 +29,8 @@ from .common import (
create_config_entry, create_config_entry,
) )
from tests.test_util.aiohttp import AiohttpClientMocker
FAKE_UPDATED_TOKEN = "fake-updated-token" FAKE_UPDATED_TOKEN = "fake-updated-token"
@ -39,7 +41,7 @@ async def async_setup_sdm(hass):
@pytest.mark.parametrize("nest_test_config", [TEST_CONFIGFLOW_YAML_ONLY]) @pytest.mark.parametrize("nest_test_config", [TEST_CONFIGFLOW_YAML_ONLY])
async def test_auth(hass, aioclient_mock): async def test_auth(hass: HomeAssistant, aioclient_mock: AiohttpClientMocker) -> None:
"""Exercise authentication library creates valid credentials.""" """Exercise authentication library creates valid credentials."""
expiration_time = time.time() + 86400 expiration_time = time.time() + 86400
@ -91,7 +93,9 @@ async def test_auth(hass, aioclient_mock):
@pytest.mark.parametrize("nest_test_config", [TEST_CONFIGFLOW_YAML_ONLY]) @pytest.mark.parametrize("nest_test_config", [TEST_CONFIGFLOW_YAML_ONLY])
async def test_auth_expired_token(hass, aioclient_mock): async def test_auth_expired_token(
hass: HomeAssistant, aioclient_mock: AiohttpClientMocker
) -> None:
"""Verify behavior of an expired token.""" """Verify behavior of an expired token."""
expiration_time = time.time() - 86400 expiration_time = time.time() - 86400

View file

@ -4,6 +4,7 @@ from unittest.mock import patch
from homeassistant import config_entries, data_entry_flow from homeassistant import config_entries, data_entry_flow
from homeassistant.components.nest import DOMAIN, config_flow from homeassistant.components.nest import DOMAIN, config_flow
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from .common import TEST_CONFIG_LEGACY from .common import TEST_CONFIG_LEGACY
@ -13,7 +14,7 @@ from tests.common import MockConfigEntry
CONFIG = TEST_CONFIG_LEGACY.config CONFIG = TEST_CONFIG_LEGACY.config
async def test_abort_if_single_instance_allowed(hass): async def test_abort_if_single_instance_allowed(hass: HomeAssistant) -> None:
"""Test we abort if Nest is already setup.""" """Test we abort if Nest is already setup."""
existing_entry = MockConfigEntry(domain=DOMAIN, data={}) existing_entry = MockConfigEntry(domain=DOMAIN, data={})
existing_entry.add_to_hass(hass) existing_entry.add_to_hass(hass)
@ -28,7 +29,7 @@ async def test_abort_if_single_instance_allowed(hass):
assert result["reason"] == "single_instance_allowed" assert result["reason"] == "single_instance_allowed"
async def test_full_flow_implementation(hass): async def test_full_flow_implementation(hass: HomeAssistant) -> None:
"""Test registering an implementation and finishing flow works.""" """Test registering an implementation and finishing flow works."""
assert await async_setup_component(hass, DOMAIN, CONFIG) assert await async_setup_component(hass, DOMAIN, CONFIG)
await hass.async_block_till_done() await hass.async_block_till_done()
@ -75,7 +76,7 @@ async def test_full_flow_implementation(hass):
assert result["title"] == "Nest (via configuration.yaml)" assert result["title"] == "Nest (via configuration.yaml)"
async def test_not_pick_implementation_if_only_one(hass): async def test_not_pick_implementation_if_only_one(hass: HomeAssistant) -> None:
"""Test we pick the default implementation when registered.""" """Test we pick the default implementation when registered."""
assert await async_setup_component(hass, DOMAIN, CONFIG) assert await async_setup_component(hass, DOMAIN, CONFIG)
await hass.async_block_till_done() await hass.async_block_till_done()
@ -87,7 +88,7 @@ async def test_not_pick_implementation_if_only_one(hass):
assert result["step_id"] == "link" assert result["step_id"] == "link"
async def test_abort_if_timeout_generating_auth_url(hass): async def test_abort_if_timeout_generating_auth_url(hass: HomeAssistant) -> None:
"""Test we abort if generating authorize url fails.""" """Test we abort if generating authorize url fails."""
with patch( with patch(
"homeassistant.components.nest.legacy.local_auth.generate_auth_url", "homeassistant.components.nest.legacy.local_auth.generate_auth_url",
@ -103,7 +104,7 @@ async def test_abort_if_timeout_generating_auth_url(hass):
assert result["reason"] == "authorize_url_timeout" assert result["reason"] == "authorize_url_timeout"
async def test_abort_if_exception_generating_auth_url(hass): async def test_abort_if_exception_generating_auth_url(hass: HomeAssistant) -> None:
"""Test we abort if generating authorize url blows up.""" """Test we abort if generating authorize url blows up."""
with patch( with patch(
"homeassistant.components.nest.legacy.local_auth.generate_auth_url", "homeassistant.components.nest.legacy.local_auth.generate_auth_url",
@ -119,7 +120,7 @@ async def test_abort_if_exception_generating_auth_url(hass):
assert result["reason"] == "unknown_authorize_url_generation" assert result["reason"] == "unknown_authorize_url_generation"
async def test_verify_code_timeout(hass): async def test_verify_code_timeout(hass: HomeAssistant) -> None:
"""Test verify code timing out.""" """Test verify code timing out."""
assert await async_setup_component(hass, DOMAIN, CONFIG) assert await async_setup_component(hass, DOMAIN, CONFIG)
await hass.async_block_till_done() await hass.async_block_till_done()
@ -142,7 +143,7 @@ async def test_verify_code_timeout(hass):
assert result["errors"] == {"code": "timeout"} assert result["errors"] == {"code": "timeout"}
async def test_verify_code_invalid(hass): async def test_verify_code_invalid(hass: HomeAssistant) -> None:
"""Test verify code invalid.""" """Test verify code invalid."""
assert await async_setup_component(hass, DOMAIN, CONFIG) assert await async_setup_component(hass, DOMAIN, CONFIG)
await hass.async_block_till_done() await hass.async_block_till_done()
@ -165,7 +166,7 @@ async def test_verify_code_invalid(hass):
assert result["errors"] == {"code": "invalid_pin"} assert result["errors"] == {"code": "invalid_pin"}
async def test_verify_code_unknown_error(hass): async def test_verify_code_unknown_error(hass: HomeAssistant) -> None:
"""Test verify code unknown error.""" """Test verify code unknown error."""
assert await async_setup_component(hass, DOMAIN, CONFIG) assert await async_setup_component(hass, DOMAIN, CONFIG)
await hass.async_block_till_done() await hass.async_block_till_done()
@ -188,7 +189,7 @@ async def test_verify_code_unknown_error(hass):
assert result["errors"] == {"code": "unknown"} assert result["errors"] == {"code": "unknown"}
async def test_verify_code_exception(hass): async def test_verify_code_exception(hass: HomeAssistant) -> None:
"""Test verify code blows up.""" """Test verify code blows up."""
assert await async_setup_component(hass, DOMAIN, CONFIG) assert await async_setup_component(hass, DOMAIN, CONFIG)
await hass.async_block_till_done() await hass.async_block_till_done()
@ -211,7 +212,7 @@ async def test_verify_code_exception(hass):
assert result["errors"] == {"code": "internal_error"} assert result["errors"] == {"code": "internal_error"}
async def test_step_import(hass): async def test_step_import(hass: HomeAssistant) -> None:
"""Test that we trigger import when configuring with client.""" """Test that we trigger import when configuring with client."""
with patch("os.path.isfile", return_value=False): with patch("os.path.isfile", return_value=False):
assert await async_setup_component(hass, DOMAIN, CONFIG) assert await async_setup_component(hass, DOMAIN, CONFIG)
@ -224,7 +225,7 @@ async def test_step_import(hass):
assert result["step_id"] == "link" assert result["step_id"] == "link"
async def test_step_import_with_token_cache(hass): async def test_step_import_with_token_cache(hass: HomeAssistant) -> None:
"""Test that we import existing token cache.""" """Test that we import existing token cache."""
with patch("os.path.isfile", return_value=True), patch( with patch("os.path.isfile", return_value=True), patch(
"homeassistant.components.nest.config_flow.load_json", "homeassistant.components.nest.config_flow.load_json",

View file

@ -14,6 +14,7 @@ from homeassistant.components.netatmo.const import (
OAUTH2_TOKEN, OAUTH2_TOKEN,
) )
from homeassistant.const import CONF_CLIENT_ID, CONF_CLIENT_SECRET from homeassistant.const import CONF_CLIENT_ID, CONF_CLIENT_SECRET
from homeassistant.core import HomeAssistant
from homeassistant.helpers import config_entry_oauth2_flow from homeassistant.helpers import config_entry_oauth2_flow
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
@ -24,7 +25,7 @@ CLIENT_SECRET = "5678"
VALID_CONFIG = {} VALID_CONFIG = {}
async def test_abort_if_existing_entry(hass): async def test_abort_if_existing_entry(hass: HomeAssistant) -> None:
"""Check flow abort when an entry already exist.""" """Check flow abort when an entry already exist."""
MockConfigEntry(domain=DOMAIN).add_to_hass(hass) MockConfigEntry(domain=DOMAIN).add_to_hass(hass)
@ -110,7 +111,7 @@ async def test_full_flow(
assert len(mock_setup.mock_calls) == 1 assert len(mock_setup.mock_calls) == 1
async def test_option_flow(hass): async def test_option_flow(hass: HomeAssistant) -> None:
"""Test config flow options.""" """Test config flow options."""
valid_option = { valid_option = {
"lat_ne": 32.91336, "lat_ne": 32.91336,
@ -168,7 +169,7 @@ async def test_option_flow(hass):
assert config_entry.options[CONF_WEATHER_AREAS]["Home"][k] == v assert config_entry.options[CONF_WEATHER_AREAS]["Home"][k] == v
async def test_option_flow_wrong_coordinates(hass): async def test_option_flow_wrong_coordinates(hass: HomeAssistant) -> None:
"""Test config flow options with mixed up coordinates.""" """Test config flow options with mixed up coordinates."""
valid_option = { valid_option = {
"lat_ne": 32.1234567, "lat_ne": 32.1234567,

View file

@ -9,7 +9,7 @@ from pyatmo.const import ALL_SCOPES
from homeassistant import config_entries from homeassistant import config_entries
from homeassistant.components.netatmo import DOMAIN from homeassistant.components.netatmo import DOMAIN
from homeassistant.const import CONF_WEBHOOK_ID from homeassistant.const import CONF_WEBHOOK_ID
from homeassistant.core import CoreState from homeassistant.core import CoreState, HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from homeassistant.util import dt from homeassistant.util import dt
@ -222,7 +222,7 @@ async def test_setup_with_cloud(hass, config_entry):
assert not hass.config_entries.async_entries(DOMAIN) assert not hass.config_entries.async_entries(DOMAIN)
async def test_setup_with_cloudhook(hass): async def test_setup_with_cloudhook(hass: HomeAssistant) -> None:
"""Test if set up with active cloud subscription and cloud hook.""" """Test if set up with active cloud subscription and cloud hook."""
config_entry = MockConfigEntry( config_entry = MockConfigEntry(
domain="netatmo", domain="netatmo",
@ -341,7 +341,7 @@ async def test_setup_component_with_delay(hass, config_entry):
mock_dropwebhook.assert_called_once() mock_dropwebhook.assert_called_once()
async def test_setup_component_invalid_token_scope(hass): async def test_setup_component_invalid_token_scope(hass: HomeAssistant) -> None:
"""Test handling of invalid token scope.""" """Test handling of invalid token scope."""
config_entry = MockConfigEntry( config_entry = MockConfigEntry(
domain="netatmo", domain="netatmo",

View file

@ -12,12 +12,13 @@ from homeassistant.components.media_source import (
async_resolve_media, async_resolve_media,
) )
from homeassistant.components.netatmo import DATA_CAMERAS, DATA_EVENTS, DOMAIN from homeassistant.components.netatmo import DATA_CAMERAS, DATA_EVENTS, DOMAIN
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from tests.common import load_fixture from tests.common import load_fixture
async def test_async_browse_media(hass): async def test_async_browse_media(hass: HomeAssistant) -> None:
"""Test browse media.""" """Test browse media."""
assert await async_setup_component(hass, DOMAIN, {}) assert await async_setup_component(hass, DOMAIN, {})

View file

@ -21,6 +21,7 @@ from homeassistant.const import (
CONF_SSL, CONF_SSL,
CONF_USERNAME, CONF_USERNAME,
) )
from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
@ -209,7 +210,7 @@ async def test_abort_if_already_setup(hass, service):
assert result["reason"] == "already_configured" assert result["reason"] == "already_configured"
async def test_ssdp_already_configured(hass): async def test_ssdp_already_configured(hass: HomeAssistant) -> None:
"""Test ssdp abort when the router is already configured.""" """Test ssdp abort when the router is already configured."""
MockConfigEntry( MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -235,7 +236,7 @@ async def test_ssdp_already_configured(hass):
assert result["reason"] == "already_configured" assert result["reason"] == "already_configured"
async def test_ssdp_ipv6(hass): async def test_ssdp_ipv6(hass: HomeAssistant) -> None:
"""Test ssdp abort when using a ipv6 address.""" """Test ssdp abort when using a ipv6 address."""
MockConfigEntry( MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,

View file

@ -1,11 +1,11 @@
"""The binary_sensor tests for the nexia platform.""" """The binary_sensor tests for the nexia platform."""
from homeassistant.const import STATE_OFF, STATE_ON from homeassistant.const import STATE_OFF, STATE_ON
from homeassistant.core import HomeAssistant
from .util import async_init_integration from .util import async_init_integration
async def test_create_binary_sensors(hass): async def test_create_binary_sensors(hass: HomeAssistant) -> None:
"""Test creation of binary sensors.""" """Test creation of binary sensors."""
await async_init_integration(hass) await async_init_integration(hass)

View file

@ -1,10 +1,11 @@
"""The lock tests for the august platform.""" """The lock tests for the august platform."""
from homeassistant.components.climate import HVACMode from homeassistant.components.climate import HVACMode
from homeassistant.core import HomeAssistant
from .util import async_init_integration from .util import async_init_integration
async def test_climate_zones(hass): async def test_climate_zones(hass: HomeAssistant) -> None:
"""Test creation climate zones.""" """Test creation climate zones."""
await async_init_integration(hass) await async_init_integration(hass)

View file

@ -9,6 +9,7 @@ import pytest
from homeassistant import config_entries from homeassistant import config_entries
from homeassistant.components.nexia.const import CONF_BRAND, DOMAIN from homeassistant.components.nexia.const import CONF_BRAND, DOMAIN
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
from homeassistant.core import HomeAssistant
@pytest.mark.parametrize("brand", [BRAND_ASAIR, BRAND_NEXIA]) @pytest.mark.parametrize("brand", [BRAND_ASAIR, BRAND_NEXIA])
@ -47,7 +48,7 @@ async def test_form(hass, brand):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_form_invalid_auth(hass): async def test_form_invalid_auth(hass: HomeAssistant) -> None:
"""Test we handle invalid auth.""" """Test we handle invalid auth."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -72,7 +73,7 @@ async def test_form_invalid_auth(hass):
assert result2["errors"] == {"base": "invalid_auth"} assert result2["errors"] == {"base": "invalid_auth"}
async def test_form_cannot_connect(hass): async def test_form_cannot_connect(hass: HomeAssistant) -> None:
"""Test we handle cannot connect error.""" """Test we handle cannot connect error."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -95,7 +96,7 @@ async def test_form_cannot_connect(hass):
assert result2["errors"] == {"base": "cannot_connect"} assert result2["errors"] == {"base": "cannot_connect"}
async def test_form_invalid_auth_http_401(hass): async def test_form_invalid_auth_http_401(hass: HomeAssistant) -> None:
"""Test we handle invalid auth error from http 401.""" """Test we handle invalid auth error from http 401."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -120,7 +121,7 @@ async def test_form_invalid_auth_http_401(hass):
assert result2["errors"] == {"base": "invalid_auth"} assert result2["errors"] == {"base": "invalid_auth"}
async def test_form_cannot_connect_not_found(hass): async def test_form_cannot_connect_not_found(hass: HomeAssistant) -> None:
"""Test we handle cannot connect from an http not found error.""" """Test we handle cannot connect from an http not found error."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -145,7 +146,7 @@ async def test_form_cannot_connect_not_found(hass):
assert result2["errors"] == {"base": "cannot_connect"} assert result2["errors"] == {"base": "cannot_connect"}
async def test_form_broad_exception(hass): async def test_form_broad_exception(hass: HomeAssistant) -> None:
"""Test we handle invalid auth error.""" """Test we handle invalid auth error."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}

View file

@ -1,11 +1,15 @@
"""Test august diagnostics.""" """Test august diagnostics."""
from homeassistant.core import HomeAssistant
from .util import async_init_integration from .util import async_init_integration
from tests.components.diagnostics import get_diagnostics_for_config_entry from tests.components.diagnostics import get_diagnostics_for_config_entry
from tests.typing import ClientSessionGenerator
async def test_diagnostics(hass, hass_client): async def test_diagnostics(
hass: HomeAssistant, hass_client: ClientSessionGenerator
) -> None:
"""Test generating diagnostics for a config entry.""" """Test generating diagnostics for a config entry."""
entry = await async_init_integration(hass) entry = await async_init_integration(hass)

View file

@ -1,13 +1,14 @@
"""The init tests for the nexia platform.""" """The init tests for the nexia platform."""
from homeassistant.components.nexia.const import DOMAIN from homeassistant.components.nexia.const import DOMAIN
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr, entity_registry as er from homeassistant.helpers import device_registry as dr, entity_registry as er
from homeassistant.helpers.entity_registry import EntityRegistry from homeassistant.helpers.entity_registry import EntityRegistry
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from .util import async_init_integration from .util import async_init_integration
from tests.typing import WebSocketGenerator
async def remove_device(ws_client, device_id, config_entry_id): async def remove_device(ws_client, device_id, config_entry_id):
"""Remove config entry from a device.""" """Remove config entry from a device."""
@ -23,7 +24,9 @@ async def remove_device(ws_client, device_id, config_entry_id):
return response["success"] return response["success"]
async def test_device_remove_devices(hass, hass_ws_client): async def test_device_remove_devices(
hass: HomeAssistant, hass_ws_client: WebSocketGenerator
) -> None:
"""Test we can only remove a device that no longer exists.""" """Test we can only remove a device that no longer exists."""
await async_setup_component(hass, "config", {}) await async_setup_component(hass, "config", {})
config_entry = await async_init_integration(hass) config_entry = await async_init_integration(hass)

View file

@ -1,9 +1,10 @@
"""The scene tests for the nexia platform.""" """The scene tests for the nexia platform."""
from homeassistant.core import HomeAssistant
from .util import async_init_integration from .util import async_init_integration
async def test_automation_scenes(hass): async def test_automation_scenes(hass: HomeAssistant) -> None:
"""Test creation automation scenes.""" """Test creation automation scenes."""
await async_init_integration(hass) await async_init_integration(hass)

View file

@ -1,11 +1,11 @@
"""The sensor tests for the nexia platform.""" """The sensor tests for the nexia platform."""
from homeassistant.const import PERCENTAGE, UnitOfTemperature from homeassistant.const import PERCENTAGE, UnitOfTemperature
from homeassistant.core import HomeAssistant
from .util import async_init_integration from .util import async_init_integration
async def test_create_sensors(hass): async def test_create_sensors(hass: HomeAssistant) -> None:
"""Test creation of sensors.""" """Test creation of sensors."""
await async_init_integration(hass) await async_init_integration(hass)

View file

@ -1,11 +1,11 @@
"""The switch tests for the nexia platform.""" """The switch tests for the nexia platform."""
from homeassistant.const import STATE_ON from homeassistant.const import STATE_ON
from homeassistant.core import HomeAssistant
from .util import async_init_integration from .util import async_init_integration
async def test_hold_switch(hass): async def test_hold_switch(hass: HomeAssistant) -> None:
"""Test creation of the hold switch.""" """Test creation of the hold switch."""
await async_init_integration(hass) await async_init_integration(hass)
assert hass.states.get("switch.nick_office_hold").state == STATE_ON assert hass.states.get("switch.nick_office_hold").state == STATE_ON

View file

@ -5,6 +5,7 @@ from notifications_android_tv.notifications import ConnectError
from homeassistant import config_entries, data_entry_flow from homeassistant import config_entries, data_entry_flow
from homeassistant.components.nfandroidtv.const import DOMAIN from homeassistant.components.nfandroidtv.const import DOMAIN
from homeassistant.core import HomeAssistant
from . import ( from . import (
CONF_CONFIG_FLOW, CONF_CONFIG_FLOW,
@ -25,7 +26,7 @@ def _patch_setup():
) )
async def test_flow_user(hass): async def test_flow_user(hass: HomeAssistant) -> None:
"""Test user initialized flow.""" """Test user initialized flow."""
mocked_tv = await _create_mocked_tv() mocked_tv = await _create_mocked_tv()
with _patch_config_flow_tv(mocked_tv), _patch_setup(): with _patch_config_flow_tv(mocked_tv), _patch_setup():
@ -42,7 +43,7 @@ async def test_flow_user(hass):
assert result["data"] == CONF_DATA assert result["data"] == CONF_DATA
async def test_flow_user_already_configured(hass): async def test_flow_user_already_configured(hass: HomeAssistant) -> None:
"""Test user initialized flow with duplicate server.""" """Test user initialized flow with duplicate server."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -66,7 +67,7 @@ async def test_flow_user_already_configured(hass):
assert result["reason"] == "already_configured" assert result["reason"] == "already_configured"
async def test_flow_user_cannot_connect(hass): async def test_flow_user_cannot_connect(hass: HomeAssistant) -> None:
"""Test user initialized flow with unreachable server.""" """Test user initialized flow with unreachable server."""
mocked_tv = await _create_mocked_tv(True) mocked_tv = await _create_mocked_tv(True)
with _patch_config_flow_tv(mocked_tv) as tvmock: with _patch_config_flow_tv(mocked_tv) as tvmock:
@ -81,7 +82,7 @@ async def test_flow_user_cannot_connect(hass):
assert result["errors"] == {"base": "cannot_connect"} assert result["errors"] == {"base": "cannot_connect"}
async def test_flow_user_unknown_error(hass): async def test_flow_user_unknown_error(hass: HomeAssistant) -> None:
"""Test user initialized flow with unreachable server.""" """Test user initialized flow with unreachable server."""
mocked_tv = await _create_mocked_tv(True) mocked_tv = await _create_mocked_tv(True)
with _patch_config_flow_tv(mocked_tv) as tvmock: with _patch_config_flow_tv(mocked_tv) as tvmock:

View file

@ -8,6 +8,7 @@ from homeassistant import config_entries, data_entry_flow
from homeassistant.components.nightscout.const import DOMAIN from homeassistant.components.nightscout.const import DOMAIN
from homeassistant.components.nightscout.utils import hash_from_url from homeassistant.components.nightscout.utils import hash_from_url
from homeassistant.const import CONF_URL from homeassistant.const import CONF_URL
from homeassistant.core import HomeAssistant
from . import GLUCOSE_READINGS, SERVER_STATUS, SERVER_STATUS_STATUS_ONLY from . import GLUCOSE_READINGS, SERVER_STATUS, SERVER_STATUS_STATUS_ONLY
@ -16,7 +17,7 @@ from tests.common import MockConfigEntry
CONFIG = {CONF_URL: "https://some.url:1234"} CONFIG = {CONF_URL: "https://some.url:1234"}
async def test_form(hass): async def test_form(hass: HomeAssistant) -> None:
"""Test we get the user initiated form.""" """Test we get the user initiated form."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -38,7 +39,7 @@ async def test_form(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_user_form_cannot_connect(hass): async def test_user_form_cannot_connect(hass: HomeAssistant) -> None:
"""Test we handle cannot connect error.""" """Test we handle cannot connect error."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -57,7 +58,7 @@ async def test_user_form_cannot_connect(hass):
assert result2["errors"] == {"base": "cannot_connect"} assert result2["errors"] == {"base": "cannot_connect"}
async def test_user_form_api_key_required(hass): async def test_user_form_api_key_required(hass: HomeAssistant) -> None:
"""Test we handle an unauthorized error.""" """Test we handle an unauthorized error."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -79,7 +80,7 @@ async def test_user_form_api_key_required(hass):
assert result2["errors"] == {"base": "invalid_auth"} assert result2["errors"] == {"base": "invalid_auth"}
async def test_user_form_unexpected_exception(hass): async def test_user_form_unexpected_exception(hass: HomeAssistant) -> None:
"""Test we handle unexpected exception.""" """Test we handle unexpected exception."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -98,7 +99,7 @@ async def test_user_form_unexpected_exception(hass):
assert result2["errors"] == {"base": "unknown"} assert result2["errors"] == {"base": "unknown"}
async def test_user_form_duplicate(hass): async def test_user_form_duplicate(hass: HomeAssistant) -> None:
"""Test duplicate entries.""" """Test duplicate entries."""
with _patch_glucose_readings(), _patch_server_status(): with _patch_glucose_readings(), _patch_server_status():
unique_id = hash_from_url(CONFIG[CONF_URL]) unique_id = hash_from_url(CONFIG[CONF_URL])

View file

@ -6,13 +6,14 @@ from aiohttp import ClientError
from homeassistant.components.nightscout.const import DOMAIN from homeassistant.components.nightscout.const import DOMAIN
from homeassistant.config_entries import ConfigEntryState from homeassistant.config_entries import ConfigEntryState
from homeassistant.const import CONF_URL from homeassistant.const import CONF_URL
from homeassistant.core import HomeAssistant
from . import init_integration from . import init_integration
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
async def test_unload_entry(hass): async def test_unload_entry(hass: HomeAssistant) -> None:
"""Test successful unload of entry.""" """Test successful unload of entry."""
entry = await init_integration(hass) entry = await init_integration(hass)
@ -26,7 +27,7 @@ async def test_unload_entry(hass):
assert not hass.data.get(DOMAIN) assert not hass.data.get(DOMAIN)
async def test_async_setup_raises_entry_not_ready(hass): async def test_async_setup_raises_entry_not_ready(hass: HomeAssistant) -> None:
"""Test that it throws ConfigEntryNotReady when exception occurs during setup.""" """Test that it throws ConfigEntryNotReady when exception occurs during setup."""
config_entry = MockConfigEntry( config_entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,

View file

@ -1,11 +1,11 @@
"""The sensor tests for the Nightscout platform.""" """The sensor tests for the Nightscout platform."""
from homeassistant.components.nightscout.const import ( from homeassistant.components.nightscout.const import (
ATTR_DELTA, ATTR_DELTA,
ATTR_DEVICE, ATTR_DEVICE,
ATTR_DIRECTION, ATTR_DIRECTION,
) )
from homeassistant.const import ATTR_DATE, ATTR_ICON, STATE_UNAVAILABLE from homeassistant.const import ATTR_DATE, ATTR_ICON, STATE_UNAVAILABLE
from homeassistant.core import HomeAssistant
from . import ( from . import (
GLUCOSE_READINGS, GLUCOSE_READINGS,
@ -15,7 +15,7 @@ from . import (
) )
async def test_sensor_state(hass): async def test_sensor_state(hass: HomeAssistant) -> None:
"""Test sensor state data.""" """Test sensor state data."""
await init_integration(hass) await init_integration(hass)
@ -25,7 +25,7 @@ async def test_sensor_state(hass):
) )
async def test_sensor_error(hass): async def test_sensor_error(hass: HomeAssistant) -> None:
"""Test sensor state data.""" """Test sensor state data."""
await init_integration_unavailable(hass) await init_integration_unavailable(hass)
@ -33,7 +33,7 @@ async def test_sensor_error(hass):
assert test_glucose_sensor.state == STATE_UNAVAILABLE assert test_glucose_sensor.state == STATE_UNAVAILABLE
async def test_sensor_empty_response(hass): async def test_sensor_empty_response(hass: HomeAssistant) -> None:
"""Test sensor state data.""" """Test sensor state data."""
await init_integration_empty_response(hass) await init_integration_empty_response(hass)
@ -41,7 +41,7 @@ async def test_sensor_empty_response(hass):
assert test_glucose_sensor.state == STATE_UNAVAILABLE assert test_glucose_sensor.state == STATE_UNAVAILABLE
async def test_sensor_attributes(hass): async def test_sensor_attributes(hass: HomeAssistant) -> None:
"""Test sensor attributes.""" """Test sensor attributes."""
await init_integration(hass) await init_integration(hass)

View file

@ -4,10 +4,12 @@ from datetime import timedelta
import pytest import pytest
from homeassistant.components import no_ip from homeassistant.components import no_ip
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from homeassistant.util.dt import utcnow from homeassistant.util.dt import utcnow
from tests.common import async_fire_time_changed from tests.common import async_fire_time_changed
from tests.test_util.aiohttp import AiohttpClientMocker
DOMAIN = "test.example.com" DOMAIN = "test.example.com"
@ -38,7 +40,7 @@ def setup_no_ip(hass, aioclient_mock):
) )
async def test_setup(hass, aioclient_mock): async def test_setup(hass: HomeAssistant, aioclient_mock: AiohttpClientMocker) -> None:
"""Test setup works if update passes.""" """Test setup works if update passes."""
aioclient_mock.get(UPDATE_URL, params={"hostname": DOMAIN}, text="nochg 0.0.0.0") aioclient_mock.get(UPDATE_URL, params={"hostname": DOMAIN}, text="nochg 0.0.0.0")
@ -55,7 +57,9 @@ async def test_setup(hass, aioclient_mock):
assert aioclient_mock.call_count == 2 assert aioclient_mock.call_count == 2
async def test_setup_fails_if_update_fails(hass, aioclient_mock): async def test_setup_fails_if_update_fails(
hass: HomeAssistant, aioclient_mock: AiohttpClientMocker
) -> None:
"""Test setup fails if first update fails.""" """Test setup fails if first update fails."""
aioclient_mock.get(UPDATE_URL, params={"hostname": DOMAIN}, text="nohost") aioclient_mock.get(UPDATE_URL, params={"hostname": DOMAIN}, text="nohost")
@ -68,7 +72,9 @@ async def test_setup_fails_if_update_fails(hass, aioclient_mock):
assert aioclient_mock.call_count == 1 assert aioclient_mock.call_count == 1
async def test_setup_fails_if_wrong_auth(hass, aioclient_mock): async def test_setup_fails_if_wrong_auth(
hass: HomeAssistant, aioclient_mock: AiohttpClientMocker
) -> None:
"""Test setup fails if first update fails through wrong authentication.""" """Test setup fails if first update fails through wrong authentication."""
aioclient_mock.get(UPDATE_URL, params={"hostname": DOMAIN}, text="badauth") aioclient_mock.get(UPDATE_URL, params={"hostname": DOMAIN}, text="badauth")

View file

@ -1,8 +1,8 @@
"""The tests for notify services that change targets.""" """The tests for notify services that change targets."""
import asyncio import asyncio
from unittest.mock import Mock, patch from unittest.mock import Mock, patch
import pytest
import yaml import yaml
from homeassistant import config as hass_config from homeassistant import config as hass_config
@ -124,7 +124,9 @@ class NotificationService(notify.BaseNotificationService):
return self.target_list return self.target_list
async def test_warn_template(hass, caplog): async def test_warn_template(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test warning when template used.""" """Test warning when template used."""
assert await async_setup_component(hass, "notify", {}) assert await async_setup_component(hass, "notify", {})

View file

@ -1,9 +1,10 @@
"""The tests for notify_events.""" """The tests for notify_events."""
from homeassistant.components.notify_events.const import DOMAIN from homeassistant.components.notify_events.const import DOMAIN
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
async def test_setup(hass): async def test_setup(hass: HomeAssistant) -> None:
"""Test setup of the integration.""" """Test setup of the integration."""
config = {"notify_events": {"token": "ABC"}} config = {"notify_events": {"token": "ABC"}}
assert await async_setup_component(hass, DOMAIN, config) assert await async_setup_component(hass, DOMAIN, config)

View file

@ -5,11 +5,12 @@ from homeassistant.components.notify_events.notify import (
ATTR_PRIORITY, ATTR_PRIORITY,
ATTR_TOKEN, ATTR_TOKEN,
) )
from homeassistant.core import HomeAssistant
from tests.common import async_mock_service from tests.common import async_mock_service
async def test_send_msg(hass): async def test_send_msg(hass: HomeAssistant) -> None:
"""Test notify.events service.""" """Test notify.events service."""
notify_calls = async_mock_service(hass, DOMAIN, "events") notify_calls = async_mock_service(hass, DOMAIN, "events")

View file

@ -33,6 +33,7 @@ from homeassistant.const import (
EVENT_HOMEASSISTANT_STOP, EVENT_HOMEASSISTANT_STOP,
UnitOfLength, UnitOfLength,
) )
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
import homeassistant.util.dt as dt_util import homeassistant.util.dt as dt_util
@ -89,7 +90,7 @@ def _generate_mock_feed_entry(
return feed_entry return feed_entry
async def test_setup(hass): async def test_setup(hass: HomeAssistant) -> None:
"""Test the general setup of the platform.""" """Test the general setup of the platform."""
# Set up some mock feed entries for this test. # Set up some mock feed entries for this test.
mock_entry_1 = _generate_mock_feed_entry( mock_entry_1 = _generate_mock_feed_entry(
@ -226,7 +227,7 @@ async def test_setup(hass):
await hass.async_block_till_done() await hass.async_block_till_done()
async def test_setup_with_custom_location(hass): async def test_setup_with_custom_location(hass: HomeAssistant) -> None:
"""Test the setup with a custom location.""" """Test the setup with a custom location."""
# Set up some mock feed entries for this test. # Set up some mock feed entries for this test.
mock_entry_1 = _generate_mock_feed_entry("1234", "Title 1", 20.5, (-31.1, 150.1)) mock_entry_1 = _generate_mock_feed_entry("1234", "Title 1", 20.5, (-31.1, 150.1))

View file

@ -4,6 +4,7 @@ from unittest.mock import patch
from homeassistant.components.nuheat.const import DOMAIN from homeassistant.components.nuheat.const import DOMAIN
from homeassistant.const import ATTR_ENTITY_ID from homeassistant.const import ATTR_ENTITY_ID
from homeassistant.core import HomeAssistant
import homeassistant.util.dt as dt_util import homeassistant.util.dt as dt_util
from .mocks import ( from .mocks import (
@ -18,7 +19,7 @@ from .mocks import (
from tests.common import MockConfigEntry, async_fire_time_changed from tests.common import MockConfigEntry, async_fire_time_changed
async def test_climate_thermostat_run(hass): async def test_climate_thermostat_run(hass: HomeAssistant) -> None:
"""Test a thermostat with the schedule running.""" """Test a thermostat with the schedule running."""
mock_thermostat = _get_mock_thermostat_run() mock_thermostat = _get_mock_thermostat_run()
mock_nuheat = _get_mock_nuheat(get_thermostat=mock_thermostat) mock_nuheat = _get_mock_nuheat(get_thermostat=mock_thermostat)
@ -51,7 +52,9 @@ async def test_climate_thermostat_run(hass):
assert all(item in state.attributes.items() for item in expected_attributes.items()) assert all(item in state.attributes.items() for item in expected_attributes.items())
async def test_climate_thermostat_schedule_hold_unavailable(hass): async def test_climate_thermostat_schedule_hold_unavailable(
hass: HomeAssistant,
) -> None:
"""Test a thermostat with the schedule hold that is offline.""" """Test a thermostat with the schedule hold that is offline."""
mock_thermostat = _get_mock_thermostat_schedule_hold_unavailable() mock_thermostat = _get_mock_thermostat_schedule_hold_unavailable()
mock_nuheat = _get_mock_nuheat(get_thermostat=mock_thermostat) mock_nuheat = _get_mock_nuheat(get_thermostat=mock_thermostat)
@ -81,7 +84,7 @@ async def test_climate_thermostat_schedule_hold_unavailable(hass):
assert all(item in state.attributes.items() for item in expected_attributes.items()) assert all(item in state.attributes.items() for item in expected_attributes.items())
async def test_climate_thermostat_schedule_hold_available(hass): async def test_climate_thermostat_schedule_hold_available(hass: HomeAssistant) -> None:
"""Test a thermostat with the schedule hold that is online.""" """Test a thermostat with the schedule hold that is online."""
mock_thermostat = _get_mock_thermostat_schedule_hold_available() mock_thermostat = _get_mock_thermostat_schedule_hold_available()
mock_nuheat = _get_mock_nuheat(get_thermostat=mock_thermostat) mock_nuheat = _get_mock_nuheat(get_thermostat=mock_thermostat)
@ -115,7 +118,7 @@ async def test_climate_thermostat_schedule_hold_available(hass):
assert all(item in state.attributes.items() for item in expected_attributes.items()) assert all(item in state.attributes.items() for item in expected_attributes.items())
async def test_climate_thermostat_schedule_temporary_hold(hass): async def test_climate_thermostat_schedule_temporary_hold(hass: HomeAssistant) -> None:
"""Test a thermostat with the temporary schedule hold that is online.""" """Test a thermostat with the temporary schedule hold that is online."""
mock_thermostat = _get_mock_thermostat_schedule_temporary_hold() mock_thermostat = _get_mock_thermostat_schedule_temporary_hold()
mock_nuheat = _get_mock_nuheat(get_thermostat=mock_thermostat) mock_nuheat = _get_mock_nuheat(get_thermostat=mock_thermostat)

View file

@ -7,11 +7,12 @@ import requests
from homeassistant import config_entries from homeassistant import config_entries
from homeassistant.components.nuheat.const import CONF_SERIAL_NUMBER, DOMAIN from homeassistant.components.nuheat.const import CONF_SERIAL_NUMBER, DOMAIN
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
from homeassistant.core import HomeAssistant
from .mocks import _get_mock_thermostat_run from .mocks import _get_mock_thermostat_run
async def test_form_user(hass): async def test_form_user(hass: HomeAssistant) -> None:
"""Test we get the form with user source.""" """Test we get the form with user source."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -51,7 +52,7 @@ async def test_form_user(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_form_invalid_auth(hass): async def test_form_invalid_auth(hass: HomeAssistant) -> None:
"""Test we handle invalid auth.""" """Test we handle invalid auth."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -92,7 +93,7 @@ async def test_form_invalid_auth(hass):
assert result2["errors"] == {"base": "invalid_auth"} assert result2["errors"] == {"base": "invalid_auth"}
async def test_form_invalid_thermostat(hass): async def test_form_invalid_thermostat(hass: HomeAssistant) -> None:
"""Test we handle invalid thermostats.""" """Test we handle invalid thermostats."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -121,7 +122,7 @@ async def test_form_invalid_thermostat(hass):
assert result2["errors"] == {"base": "invalid_thermostat"} assert result2["errors"] == {"base": "invalid_thermostat"}
async def test_form_cannot_connect(hass): async def test_form_cannot_connect(hass: HomeAssistant) -> None:
"""Test we handle cannot connect error.""" """Test we handle cannot connect error."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}

View file

@ -2,6 +2,7 @@
from unittest.mock import patch from unittest.mock import patch
from homeassistant.components.nuheat.const import DOMAIN from homeassistant.components.nuheat.const import DOMAIN
from homeassistant.core import HomeAssistant
from .mocks import MOCK_CONFIG_ENTRY, _get_mock_nuheat from .mocks import MOCK_CONFIG_ENTRY, _get_mock_nuheat
@ -13,7 +14,7 @@ VALID_CONFIG = {
INVALID_CONFIG = {"nuheat": {"username": "warm", "password": "feet"}} INVALID_CONFIG = {"nuheat": {"username": "warm", "password": "feet"}}
async def test_init_success(hass): async def test_init_success(hass: HomeAssistant) -> None:
"""Test that we can setup with valid config.""" """Test that we can setup with valid config."""
mock_nuheat = _get_mock_nuheat() mock_nuheat = _get_mock_nuheat()

View file

@ -8,11 +8,12 @@ from homeassistant import config_entries, data_entry_flow
from homeassistant.components import dhcp from homeassistant.components import dhcp
from homeassistant.components.nuki.const import DOMAIN from homeassistant.components.nuki.const import DOMAIN
from homeassistant.const import CONF_TOKEN from homeassistant.const import CONF_TOKEN
from homeassistant.core import HomeAssistant
from .mock import HOST, MAC, MOCK_INFO, NAME, setup_nuki_integration from .mock import HOST, MAC, MOCK_INFO, NAME, setup_nuki_integration
async def test_form(hass): async def test_form(hass: HomeAssistant) -> None:
"""Test we get the form.""" """Test we get the form."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -48,7 +49,7 @@ async def test_form(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_form_invalid_auth(hass): async def test_form_invalid_auth(hass: HomeAssistant) -> None:
"""Test we handle invalid auth.""" """Test we handle invalid auth."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -71,7 +72,7 @@ async def test_form_invalid_auth(hass):
assert result2["errors"] == {"base": "invalid_auth"} assert result2["errors"] == {"base": "invalid_auth"}
async def test_form_cannot_connect(hass): async def test_form_cannot_connect(hass: HomeAssistant) -> None:
"""Test we handle cannot connect error.""" """Test we handle cannot connect error."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -94,7 +95,7 @@ async def test_form_cannot_connect(hass):
assert result2["errors"] == {"base": "cannot_connect"} assert result2["errors"] == {"base": "cannot_connect"}
async def test_form_unknown_exception(hass): async def test_form_unknown_exception(hass: HomeAssistant) -> None:
"""Test we handle unknown exceptions.""" """Test we handle unknown exceptions."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -117,7 +118,7 @@ async def test_form_unknown_exception(hass):
assert result2["errors"] == {"base": "unknown"} assert result2["errors"] == {"base": "unknown"}
async def test_form_already_configured(hass): async def test_form_already_configured(hass: HomeAssistant) -> None:
"""Test we get the form.""" """Test we get the form."""
await setup_nuki_integration(hass) await setup_nuki_integration(hass)
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -141,7 +142,7 @@ async def test_form_already_configured(hass):
assert result2["reason"] == "already_configured" assert result2["reason"] == "already_configured"
async def test_dhcp_flow(hass): async def test_dhcp_flow(hass: HomeAssistant) -> None:
"""Test that DHCP discovery for new bridge works.""" """Test that DHCP discovery for new bridge works."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, DOMAIN,
@ -180,7 +181,7 @@ async def test_dhcp_flow(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_dhcp_flow_already_configured(hass): async def test_dhcp_flow_already_configured(hass: HomeAssistant) -> None:
"""Test that DHCP doesn't setup already configured devices.""" """Test that DHCP doesn't setup already configured devices."""
await setup_nuki_integration(hass) await setup_nuki_integration(hass)
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -193,7 +194,7 @@ async def test_dhcp_flow_already_configured(hass):
assert result["reason"] == "already_configured" assert result["reason"] == "already_configured"
async def test_reauth_success(hass): async def test_reauth_success(hass: HomeAssistant) -> None:
"""Test starting a reauthentication flow.""" """Test starting a reauthentication flow."""
entry = await setup_nuki_integration(hass) entry = await setup_nuki_integration(hass)
@ -221,7 +222,7 @@ async def test_reauth_success(hass):
assert entry.data[CONF_TOKEN] == "new-token" assert entry.data[CONF_TOKEN] == "new-token"
async def test_reauth_invalid_auth(hass): async def test_reauth_invalid_auth(hass: HomeAssistant) -> None:
"""Test starting a reauthentication flow with invalid auth.""" """Test starting a reauthentication flow with invalid auth."""
entry = await setup_nuki_integration(hass) entry = await setup_nuki_integration(hass)
@ -245,7 +246,7 @@ async def test_reauth_invalid_auth(hass):
assert result2["errors"] == {"base": "invalid_auth"} assert result2["errors"] == {"base": "invalid_auth"}
async def test_reauth_cannot_connect(hass): async def test_reauth_cannot_connect(hass: HomeAssistant) -> None:
"""Test starting a reauthentication flow with cannot connect.""" """Test starting a reauthentication flow with cannot connect."""
entry = await setup_nuki_integration(hass) entry = await setup_nuki_integration(hass)
@ -269,7 +270,7 @@ async def test_reauth_cannot_connect(hass):
assert result2["errors"] == {"base": "cannot_connect"} assert result2["errors"] == {"base": "cannot_connect"}
async def test_reauth_unknown_exception(hass): async def test_reauth_unknown_exception(hass: HomeAssistant) -> None:
"""Test starting a reauthentication flow with an unknown exception.""" """Test starting a reauthentication flow with an unknown exception."""
entry = await setup_nuki_integration(hass) entry = await setup_nuki_integration(hass)

View file

@ -5,6 +5,7 @@ import voluptuous_serialize
import homeassistant.components.automation as automation import homeassistant.components.automation as automation
from homeassistant.components.device_automation import DeviceAutomationType from homeassistant.components.device_automation import DeviceAutomationType
from homeassistant.components.number import DOMAIN, device_action from homeassistant.components.number import DOMAIN, device_action
from homeassistant.core import HomeAssistant
from homeassistant.helpers import config_validation as cv, device_registry from homeassistant.helpers import config_validation as cv, device_registry
from homeassistant.helpers.entity import EntityCategory from homeassistant.helpers.entity import EntityCategory
from homeassistant.helpers.entity_registry import RegistryEntryHider from homeassistant.helpers.entity_registry import RegistryEntryHider
@ -130,7 +131,7 @@ async def test_get_action_no_state(hass, device_reg, entity_reg):
assert_lists_same(actions, expected_actions) assert_lists_same(actions, expected_actions)
async def test_action(hass): async def test_action(hass: HomeAssistant) -> None:
"""Test for actions.""" """Test for actions."""
hass.states.async_set("number.entity", 0.5, {"min_value": 0.0, "max_value": 1.0}) hass.states.async_set("number.entity", 0.5, {"min_value": 0.0, "max_value": 1.0})
@ -166,7 +167,7 @@ async def test_action(hass):
assert len(calls) == 1 assert len(calls) == 1
async def test_capabilities(hass): async def test_capabilities(hass: HomeAssistant) -> None:
"""Test getting capabilities.""" """Test getting capabilities."""
capabilities = await device_action.async_get_action_capabilities( capabilities = await device_action.async_get_action_capabilities(
hass, hass,

View file

@ -1,11 +1,13 @@
"""Test reproduce state for Number entities.""" """Test reproduce state for Number entities."""
import pytest
from homeassistant.components.number.const import ( from homeassistant.components.number.const import (
ATTR_MAX, ATTR_MAX,
ATTR_MIN, ATTR_MIN,
DOMAIN, DOMAIN,
SERVICE_SET_VALUE, SERVICE_SET_VALUE,
) )
from homeassistant.core import State from homeassistant.core import HomeAssistant, State
from homeassistant.helpers.state import async_reproduce_state from homeassistant.helpers.state import async_reproduce_state
from tests.common import async_mock_service from tests.common import async_mock_service
@ -14,7 +16,9 @@ VALID_NUMBER1 = "19.0"
VALID_NUMBER2 = "99.9" VALID_NUMBER2 = "99.9"
async def test_reproducing_states(hass, caplog): async def test_reproducing_states(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test reproducing Number states.""" """Test reproducing Number states."""
hass.states.async_set( hass.states.async_set(

View file

@ -1,5 +1,4 @@
"""Test the Network UPS Tools (NUT) config flow.""" """Test the Network UPS Tools (NUT) config flow."""
from unittest.mock import patch from unittest.mock import patch
from pynut2.nut2 import PyNUTError from pynut2.nut2 import PyNUTError
@ -17,6 +16,7 @@ from homeassistant.const import (
CONF_SCAN_INTERVAL, CONF_SCAN_INTERVAL,
CONF_USERNAME, CONF_USERNAME,
) )
from homeassistant.core import HomeAssistant
from .util import _get_mock_pynutclient from .util import _get_mock_pynutclient
@ -30,7 +30,7 @@ VALID_CONFIG = {
} }
async def test_form_zeroconf(hass): async def test_form_zeroconf(hass: HomeAssistant) -> None:
"""Test we can setup from zeroconf.""" """Test we can setup from zeroconf."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, DOMAIN,
@ -78,7 +78,7 @@ async def test_form_zeroconf(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_form_user_one_ups(hass): async def test_form_user_one_ups(hass: HomeAssistant) -> None:
"""Test we get the form.""" """Test we get the form."""
await setup.async_setup_component(hass, "persistent_notification", {}) await setup.async_setup_component(hass, "persistent_notification", {})
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -120,7 +120,7 @@ async def test_form_user_one_ups(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_form_user_multiple_ups(hass): async def test_form_user_multiple_ups(hass: HomeAssistant) -> None:
"""Test we get the form.""" """Test we get the form."""
await setup.async_setup_component(hass, "persistent_notification", {}) await setup.async_setup_component(hass, "persistent_notification", {})
@ -183,7 +183,7 @@ async def test_form_user_multiple_ups(hass):
assert len(mock_setup_entry.mock_calls) == 2 assert len(mock_setup_entry.mock_calls) == 2
async def test_form_user_one_ups_with_ignored_entry(hass): async def test_form_user_one_ups_with_ignored_entry(hass: HomeAssistant) -> None:
"""Test we can setup a new one when there is an ignored one.""" """Test we can setup a new one when there is an ignored one."""
ignored_entry = MockConfigEntry( ignored_entry = MockConfigEntry(
domain=DOMAIN, data={}, source=config_entries.SOURCE_IGNORE domain=DOMAIN, data={}, source=config_entries.SOURCE_IGNORE
@ -230,7 +230,7 @@ async def test_form_user_one_ups_with_ignored_entry(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_form_cannot_connect(hass): async def test_form_cannot_connect(hass: HomeAssistant) -> None:
"""Test we handle cannot connect error.""" """Test we handle cannot connect error."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -296,7 +296,7 @@ async def test_form_cannot_connect(hass):
assert result2["errors"] == {"base": "unknown"} assert result2["errors"] == {"base": "unknown"}
async def test_abort_if_already_setup(hass): async def test_abort_if_already_setup(hass: HomeAssistant) -> None:
"""Test we abort if component is already setup.""" """Test we abort if component is already setup."""
config_entry = MockConfigEntry( config_entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -333,7 +333,7 @@ async def test_abort_if_already_setup(hass):
assert result2["reason"] == "already_configured" assert result2["reason"] == "already_configured"
async def test_abort_if_already_setup_alias(hass): async def test_abort_if_already_setup_alias(hass: HomeAssistant) -> None:
"""Test we abort if component is already setup with same alias.""" """Test we abort if component is already setup with same alias."""
config_entry = MockConfigEntry( config_entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -383,7 +383,7 @@ async def test_abort_if_already_setup_alias(hass):
assert result3["reason"] == "already_configured" assert result3["reason"] == "already_configured"
async def test_options_flow(hass): async def test_options_flow(hass: HomeAssistant) -> None:
"""Test config flow options.""" """Test config flow options."""
config_entry = MockConfigEntry( config_entry = MockConfigEntry(

View file

@ -4,13 +4,14 @@ from unittest.mock import patch
from homeassistant.components.nut.const import DOMAIN from homeassistant.components.nut.const import DOMAIN
from homeassistant.config_entries import ConfigEntryState from homeassistant.config_entries import ConfigEntryState
from homeassistant.const import CONF_HOST, CONF_PORT, STATE_UNAVAILABLE from homeassistant.const import CONF_HOST, CONF_PORT, STATE_UNAVAILABLE
from homeassistant.core import HomeAssistant
from .util import _get_mock_pynutclient from .util import _get_mock_pynutclient
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
async def test_async_setup_entry(hass): async def test_async_setup_entry(hass: HomeAssistant) -> None:
"""Test a successful setup entry.""" """Test a successful setup entry."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -44,7 +45,7 @@ async def test_async_setup_entry(hass):
assert not hass.data.get(DOMAIN) assert not hass.data.get(DOMAIN)
async def test_config_not_ready(hass): async def test_config_not_ready(hass: HomeAssistant) -> None:
"""Test for setup failure if connection to broker is missing.""" """Test for setup failure if connection to broker is missing."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,

View file

@ -1,5 +1,4 @@
"""The sensor tests for the nut platform.""" """The sensor tests for the nut platform."""
from unittest.mock import patch from unittest.mock import patch
from homeassistant.components.nut.const import DOMAIN from homeassistant.components.nut.const import DOMAIN
@ -10,6 +9,7 @@ from homeassistant.const import (
PERCENTAGE, PERCENTAGE,
STATE_UNKNOWN, STATE_UNKNOWN,
) )
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er from homeassistant.helpers import entity_registry as er
from .util import _get_mock_pynutclient, async_init_integration from .util import _get_mock_pynutclient, async_init_integration
@ -17,7 +17,7 @@ from .util import _get_mock_pynutclient, async_init_integration
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
async def test_pr3000rt2u(hass): async def test_pr3000rt2u(hass: HomeAssistant) -> None:
"""Test creation of PR3000RT2U sensors.""" """Test creation of PR3000RT2U sensors."""
await async_init_integration(hass, "PR3000RT2U") await async_init_integration(hass, "PR3000RT2U")
@ -41,7 +41,7 @@ async def test_pr3000rt2u(hass):
) )
async def test_cp1350c(hass): async def test_cp1350c(hass: HomeAssistant) -> None:
"""Test creation of CP1350C sensors.""" """Test creation of CP1350C sensors."""
config_entry = await async_init_integration(hass, "CP1350C") config_entry = await async_init_integration(hass, "CP1350C")
@ -66,7 +66,7 @@ async def test_cp1350c(hass):
) )
async def test_5e850i(hass): async def test_5e850i(hass: HomeAssistant) -> None:
"""Test creation of 5E850I sensors.""" """Test creation of 5E850I sensors."""
config_entry = await async_init_integration(hass, "5E850I") config_entry = await async_init_integration(hass, "5E850I")
@ -90,7 +90,7 @@ async def test_5e850i(hass):
) )
async def test_5e650i(hass): async def test_5e650i(hass: HomeAssistant) -> None:
"""Test creation of 5E650I sensors.""" """Test creation of 5E650I sensors."""
config_entry = await async_init_integration(hass, "5E650I") config_entry = await async_init_integration(hass, "5E650I")
@ -114,7 +114,7 @@ async def test_5e650i(hass):
) )
async def test_backupsses600m1(hass): async def test_backupsses600m1(hass: HomeAssistant) -> None:
"""Test creation of BACKUPSES600M1 sensors.""" """Test creation of BACKUPSES600M1 sensors."""
await async_init_integration(hass, "BACKUPSES600M1") await async_init_integration(hass, "BACKUPSES600M1")
@ -141,7 +141,7 @@ async def test_backupsses600m1(hass):
) )
async def test_cp1500pfclcd(hass): async def test_cp1500pfclcd(hass: HomeAssistant) -> None:
"""Test creation of CP1500PFCLCD sensors.""" """Test creation of CP1500PFCLCD sensors."""
config_entry = await async_init_integration(hass, "CP1500PFCLCD") config_entry = await async_init_integration(hass, "CP1500PFCLCD")
@ -165,7 +165,7 @@ async def test_cp1500pfclcd(hass):
) )
async def test_dl650elcd(hass): async def test_dl650elcd(hass: HomeAssistant) -> None:
"""Test creation of DL650ELCD sensors.""" """Test creation of DL650ELCD sensors."""
config_entry = await async_init_integration(hass, "DL650ELCD") config_entry = await async_init_integration(hass, "DL650ELCD")
@ -189,7 +189,7 @@ async def test_dl650elcd(hass):
) )
async def test_eaton5p1550(hass): async def test_eaton5p1550(hass: HomeAssistant) -> None:
"""Test creation of EATON5P1550 sensors.""" """Test creation of EATON5P1550 sensors."""
config_entry = await async_init_integration(hass, "EATON5P1550") config_entry = await async_init_integration(hass, "EATON5P1550")
@ -213,7 +213,7 @@ async def test_eaton5p1550(hass):
) )
async def test_blazer_usb(hass): async def test_blazer_usb(hass: HomeAssistant) -> None:
"""Test creation of blazer_usb sensors.""" """Test creation of blazer_usb sensors."""
config_entry = await async_init_integration(hass, "blazer_usb") config_entry = await async_init_integration(hass, "blazer_usb")
@ -237,7 +237,7 @@ async def test_blazer_usb(hass):
) )
async def test_state_sensors(hass): async def test_state_sensors(hass: HomeAssistant) -> None:
"""Test creation of status display sensors.""" """Test creation of status display sensors."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -262,7 +262,7 @@ async def test_state_sensors(hass):
assert state2.state == "OL" assert state2.state == "OL"
async def test_unknown_state_sensors(hass): async def test_unknown_state_sensors(hass: HomeAssistant) -> None:
"""Test creation of unknown status display sensors.""" """Test creation of unknown status display sensors."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -287,7 +287,7 @@ async def test_unknown_state_sensors(hass):
assert state2.state == "OQ" assert state2.state == "OQ"
async def test_stale_options(hass): async def test_stale_options(hass: HomeAssistant) -> None:
"""Test creation of sensors with stale options to remove.""" """Test creation of sensors with stale options to remove."""
config_entry = MockConfigEntry( config_entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,

View file

@ -127,7 +127,7 @@ async def test_nx584_sensor_setup_with_exceptions(hass, exception_type):
@pytest.mark.usefixtures("client") @pytest.mark.usefixtures("client")
async def test_nx584_sensor_setup_version_too_old(hass): async def test_nx584_sensor_setup_version_too_old(hass: HomeAssistant) -> None:
"""Test if version is too old.""" """Test if version is too old."""
nx584_client.Client.return_value.get_version.return_value = "1.0" nx584_client.Client.return_value.get_version.return_value = "1.0"
await _test_assert_graceful_fail(hass, {}) await _test_assert_graceful_fail(hass, {})

View file

@ -6,6 +6,7 @@ from pynzbgetapi import NZBGetAPIException
from homeassistant.components.nzbget.const import DOMAIN from homeassistant.components.nzbget.const import DOMAIN
from homeassistant.config_entries import SOURCE_USER from homeassistant.config_entries import SOURCE_USER
from homeassistant.const import CONF_SCAN_INTERVAL, CONF_VERIFY_SSL from homeassistant.const import CONF_SCAN_INTERVAL, CONF_VERIFY_SSL
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import FlowResultType from homeassistant.data_entry_flow import FlowResultType
from . import ( from . import (
@ -20,7 +21,7 @@ from . import (
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
async def test_user_form(hass): async def test_user_form(hass: HomeAssistant) -> None:
"""Test we get the user initiated form.""" """Test we get the user initiated form."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -43,7 +44,7 @@ async def test_user_form(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_user_form_show_advanced_options(hass): async def test_user_form_show_advanced_options(hass: HomeAssistant) -> None:
"""Test we get the user initiated form with advanced options shown.""" """Test we get the user initiated form with advanced options shown."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -71,7 +72,7 @@ async def test_user_form_show_advanced_options(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_user_form_cannot_connect(hass): async def test_user_form_cannot_connect(hass: HomeAssistant) -> None:
"""Test we handle cannot connect error.""" """Test we handle cannot connect error."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER} DOMAIN, context={"source": SOURCE_USER}
@ -90,7 +91,7 @@ async def test_user_form_cannot_connect(hass):
assert result["errors"] == {"base": "cannot_connect"} assert result["errors"] == {"base": "cannot_connect"}
async def test_user_form_unexpected_exception(hass): async def test_user_form_unexpected_exception(hass: HomeAssistant) -> None:
"""Test we handle unexpected exception.""" """Test we handle unexpected exception."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER} DOMAIN, context={"source": SOURCE_USER}
@ -109,7 +110,7 @@ async def test_user_form_unexpected_exception(hass):
assert result["reason"] == "unknown" assert result["reason"] == "unknown"
async def test_user_form_single_instance_allowed(hass): async def test_user_form_single_instance_allowed(hass: HomeAssistant) -> None:
"""Test that configuring more than one instance is rejected.""" """Test that configuring more than one instance is rejected."""
entry = MockConfigEntry(domain=DOMAIN, data=ENTRY_CONFIG) entry = MockConfigEntry(domain=DOMAIN, data=ENTRY_CONFIG)
entry.add_to_hass(hass) entry.add_to_hass(hass)

View file

@ -5,6 +5,7 @@ from pynzbgetapi import NZBGetAPIException
from homeassistant.components.nzbget.const import DOMAIN from homeassistant.components.nzbget.const import DOMAIN
from homeassistant.config_entries import ConfigEntryState from homeassistant.config_entries import ConfigEntryState
from homeassistant.core import HomeAssistant
from . import ENTRY_CONFIG, _patch_version, init_integration from . import ENTRY_CONFIG, _patch_version, init_integration
@ -25,7 +26,7 @@ async def test_unload_entry(hass, nzbget_api):
assert not hass.data.get(DOMAIN) assert not hass.data.get(DOMAIN)
async def test_async_setup_raises_entry_not_ready(hass): async def test_async_setup_raises_entry_not_ready(hass: HomeAssistant) -> None:
"""Test that it throws ConfigEntryNotReady when exception occurs during setup.""" """Test that it throws ConfigEntryNotReady when exception occurs during setup."""
config_entry = MockConfigEntry(domain=DOMAIN, data=ENTRY_CONFIG) config_entry = MockConfigEntry(domain=DOMAIN, data=ENTRY_CONFIG)
config_entry.add_to_hass(hass) config_entry.add_to_hass(hass)

View file

@ -1,12 +1,12 @@
"""The tests for Octoptint binary sensor module.""" """The tests for Octoptint binary sensor module."""
from homeassistant.const import STATE_OFF, STATE_ON, STATE_UNAVAILABLE from homeassistant.const import STATE_OFF, STATE_ON, STATE_UNAVAILABLE
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er from homeassistant.helpers import entity_registry as er
from . import init_integration from . import init_integration
async def test_sensors(hass): async def test_sensors(hass: HomeAssistant) -> None:
"""Test the underlying sensors.""" """Test the underlying sensors."""
printer = { printer = {
"state": { "state": {
@ -34,7 +34,7 @@ async def test_sensors(hass):
assert entry.unique_id == "Printing Error-uuid" assert entry.unique_id == "Printing Error-uuid"
async def test_sensors_printer_offline(hass): async def test_sensors_printer_offline(hass: HomeAssistant) -> None:
"""Test the underlying sensors when the printer is offline.""" """Test the underlying sensors when the printer is offline."""
await init_integration(hass, "binary_sensor", printer=None) await init_integration(hass, "binary_sensor", printer=None)

View file

@ -1,16 +1,16 @@
"""The tests for Octoptint camera module.""" """The tests for Octoptint camera module."""
from unittest.mock import patch from unittest.mock import patch
from pyoctoprintapi import WebcamSettings from pyoctoprintapi import WebcamSettings
from homeassistant.components.camera import DOMAIN as CAMERA_DOMAIN from homeassistant.components.camera import DOMAIN as CAMERA_DOMAIN
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er from homeassistant.helpers import entity_registry as er
from . import init_integration from . import init_integration
async def test_camera(hass): async def test_camera(hass: HomeAssistant) -> None:
"""Test the underlying camera.""" """Test the underlying camera."""
with patch( with patch(
"pyoctoprintapi.OctoprintClient.get_webcam_info", "pyoctoprintapi.OctoprintClient.get_webcam_info",
@ -32,7 +32,7 @@ async def test_camera(hass):
assert entry.unique_id == "uuid" assert entry.unique_id == "uuid"
async def test_camera_disabled(hass): async def test_camera_disabled(hass: HomeAssistant) -> None:
"""Test that the camera does not load if there is not one configured.""" """Test that the camera does not load if there is not one configured."""
with patch( with patch(
"pyoctoprintapi.OctoprintClient.get_webcam_info", "pyoctoprintapi.OctoprintClient.get_webcam_info",
@ -53,7 +53,7 @@ async def test_camera_disabled(hass):
assert entry is None assert entry is None
async def test_no_supported_camera(hass): async def test_no_supported_camera(hass: HomeAssistant) -> None:
"""Test that the camera does not load if there is not one configured.""" """Test that the camera does not load if there is not one configured."""
with patch( with patch(
"pyoctoprintapi.OctoprintClient.get_webcam_info", "pyoctoprintapi.OctoprintClient.get_webcam_info",

View file

@ -11,7 +11,7 @@ from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
async def test_form(hass): async def test_form(hass: HomeAssistant) -> None:
"""Test we get the form.""" """Test we get the form."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -69,7 +69,7 @@ async def test_form(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_form_cannot_connect(hass): async def test_form_cannot_connect(hass: HomeAssistant) -> None:
"""Test we handle cannot connect error.""" """Test we handle cannot connect error."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -118,7 +118,7 @@ async def test_form_cannot_connect(hass):
assert result["errors"]["base"] == "cannot_connect" assert result["errors"]["base"] == "cannot_connect"
async def test_form_unknown_exception(hass): async def test_form_unknown_exception(hass: HomeAssistant) -> None:
"""Test we handle a random error.""" """Test we handle a random error."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -428,7 +428,7 @@ async def test_failed_auth_unexpected_error(hass: HomeAssistant) -> None:
assert result["reason"] == "auth_failed" assert result["reason"] == "auth_failed"
async def test_user_duplicate_entry(hass): async def test_user_duplicate_entry(hass: HomeAssistant) -> None:
"""Test that duplicate entries abort.""" """Test that duplicate entries abort."""
MockConfigEntry( MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -535,7 +535,7 @@ async def test_duplicate_ssdp_ignored(hass: HomeAssistant) -> None:
assert result["reason"] == "already_configured" assert result["reason"] == "already_configured"
async def test_reauth_form(hass): async def test_reauth_form(hass: HomeAssistant) -> None:
"""Test we get the form.""" """Test we get the form."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,

View file

@ -2,12 +2,13 @@
from datetime import datetime, timezone from datetime import datetime, timezone
from unittest.mock import patch from unittest.mock import patch
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er from homeassistant.helpers import entity_registry as er
from . import init_integration from . import init_integration
async def test_sensors(hass): async def test_sensors(hass: HomeAssistant) -> None:
"""Test the underlying sensors.""" """Test the underlying sensors."""
printer = { printer = {
"state": { "state": {
@ -79,7 +80,7 @@ async def test_sensors(hass):
assert entry.unique_id == "Estimated Finish Time-uuid" assert entry.unique_id == "Estimated Finish Time-uuid"
async def test_sensors_no_target_temp(hass): async def test_sensors_no_target_temp(hass: HomeAssistant) -> None:
"""Test the underlying sensors.""" """Test the underlying sensors."""
printer = { printer = {
"state": { "state": {
@ -110,7 +111,7 @@ async def test_sensors_no_target_temp(hass):
assert entry.unique_id == "target tool1 temp-uuid" assert entry.unique_id == "target tool1 temp-uuid"
async def test_sensors_paused(hass): async def test_sensors_paused(hass: HomeAssistant) -> None:
"""Test the underlying sensors.""" """Test the underlying sensors."""
printer = { printer = {
"state": { "state": {
@ -146,7 +147,7 @@ async def test_sensors_paused(hass):
assert entry.unique_id == "Estimated Finish Time-uuid" assert entry.unique_id == "Estimated Finish Time-uuid"
async def test_sensors_printer_disconnected(hass): async def test_sensors_printer_disconnected(hass: HomeAssistant) -> None:
"""Test the underlying sensors.""" """Test the underlying sensors."""
job = { job = {
"job": {}, "job": {},

View file

@ -5,13 +5,14 @@ from omnilogic import LoginException, OmniLogicException
from homeassistant import config_entries, data_entry_flow from homeassistant import config_entries, data_entry_flow
from homeassistant.components.omnilogic.const import DOMAIN from homeassistant.components.omnilogic.const import DOMAIN
from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
DATA = {"username": "test-username", "password": "test-password"} DATA = {"username": "test-username", "password": "test-password"}
async def test_form(hass): async def test_form(hass: HomeAssistant) -> None:
"""Test we get the form.""" """Test we get the form."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -39,7 +40,7 @@ async def test_form(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_already_configured(hass): async def test_already_configured(hass: HomeAssistant) -> None:
"""Test config flow when Omnilogic component is already setup.""" """Test config flow when Omnilogic component is already setup."""
MockConfigEntry(domain="omnilogic", data=DATA).add_to_hass(hass) MockConfigEntry(domain="omnilogic", data=DATA).add_to_hass(hass)
@ -51,7 +52,7 @@ async def test_already_configured(hass):
assert result["reason"] == "single_instance_allowed" assert result["reason"] == "single_instance_allowed"
async def test_with_invalid_credentials(hass): async def test_with_invalid_credentials(hass: HomeAssistant) -> None:
"""Test with invalid credentials.""" """Test with invalid credentials."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -72,7 +73,7 @@ async def test_with_invalid_credentials(hass):
assert result["errors"] == {"base": "invalid_auth"} assert result["errors"] == {"base": "invalid_auth"}
async def test_form_cannot_connect(hass): async def test_form_cannot_connect(hass: HomeAssistant) -> None:
"""Test if invalid response or no connection returned from Hayward.""" """Test if invalid response or no connection returned from Hayward."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -93,7 +94,7 @@ async def test_form_cannot_connect(hass):
assert result["errors"] == {"base": "cannot_connect"} assert result["errors"] == {"base": "cannot_connect"}
async def test_with_unknown_error(hass): async def test_with_unknown_error(hass: HomeAssistant) -> None:
"""Test with unknown error response from Hayward.""" """Test with unknown error response from Hayward."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -114,7 +115,7 @@ async def test_with_unknown_error(hass):
assert result["errors"] == {"base": "unknown"} assert result["errors"] == {"base": "unknown"}
async def test_option_flow(hass): async def test_option_flow(hass: HomeAssistant) -> None:
"""Test option flow.""" """Test option flow."""
entry = MockConfigEntry(domain=DOMAIN, data=DATA) entry = MockConfigEntry(domain=DOMAIN, data=DATA)
entry.add_to_hass(hass) entry.add_to_hass(hass)

View file

@ -2,6 +2,7 @@
from unittest.mock import Mock, patch from unittest.mock import Mock, patch
from homeassistant.components import onboarding from homeassistant.components import onboarding
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from . import mock_storage from . import mock_storage
@ -23,7 +24,7 @@ async def test_not_setup_views_if_onboarded(hass, hass_storage):
assert onboarding.async_is_onboarded(hass) assert onboarding.async_is_onboarded(hass)
async def test_setup_views_if_not_onboarded(hass): async def test_setup_views_if_not_onboarded(hass: HomeAssistant) -> None:
"""Test if onboarding is not done, we setup views.""" """Test if onboarding is not done, we setup views."""
with patch( with patch(
"homeassistant.components.onboarding.views.async_setup", "homeassistant.components.onboarding.views.async_setup",

View file

@ -10,6 +10,7 @@ from homeassistant.components.ondilo_ico.const import (
OAUTH2_TOKEN, OAUTH2_TOKEN,
) )
from homeassistant.const import CONF_CLIENT_ID, CONF_CLIENT_SECRET from homeassistant.const import CONF_CLIENT_ID, CONF_CLIENT_SECRET
from homeassistant.core import HomeAssistant
from homeassistant.helpers import config_entry_oauth2_flow from homeassistant.helpers import config_entry_oauth2_flow
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
@ -18,7 +19,7 @@ CLIENT_ID = OAUTH2_CLIENTID
CLIENT_SECRET = OAUTH2_CLIENTSECRET CLIENT_SECRET = OAUTH2_CLIENTSECRET
async def test_abort_if_existing_entry(hass): async def test_abort_if_existing_entry(hass: HomeAssistant) -> None:
"""Check flow abort when an entry already exist.""" """Check flow abort when an entry already exist."""
MockConfigEntry(domain=DOMAIN).add_to_hass(hass) MockConfigEntry(domain=DOMAIN).add_to_hass(hass)

View file

@ -3,12 +3,13 @@ from unittest.mock import AsyncMock
from homeassistant.components.button import DOMAIN as BUTTON_DOMAIN, ButtonDeviceClass from homeassistant.components.button import DOMAIN as BUTTON_DOMAIN, ButtonDeviceClass
from homeassistant.const import ATTR_DEVICE_CLASS, ATTR_ENTITY_ID, STATE_UNKNOWN from homeassistant.const import ATTR_DEVICE_CLASS, ATTR_ENTITY_ID, STATE_UNKNOWN
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er from homeassistant.helpers import entity_registry as er
from . import MAC, setup_onvif_integration from . import MAC, setup_onvif_integration
async def test_reboot_button(hass): async def test_reboot_button(hass: HomeAssistant) -> None:
"""Test states of the Reboot button.""" """Test states of the Reboot button."""
await setup_onvif_integration(hass) await setup_onvif_integration(hass)
@ -23,7 +24,7 @@ async def test_reboot_button(hass):
assert entry.unique_id == f"{MAC}_reboot" assert entry.unique_id == f"{MAC}_reboot"
async def test_reboot_button_press(hass): async def test_reboot_button_press(hass: HomeAssistant) -> None:
"""Test Reboot button press.""" """Test Reboot button press."""
_, camera, _ = await setup_onvif_integration(hass) _, camera, _ = await setup_onvif_integration(hass)
devicemgmt = camera.create_devicemgmt_service() devicemgmt = camera.create_devicemgmt_service()
@ -40,7 +41,7 @@ async def test_reboot_button_press(hass):
devicemgmt.SystemReboot.assert_called_once() devicemgmt.SystemReboot.assert_called_once()
async def test_set_dateandtime_button(hass): async def test_set_dateandtime_button(hass: HomeAssistant) -> None:
"""Test states of the SetDateAndTime button.""" """Test states of the SetDateAndTime button."""
await setup_onvif_integration(hass) await setup_onvif_integration(hass)
@ -54,7 +55,7 @@ async def test_set_dateandtime_button(hass):
assert entry.unique_id == f"{MAC}_setsystemdatetime" assert entry.unique_id == f"{MAC}_setsystemdatetime"
async def test_set_dateandtime_button_press(hass): async def test_set_dateandtime_button_press(hass: HomeAssistant) -> None:
"""Test SetDateAndTime button press.""" """Test SetDateAndTime button press."""
_, camera, device = await setup_onvif_integration(hass) _, camera, device = await setup_onvif_integration(hass)
device.async_manually_set_date_and_time = AsyncMock(return_value=True) device.async_manually_set_date_and_time = AsyncMock(return_value=True)

View file

@ -3,6 +3,7 @@ from unittest.mock import MagicMock, patch
from homeassistant import config_entries, data_entry_flow from homeassistant import config_entries, data_entry_flow
from homeassistant.components.onvif import config_flow from homeassistant.components.onvif import config_flow
from homeassistant.core import HomeAssistant
from . import ( from . import (
HOST, HOST,
@ -66,7 +67,7 @@ def setup_mock_discovery(
mock_discovery.return_value = services mock_discovery.return_value = services
async def test_flow_discovered_devices(hass): async def test_flow_discovered_devices(hass: HomeAssistant) -> None:
"""Test that config flow works for discovered devices.""" """Test that config flow works for discovered devices."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -127,7 +128,9 @@ async def test_flow_discovered_devices(hass):
} }
async def test_flow_discovered_devices_ignore_configured_manual_input(hass): async def test_flow_discovered_devices_ignore_configured_manual_input(
hass: HomeAssistant,
) -> None:
"""Test that config flow discovery ignores configured devices.""" """Test that config flow discovery ignores configured devices."""
await setup_onvif_integration(hass) await setup_onvif_integration(hass)
@ -166,7 +169,7 @@ async def test_flow_discovered_devices_ignore_configured_manual_input(hass):
assert result["step_id"] == "configure" assert result["step_id"] == "configure"
async def test_flow_discovered_no_device(hass): async def test_flow_discovered_no_device(hass: HomeAssistant) -> None:
"""Test that config flow discovery no device.""" """Test that config flow discovery no device."""
await setup_onvif_integration(hass) await setup_onvif_integration(hass)
@ -196,7 +199,7 @@ async def test_flow_discovered_no_device(hass):
assert result["step_id"] == "configure" assert result["step_id"] == "configure"
async def test_flow_discovery_ignore_existing_and_abort(hass): async def test_flow_discovery_ignore_existing_and_abort(hass: HomeAssistant) -> None:
"""Test that config flow discovery ignores setup devices.""" """Test that config flow discovery ignores setup devices."""
await setup_onvif_integration(hass) await setup_onvif_integration(hass)
await setup_onvif_integration( await setup_onvif_integration(
@ -253,7 +256,7 @@ async def test_flow_discovery_ignore_existing_and_abort(hass):
assert result["type"] == data_entry_flow.FlowResultType.ABORT assert result["type"] == data_entry_flow.FlowResultType.ABORT
async def test_flow_manual_entry(hass): async def test_flow_manual_entry(hass: HomeAssistant) -> None:
"""Test that config flow works for discovered devices.""" """Test that config flow works for discovered devices."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
config_flow.DOMAIN, context={"source": config_entries.SOURCE_USER} config_flow.DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -310,7 +313,7 @@ async def test_flow_manual_entry(hass):
} }
async def test_option_flow(hass): async def test_option_flow(hass: HomeAssistant) -> None:
"""Test config flow options.""" """Test config flow options."""
entry, _, _ = await setup_onvif_integration(hass) entry, _, _ = await setup_onvif_integration(hass)

View file

@ -1,4 +1,5 @@
"""Test ONVIF diagnostics.""" """Test ONVIF diagnostics."""
from homeassistant.core import HomeAssistant
from . import ( from . import (
FIRMWARE_VERSION, FIRMWARE_VERSION,
@ -10,9 +11,12 @@ from . import (
) )
from tests.components.diagnostics import get_diagnostics_for_config_entry from tests.components.diagnostics import get_diagnostics_for_config_entry
from tests.typing import ClientSessionGenerator
async def test_diagnostics(hass, hass_client): async def test_diagnostics(
hass: HomeAssistant, hass_client: ClientSessionGenerator
) -> None:
"""Test generating diagnostics for a config entry.""" """Test generating diagnostics for a config entry."""
entry, _, _ = await setup_onvif_integration(hass) entry, _, _ = await setup_onvif_integration(hass)

View file

@ -3,12 +3,13 @@ from unittest.mock import AsyncMock
from homeassistant.components.switch import DOMAIN as SWITCH_DOMAIN from homeassistant.components.switch import DOMAIN as SWITCH_DOMAIN
from homeassistant.const import ATTR_ENTITY_ID, STATE_OFF, STATE_ON, STATE_UNKNOWN from homeassistant.const import ATTR_ENTITY_ID, STATE_OFF, STATE_ON, STATE_UNKNOWN
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er from homeassistant.helpers import entity_registry as er
from . import MAC, setup_onvif_integration from . import MAC, setup_onvif_integration
async def test_wiper_switch(hass): async def test_wiper_switch(hass: HomeAssistant) -> None:
"""Test states of the Wiper switch.""" """Test states of the Wiper switch."""
_config, _camera, device = await setup_onvif_integration(hass) _config, _camera, device = await setup_onvif_integration(hass)
device.profiles = device.async_get_profiles() device.profiles = device.async_get_profiles()
@ -23,7 +24,7 @@ async def test_wiper_switch(hass):
assert entry.unique_id == f"{MAC}_wiper" assert entry.unique_id == f"{MAC}_wiper"
async def test_turn_wiper_switch_on(hass): async def test_turn_wiper_switch_on(hass: HomeAssistant) -> None:
"""Test Wiper switch turn on.""" """Test Wiper switch turn on."""
_, _camera, device = await setup_onvif_integration(hass) _, _camera, device = await setup_onvif_integration(hass)
device.async_run_aux_command = AsyncMock(return_value=True) device.async_run_aux_command = AsyncMock(return_value=True)
@ -41,7 +42,7 @@ async def test_turn_wiper_switch_on(hass):
assert state.state == STATE_ON assert state.state == STATE_ON
async def test_turn_wiper_switch_off(hass): async def test_turn_wiper_switch_off(hass: HomeAssistant) -> None:
"""Test Wiper switch turn off.""" """Test Wiper switch turn off."""
_, _camera, device = await setup_onvif_integration(hass) _, _camera, device = await setup_onvif_integration(hass)
device.async_run_aux_command = AsyncMock(return_value=True) device.async_run_aux_command = AsyncMock(return_value=True)
@ -59,7 +60,7 @@ async def test_turn_wiper_switch_off(hass):
assert state.state == STATE_OFF assert state.state == STATE_OFF
async def test_autofocus_switch(hass): async def test_autofocus_switch(hass: HomeAssistant) -> None:
"""Test states of the autofocus switch.""" """Test states of the autofocus switch."""
_config, _camera, device = await setup_onvif_integration(hass) _config, _camera, device = await setup_onvif_integration(hass)
device.profiles = device.async_get_profiles() device.profiles = device.async_get_profiles()
@ -74,7 +75,7 @@ async def test_autofocus_switch(hass):
assert entry.unique_id == f"{MAC}_autofocus" assert entry.unique_id == f"{MAC}_autofocus"
async def test_turn_autofocus_switch_on(hass): async def test_turn_autofocus_switch_on(hass: HomeAssistant) -> None:
"""Test autofocus switch turn on.""" """Test autofocus switch turn on."""
_, _camera, device = await setup_onvif_integration(hass) _, _camera, device = await setup_onvif_integration(hass)
device.async_set_imaging_settings = AsyncMock(return_value=True) device.async_set_imaging_settings = AsyncMock(return_value=True)
@ -92,7 +93,7 @@ async def test_turn_autofocus_switch_on(hass):
assert state.state == STATE_ON assert state.state == STATE_ON
async def test_turn_autofocus_switch_off(hass): async def test_turn_autofocus_switch_off(hass: HomeAssistant) -> None:
"""Test autofocus switch turn off.""" """Test autofocus switch turn off."""
_, _camera, device = await setup_onvif_integration(hass) _, _camera, device = await setup_onvif_integration(hass)
device.async_set_imaging_settings = AsyncMock(return_value=True) device.async_set_imaging_settings = AsyncMock(return_value=True)
@ -110,7 +111,7 @@ async def test_turn_autofocus_switch_off(hass):
assert state.state == STATE_OFF assert state.state == STATE_OFF
async def test_infrared_switch(hass): async def test_infrared_switch(hass: HomeAssistant) -> None:
"""Test states of the autofocus switch.""" """Test states of the autofocus switch."""
_config, _camera, device = await setup_onvif_integration(hass) _config, _camera, device = await setup_onvif_integration(hass)
device.profiles = device.async_get_profiles() device.profiles = device.async_get_profiles()
@ -125,7 +126,7 @@ async def test_infrared_switch(hass):
assert entry.unique_id == f"{MAC}_ir_lamp" assert entry.unique_id == f"{MAC}_ir_lamp"
async def test_turn_infrared_switch_on(hass): async def test_turn_infrared_switch_on(hass: HomeAssistant) -> None:
"""Test infrared switch turn on.""" """Test infrared switch turn on."""
_, _camera, device = await setup_onvif_integration(hass) _, _camera, device = await setup_onvif_integration(hass)
device.async_set_imaging_settings = AsyncMock(return_value=True) device.async_set_imaging_settings = AsyncMock(return_value=True)
@ -143,7 +144,7 @@ async def test_turn_infrared_switch_on(hass):
assert state.state == STATE_ON assert state.state == STATE_ON
async def test_turn_infrared_switch_off(hass): async def test_turn_infrared_switch_off(hass: HomeAssistant) -> None:
"""Test infrared switch turn off.""" """Test infrared switch turn off."""
_, _camera, device = await setup_onvif_integration(hass) _, _camera, device = await setup_onvif_integration(hass)
device.async_set_imaging_settings = AsyncMock(return_value=True) device.async_set_imaging_settings = AsyncMock(return_value=True)

View file

@ -6,6 +6,7 @@ import pytest
from homeassistant.components import camera, image_processing as ip from homeassistant.components import camera, image_processing as ip
from homeassistant.components.openalpr_cloud.image_processing import OPENALPR_API_URL from homeassistant.components.openalpr_cloud.image_processing import OPENALPR_API_URL
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from tests.common import assert_setup_component, async_capture_events, load_fixture from tests.common import assert_setup_component, async_capture_events, load_fixture
@ -48,7 +49,7 @@ PARAMS = {
} }
async def test_setup_platform(hass): async def test_setup_platform(hass: HomeAssistant) -> None:
"""Set up platform with one entity.""" """Set up platform with one entity."""
config = { config = {
ip.DOMAIN: { ip.DOMAIN: {
@ -67,7 +68,7 @@ async def test_setup_platform(hass):
assert hass.states.get("image_processing.openalpr_demo_camera") assert hass.states.get("image_processing.openalpr_demo_camera")
async def test_setup_platform_name(hass): async def test_setup_platform_name(hass: HomeAssistant) -> None:
"""Set up platform with one entity and set name.""" """Set up platform with one entity and set name."""
config = { config = {
ip.DOMAIN: { ip.DOMAIN: {
@ -86,7 +87,7 @@ async def test_setup_platform_name(hass):
assert hass.states.get("image_processing.test_local") assert hass.states.get("image_processing.test_local")
async def test_setup_platform_without_api_key(hass): async def test_setup_platform_without_api_key(hass: HomeAssistant) -> None:
"""Set up platform with one entity without api_key.""" """Set up platform with one entity without api_key."""
config = { config = {
ip.DOMAIN: { ip.DOMAIN: {
@ -101,7 +102,7 @@ async def test_setup_platform_without_api_key(hass):
await async_setup_component(hass, ip.DOMAIN, config) await async_setup_component(hass, ip.DOMAIN, config)
async def test_setup_platform_without_region(hass): async def test_setup_platform_without_region(hass: HomeAssistant) -> None:
"""Set up platform with one entity without region.""" """Set up platform with one entity without region."""
config = { config = {
ip.DOMAIN: { ip.DOMAIN: {

View file

@ -2,6 +2,7 @@
from unittest.mock import MagicMock, patch from unittest.mock import MagicMock, patch
from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
MOCK_CONFIG = { MOCK_CONFIG = {
@ -14,7 +15,7 @@ MOCK_CONFIG = {
} }
async def test_sensor_state(hass): async def test_sensor_state(hass: HomeAssistant) -> None:
"""Test whether default waste type set properly.""" """Test whether default waste type set properly."""
with patch( with patch(
"homeassistant.components.openerz.sensor.OpenERZConnector" "homeassistant.components.openerz.sensor.OpenERZConnector"

View file

@ -21,13 +21,14 @@ from homeassistant.const import (
PRECISION_HALVES, PRECISION_HALVES,
PRECISION_TENTHS, PRECISION_TENTHS,
) )
from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
MINIMAL_STATUS = {OTGW: {OTGW_ABOUT: "OpenTherm Gateway 4.2.5"}} MINIMAL_STATUS = {OTGW: {OTGW_ABOUT: "OpenTherm Gateway 4.2.5"}}
async def test_form_user(hass): async def test_form_user(hass: HomeAssistant) -> None:
"""Test we get the form.""" """Test we get the form."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -67,7 +68,7 @@ async def test_form_user(hass):
assert len(mock_pyotgw_disconnect.mock_calls) == 1 assert len(mock_pyotgw_disconnect.mock_calls) == 1
async def test_form_import(hass): async def test_form_import(hass: HomeAssistant) -> None:
"""Test import from existing config.""" """Test import from existing config."""
with patch( with patch(
@ -102,7 +103,7 @@ async def test_form_import(hass):
assert len(mock_pyotgw_disconnect.mock_calls) == 1 assert len(mock_pyotgw_disconnect.mock_calls) == 1
async def test_form_duplicate_entries(hass): async def test_form_duplicate_entries(hass: HomeAssistant) -> None:
"""Test duplicate device or id errors.""" """Test duplicate device or id errors."""
flow1 = await hass.config_entries.flow.async_init( flow1 = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -147,7 +148,7 @@ async def test_form_duplicate_entries(hass):
assert len(mock_pyotgw_disconnect.mock_calls) == 1 assert len(mock_pyotgw_disconnect.mock_calls) == 1
async def test_form_connection_timeout(hass): async def test_form_connection_timeout(hass: HomeAssistant) -> None:
"""Test we handle connection timeout.""" """Test we handle connection timeout."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -168,7 +169,7 @@ async def test_form_connection_timeout(hass):
assert len(mock_connect.mock_calls) == 1 assert len(mock_connect.mock_calls) == 1
async def test_form_connection_error(hass): async def test_form_connection_error(hass: HomeAssistant) -> None:
"""Test we handle serial connection error.""" """Test we handle serial connection error."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -188,7 +189,7 @@ async def test_form_connection_error(hass):
assert len(mock_connect.mock_calls) == 1 assert len(mock_connect.mock_calls) == 1
async def test_options_migration(hass): async def test_options_migration(hass: HomeAssistant) -> None:
"""Test migration of precision option after update.""" """Test migration of precision option after update."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -234,7 +235,7 @@ async def test_options_migration(hass):
assert result["data"][CONF_FLOOR_TEMP] is True assert result["data"][CONF_FLOOR_TEMP] is True
async def test_options_form(hass): async def test_options_form(hass: HomeAssistant) -> None:
"""Test the options form.""" """Test the options form."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,

View file

@ -6,6 +6,7 @@ from pyotgw.vars import OTGW, OTGW_ABOUT
from homeassistant import setup from homeassistant import setup
from homeassistant.components.opentherm_gw.const import DOMAIN from homeassistant.components.opentherm_gw.const import DOMAIN
from homeassistant.const import CONF_DEVICE, CONF_ID, CONF_NAME from homeassistant.const import CONF_DEVICE, CONF_ID, CONF_NAME
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr from homeassistant.helpers import device_registry as dr
from tests.common import MockConfigEntry, mock_device_registry from tests.common import MockConfigEntry, mock_device_registry
@ -27,7 +28,7 @@ MOCK_CONFIG_ENTRY = MockConfigEntry(
) )
async def test_device_registry_insert(hass): async def test_device_registry_insert(hass: HomeAssistant) -> None:
"""Test that the device registry is initialized correctly.""" """Test that the device registry is initialized correctly."""
MOCK_CONFIG_ENTRY.add_to_hass(hass) MOCK_CONFIG_ENTRY.add_to_hass(hass)
@ -45,7 +46,7 @@ async def test_device_registry_insert(hass):
assert gw_dev.sw_version == VERSION_OLD assert gw_dev.sw_version == VERSION_OLD
async def test_device_registry_update(hass): async def test_device_registry_update(hass: HomeAssistant) -> None:
"""Test that the device registry is updated correctly.""" """Test that the device registry is updated correctly."""
MOCK_CONFIG_ENTRY.add_to_hass(hass) MOCK_CONFIG_ENTRY.add_to_hass(hass)

View file

@ -18,6 +18,7 @@ from homeassistant.const import (
CONF_MODE, CONF_MODE,
CONF_NAME, CONF_NAME,
) )
from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
@ -33,7 +34,7 @@ CONFIG = {
VALID_YAML_CONFIG = {CONF_API_KEY: "foo"} VALID_YAML_CONFIG = {CONF_API_KEY: "foo"}
async def test_form(hass): async def test_form(hass: HomeAssistant) -> None:
"""Test that the form is served with valid input.""" """Test that the form is served with valid input."""
mocked_owm = _create_mocked_owm(True) mocked_owm = _create_mocked_owm(True)
@ -70,7 +71,7 @@ async def test_form(hass):
assert result["data"][CONF_API_KEY] == CONFIG[CONF_API_KEY] assert result["data"][CONF_API_KEY] == CONFIG[CONF_API_KEY]
async def test_form_options(hass): async def test_form_options(hass: HomeAssistant) -> None:
"""Test that the options form.""" """Test that the options form."""
mocked_owm = _create_mocked_owm(True) mocked_owm = _create_mocked_owm(True)
@ -127,7 +128,7 @@ async def test_form_options(hass):
assert config_entry.state == ConfigEntryState.LOADED assert config_entry.state == ConfigEntryState.LOADED
async def test_form_invalid_api_key(hass): async def test_form_invalid_api_key(hass: HomeAssistant) -> None:
"""Test that the form is served with no input.""" """Test that the form is served with no input."""
mocked_owm = _create_mocked_owm(True) mocked_owm = _create_mocked_owm(True)
@ -143,7 +144,7 @@ async def test_form_invalid_api_key(hass):
assert result["errors"] == {"base": "invalid_api_key"} assert result["errors"] == {"base": "invalid_api_key"}
async def test_form_api_call_error(hass): async def test_form_api_call_error(hass: HomeAssistant) -> None:
"""Test setting up with api call error.""" """Test setting up with api call error."""
mocked_owm = _create_mocked_owm(True) mocked_owm = _create_mocked_owm(True)
@ -159,7 +160,7 @@ async def test_form_api_call_error(hass):
assert result["errors"] == {"base": "cannot_connect"} assert result["errors"] == {"base": "cannot_connect"}
async def test_form_api_offline(hass): async def test_form_api_offline(hass: HomeAssistant) -> None:
"""Test setting up with api call error.""" """Test setting up with api call error."""
mocked_owm = _create_mocked_owm(False) mocked_owm = _create_mocked_owm(False)

View file

@ -1,9 +1,9 @@
"""Test the OralB config flow.""" """Test the OralB config flow."""
from unittest.mock import patch from unittest.mock import patch
from homeassistant import config_entries from homeassistant import config_entries
from homeassistant.components.oralb.const import DOMAIN from homeassistant.components.oralb.const import DOMAIN
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import FlowResultType from homeassistant.data_entry_flow import FlowResultType
from . import NOT_ORALB_SERVICE_INFO, ORALB_IO_SERIES_4_SERVICE_INFO, ORALB_SERVICE_INFO from . import NOT_ORALB_SERVICE_INFO, ORALB_IO_SERIES_4_SERVICE_INFO, ORALB_SERVICE_INFO
@ -11,7 +11,7 @@ from . import NOT_ORALB_SERVICE_INFO, ORALB_IO_SERIES_4_SERVICE_INFO, ORALB_SERV
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
async def test_async_step_bluetooth_valid_device(hass): async def test_async_step_bluetooth_valid_device(hass: HomeAssistant) -> None:
"""Test discovery via bluetooth with a valid device.""" """Test discovery via bluetooth with a valid device."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, DOMAIN,
@ -30,7 +30,9 @@ async def test_async_step_bluetooth_valid_device(hass):
assert result2["result"].unique_id == "78:DB:2F:C2:48:BE" assert result2["result"].unique_id == "78:DB:2F:C2:48:BE"
async def test_async_step_bluetooth_valid_io_series4_device(hass): async def test_async_step_bluetooth_valid_io_series4_device(
hass: HomeAssistant,
) -> None:
"""Test discovery via bluetooth with a valid device.""" """Test discovery via bluetooth with a valid device."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, DOMAIN,
@ -49,7 +51,7 @@ async def test_async_step_bluetooth_valid_io_series4_device(hass):
assert result2["result"].unique_id == "78:DB:2F:C2:48:BE" assert result2["result"].unique_id == "78:DB:2F:C2:48:BE"
async def test_async_step_bluetooth_not_oralb(hass): async def test_async_step_bluetooth_not_oralb(hass: HomeAssistant) -> None:
"""Test discovery via bluetooth not oralb.""" """Test discovery via bluetooth not oralb."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, DOMAIN,
@ -60,7 +62,7 @@ async def test_async_step_bluetooth_not_oralb(hass):
assert result["reason"] == "not_supported" assert result["reason"] == "not_supported"
async def test_async_step_user_no_devices_found(hass): async def test_async_step_user_no_devices_found(hass: HomeAssistant) -> None:
"""Test setup from service info cache with no devices found.""" """Test setup from service info cache with no devices found."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, DOMAIN,
@ -70,7 +72,7 @@ async def test_async_step_user_no_devices_found(hass):
assert result["reason"] == "no_devices_found" assert result["reason"] == "no_devices_found"
async def test_async_step_user_with_found_devices(hass): async def test_async_step_user_with_found_devices(hass: HomeAssistant) -> None:
"""Test setup from service info cache with devices found.""" """Test setup from service info cache with devices found."""
with patch( with patch(
"homeassistant.components.oralb.config_flow.async_discovered_service_info", "homeassistant.components.oralb.config_flow.async_discovered_service_info",
@ -93,7 +95,7 @@ async def test_async_step_user_with_found_devices(hass):
assert result2["result"].unique_id == "78:DB:2F:C2:48:BE" assert result2["result"].unique_id == "78:DB:2F:C2:48:BE"
async def test_async_step_user_device_added_between_steps(hass): async def test_async_step_user_device_added_between_steps(hass: HomeAssistant) -> None:
"""Test the device gets added via another flow between steps.""" """Test the device gets added via another flow between steps."""
with patch( with patch(
"homeassistant.components.oralb.config_flow.async_discovered_service_info", "homeassistant.components.oralb.config_flow.async_discovered_service_info",
@ -121,7 +123,9 @@ async def test_async_step_user_device_added_between_steps(hass):
assert result2["reason"] == "already_configured" assert result2["reason"] == "already_configured"
async def test_async_step_user_with_found_devices_already_setup(hass): async def test_async_step_user_with_found_devices_already_setup(
hass: HomeAssistant,
) -> None:
"""Test setup from service info cache with devices found.""" """Test setup from service info cache with devices found."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -141,7 +145,7 @@ async def test_async_step_user_with_found_devices_already_setup(hass):
assert result["reason"] == "no_devices_found" assert result["reason"] == "no_devices_found"
async def test_async_step_bluetooth_devices_already_setup(hass): async def test_async_step_bluetooth_devices_already_setup(hass: HomeAssistant) -> None:
"""Test we can't start a flow if there is already a config entry.""" """Test we can't start a flow if there is already a config entry."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -158,7 +162,7 @@ async def test_async_step_bluetooth_devices_already_setup(hass):
assert result["reason"] == "already_configured" assert result["reason"] == "already_configured"
async def test_async_step_bluetooth_already_in_progress(hass): async def test_async_step_bluetooth_already_in_progress(hass: HomeAssistant) -> None:
"""Test we can't start a flow for the same device twice.""" """Test we can't start a flow for the same device twice."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, DOMAIN,
@ -177,7 +181,9 @@ async def test_async_step_bluetooth_already_in_progress(hass):
assert result["reason"] == "already_in_progress" assert result["reason"] == "already_in_progress"
async def test_async_step_user_takes_precedence_over_discovery(hass): async def test_async_step_user_takes_precedence_over_discovery(
hass: HomeAssistant,
) -> None:
"""Test manual setup takes precedence over discovery.""" """Test manual setup takes precedence over discovery."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, DOMAIN,

View file

@ -1,8 +1,7 @@
"""Test the OralB sensors.""" """Test the OralB sensors."""
from homeassistant.components.oralb.const import DOMAIN from homeassistant.components.oralb.const import DOMAIN
from homeassistant.const import ATTR_FRIENDLY_NAME from homeassistant.const import ATTR_FRIENDLY_NAME
from homeassistant.core import HomeAssistant
from . import ( from . import (
ORALB_IO_SERIES_4_SERVICE_INFO, ORALB_IO_SERIES_4_SERVICE_INFO,
@ -72,7 +71,7 @@ async def test_sensors_io_series_4(hass, entity_registry_enabled_by_default):
await hass.async_block_till_done() await hass.async_block_till_done()
async def test_sensors_battery(hass): async def test_sensors_battery(hass: HomeAssistant) -> None:
"""Test receiving battery percentage.""" """Test receiving battery percentage."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,

View file

@ -256,7 +256,7 @@ async def test_dhcp_flow_already_configured(hass: HomeAssistant) -> None:
assert result["reason"] == "already_configured" assert result["reason"] == "already_configured"
async def test_zeroconf_flow(hass): async def test_zeroconf_flow(hass: HomeAssistant) -> None:
"""Test that zeroconf discovery for new bridge works.""" """Test that zeroconf discovery for new bridge works."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, DOMAIN,
@ -288,7 +288,7 @@ async def test_zeroconf_flow(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_zeroconf_flow_already_configured(hass): async def test_zeroconf_flow_already_configured(hass: HomeAssistant) -> None:
"""Test that zeroconf doesn't setup already configured gateways.""" """Test that zeroconf doesn't setup already configured gateways."""
config_entry = MockConfigEntry( config_entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -307,7 +307,7 @@ async def test_zeroconf_flow_already_configured(hass):
assert result["reason"] == "already_configured" assert result["reason"] == "already_configured"
async def test_reauth_success(hass): async def test_reauth_success(hass: HomeAssistant) -> None:
"""Test reauthentication flow.""" """Test reauthentication flow."""
mock_entry = MockConfigEntry( mock_entry = MockConfigEntry(
@ -349,7 +349,7 @@ async def test_reauth_success(hass):
assert mock_entry.data["password"] == TEST_PASSWORD2 assert mock_entry.data["password"] == TEST_PASSWORD2
async def test_reauth_wrong_account(hass): async def test_reauth_wrong_account(hass: HomeAssistant) -> None:
"""Test reauthentication flow.""" """Test reauthentication flow."""
mock_entry = MockConfigEntry( mock_entry = MockConfigEntry(

View file

@ -9,6 +9,7 @@ from homeassistant.components.owntracks.config_flow import CONF_CLOUDHOOK, CONF_
from homeassistant.components.owntracks.const import DOMAIN from homeassistant.components.owntracks.const import DOMAIN
from homeassistant.config import async_process_ha_core_config from homeassistant.config import async_process_ha_core_config
from homeassistant.const import CONF_WEBHOOK_ID from homeassistant.const import CONF_WEBHOOK_ID
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
@ -76,7 +77,7 @@ async def test_user(hass, webhook_id, secret):
assert result["description_placeholders"][CONF_WEBHOOK_URL] == WEBHOOK_URL assert result["description_placeholders"][CONF_WEBHOOK_URL] == WEBHOOK_URL
async def test_import_setup(hass): async def test_import_setup(hass: HomeAssistant) -> None:
"""Test that we don't automatically create a config entry.""" """Test that we don't automatically create a config entry."""
await async_process_ha_core_config( await async_process_ha_core_config(
hass, hass,
@ -89,7 +90,7 @@ async def test_import_setup(hass):
assert not hass.config_entries.async_entries(DOMAIN) assert not hass.config_entries.async_entries(DOMAIN)
async def test_abort_if_already_setup(hass): async def test_abort_if_already_setup(hass: HomeAssistant) -> None:
"""Test that we can't add more than one instance.""" """Test that we can't add more than one instance."""
flow = await init_config_flow(hass) flow = await init_config_flow(hass)
@ -114,7 +115,7 @@ async def test_user_not_supports_encryption(hass, not_supports_encryption):
) )
async def test_unload(hass): async def test_unload(hass: HomeAssistant) -> None:
"""Test unloading a config flow.""" """Test unloading a config flow."""
await async_process_ha_core_config( await async_process_ha_core_config(
hass, hass,
@ -147,7 +148,7 @@ async def test_unload(hass):
assert entry.data["webhook_id"] not in hass.data["webhook"] assert entry.data["webhook_id"] not in hass.data["webhook"]
async def test_with_cloud_sub(hass): async def test_with_cloud_sub(hass: HomeAssistant) -> None:
"""Test creating a config flow while subscribed.""" """Test creating a config flow while subscribed."""
assert await async_setup_component(hass, "cloud", {}) assert await async_setup_component(hass, "cloud", {})
@ -174,7 +175,7 @@ async def test_with_cloud_sub(hass):
) )
async def test_with_cloud_sub_not_connected(hass): async def test_with_cloud_sub_not_connected(hass: HomeAssistant) -> None:
"""Test creating a config flow while subscribed.""" """Test creating a config flow while subscribed."""
assert await async_setup_component(hass, "cloud", {}) assert await async_setup_component(hass, "cloud", {})

View file

@ -6,9 +6,11 @@ import pytest
from homeassistant.components import owntracks from homeassistant.components import owntracks
from homeassistant.const import STATE_NOT_HOME from homeassistant.const import STATE_NOT_HOME
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from tests.common import MockConfigEntry, async_fire_mqtt_message, mock_coro from tests.common import MockConfigEntry, async_fire_mqtt_message, mock_coro
from tests.typing import ClientSessionGenerator
USER = "greg" USER = "greg"
DEVICE = "phone" DEVICE = "phone"
@ -1519,7 +1521,9 @@ async def test_region_mapping(hass, setup_comp):
assert_location_state(hass, "inner") assert_location_state(hass, "inner")
async def test_restore_state(hass, hass_client): async def test_restore_state(
hass: HomeAssistant, hass_client: ClientSessionGenerator
) -> None:
"""Test that we can restore state.""" """Test that we can restore state."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain="owntracks", data={"webhook_id": "owntracks_test", "secret": "abcd"} domain="owntracks", data={"webhook_id": "owntracks_test", "secret": "abcd"}
@ -1557,7 +1561,9 @@ async def test_restore_state(hass, hass_client):
assert state_1.attributes["source_type"] == state_2.attributes["source_type"] assert state_1.attributes["source_type"] == state_2.attributes["source_type"]
async def test_returns_empty_friends(hass, hass_client): async def test_returns_empty_friends(
hass: HomeAssistant, hass_client: ClientSessionGenerator
) -> None:
"""Test that an empty list of persons' locations is returned.""" """Test that an empty list of persons' locations is returned."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain="owntracks", data={"webhook_id": "owntracks_test", "secret": "abcd"} domain="owntracks", data={"webhook_id": "owntracks_test", "secret": "abcd"}
@ -1578,7 +1584,9 @@ async def test_returns_empty_friends(hass, hass_client):
assert await resp.text() == "[]" assert await resp.text() == "[]"
async def test_returns_array_friends(hass, hass_client): async def test_returns_array_friends(
hass: HomeAssistant, hass_client: ClientSessionGenerator
) -> None:
"""Test that a list of persons' current locations is returned.""" """Test that a list of persons' current locations is returned."""
otracks = MockConfigEntry( otracks = MockConfigEntry(
domain="owntracks", data={"webhook_id": "owntracks_test", "secret": "abcd"} domain="owntracks", data={"webhook_id": "owntracks_test", "secret": "abcd"}

View file

@ -11,6 +11,7 @@ from homeassistant.components.panasonic_viera.const import (
ERROR_INVALID_PIN_CODE, ERROR_INVALID_PIN_CODE,
) )
from homeassistant.const import CONF_PIN from homeassistant.const import CONF_PIN
from homeassistant.core import HomeAssistant
from .conftest import ( from .conftest import (
MOCK_BASIC_DATA, MOCK_BASIC_DATA,
@ -23,7 +24,7 @@ from .conftest import (
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
async def test_flow_non_encrypted(hass): async def test_flow_non_encrypted(hass: HomeAssistant) -> None:
"""Test flow without encryption.""" """Test flow without encryption."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -49,7 +50,7 @@ async def test_flow_non_encrypted(hass):
assert result["data"] == {**MOCK_CONFIG_DATA, ATTR_DEVICE_INFO: MOCK_DEVICE_INFO} assert result["data"] == {**MOCK_CONFIG_DATA, ATTR_DEVICE_INFO: MOCK_DEVICE_INFO}
async def test_flow_not_connected_error(hass): async def test_flow_not_connected_error(hass: HomeAssistant) -> None:
"""Test flow with connection error.""" """Test flow with connection error."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -73,7 +74,7 @@ async def test_flow_not_connected_error(hass):
assert result["errors"] == {"base": "cannot_connect"} assert result["errors"] == {"base": "cannot_connect"}
async def test_flow_unknown_abort(hass): async def test_flow_unknown_abort(hass: HomeAssistant) -> None:
"""Test flow with unknown error abortion.""" """Test flow with unknown error abortion."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -96,7 +97,9 @@ async def test_flow_unknown_abort(hass):
assert result["reason"] == "unknown" assert result["reason"] == "unknown"
async def test_flow_encrypted_not_connected_pin_code_request(hass): async def test_flow_encrypted_not_connected_pin_code_request(
hass: HomeAssistant,
) -> None:
"""Test flow with encryption and PIN code request connection error abortion during pairing request step.""" """Test flow with encryption and PIN code request connection error abortion during pairing request step."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -121,7 +124,7 @@ async def test_flow_encrypted_not_connected_pin_code_request(hass):
assert result["reason"] == "cannot_connect" assert result["reason"] == "cannot_connect"
async def test_flow_encrypted_unknown_pin_code_request(hass): async def test_flow_encrypted_unknown_pin_code_request(hass: HomeAssistant) -> None:
"""Test flow with encryption and PIN code request unknown error abortion during pairing request step.""" """Test flow with encryption and PIN code request unknown error abortion during pairing request step."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -146,7 +149,7 @@ async def test_flow_encrypted_unknown_pin_code_request(hass):
assert result["reason"] == "unknown" assert result["reason"] == "unknown"
async def test_flow_encrypted_valid_pin_code(hass): async def test_flow_encrypted_valid_pin_code(hass: HomeAssistant) -> None:
"""Test flow with encryption and valid PIN code.""" """Test flow with encryption and valid PIN code."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -188,7 +191,7 @@ async def test_flow_encrypted_valid_pin_code(hass):
} }
async def test_flow_encrypted_invalid_pin_code_error(hass): async def test_flow_encrypted_invalid_pin_code_error(hass: HomeAssistant) -> None:
"""Test flow with encryption and invalid PIN code error during pairing step.""" """Test flow with encryption and invalid PIN code error during pairing step."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -226,7 +229,7 @@ async def test_flow_encrypted_invalid_pin_code_error(hass):
assert result["errors"] == {"base": ERROR_INVALID_PIN_CODE} assert result["errors"] == {"base": ERROR_INVALID_PIN_CODE}
async def test_flow_encrypted_not_connected_abort(hass): async def test_flow_encrypted_not_connected_abort(hass: HomeAssistant) -> None:
"""Test flow with encryption and PIN code connection error abortion during pairing step.""" """Test flow with encryption and PIN code connection error abortion during pairing step."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -259,7 +262,7 @@ async def test_flow_encrypted_not_connected_abort(hass):
assert result["reason"] == "cannot_connect" assert result["reason"] == "cannot_connect"
async def test_flow_encrypted_unknown_abort(hass): async def test_flow_encrypted_unknown_abort(hass: HomeAssistant) -> None:
"""Test flow with encryption and PIN code unknown error abortion during pairing step.""" """Test flow with encryption and PIN code unknown error abortion during pairing step."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -292,7 +295,7 @@ async def test_flow_encrypted_unknown_abort(hass):
assert result["reason"] == "unknown" assert result["reason"] == "unknown"
async def test_flow_non_encrypted_already_configured_abort(hass): async def test_flow_non_encrypted_already_configured_abort(hass: HomeAssistant) -> None:
"""Test flow without encryption and existing config entry abortion.""" """Test flow without encryption and existing config entry abortion."""
MockConfigEntry( MockConfigEntry(
@ -311,7 +314,7 @@ async def test_flow_non_encrypted_already_configured_abort(hass):
assert result["reason"] == "already_configured" assert result["reason"] == "already_configured"
async def test_flow_encrypted_already_configured_abort(hass): async def test_flow_encrypted_already_configured_abort(hass: HomeAssistant) -> None:
"""Test flow with encryption and existing config entry abortion.""" """Test flow with encryption and existing config entry abortion."""
MockConfigEntry( MockConfigEntry(
@ -330,7 +333,7 @@ async def test_flow_encrypted_already_configured_abort(hass):
assert result["reason"] == "already_configured" assert result["reason"] == "already_configured"
async def test_imported_flow_non_encrypted(hass): async def test_imported_flow_non_encrypted(hass: HomeAssistant) -> None:
"""Test imported flow without encryption.""" """Test imported flow without encryption."""
mock_remote = get_mock_remote(encrypted=False) mock_remote = get_mock_remote(encrypted=False)
@ -350,7 +353,7 @@ async def test_imported_flow_non_encrypted(hass):
assert result["data"] == {**MOCK_CONFIG_DATA, ATTR_DEVICE_INFO: MOCK_DEVICE_INFO} assert result["data"] == {**MOCK_CONFIG_DATA, ATTR_DEVICE_INFO: MOCK_DEVICE_INFO}
async def test_imported_flow_encrypted_valid_pin_code(hass): async def test_imported_flow_encrypted_valid_pin_code(hass: HomeAssistant) -> None:
"""Test imported flow with encryption and valid PIN code.""" """Test imported flow with encryption and valid PIN code."""
mock_remote = get_mock_remote( mock_remote = get_mock_remote(
@ -386,7 +389,9 @@ async def test_imported_flow_encrypted_valid_pin_code(hass):
} }
async def test_imported_flow_encrypted_invalid_pin_code_error(hass): async def test_imported_flow_encrypted_invalid_pin_code_error(
hass: HomeAssistant,
) -> None:
"""Test imported flow with encryption and invalid PIN code error during pairing step.""" """Test imported flow with encryption and invalid PIN code error during pairing step."""
mock_remote = get_mock_remote(encrypted=True, authorize_error=SOAPError) mock_remote = get_mock_remote(encrypted=True, authorize_error=SOAPError)
@ -418,7 +423,7 @@ async def test_imported_flow_encrypted_invalid_pin_code_error(hass):
assert result["errors"] == {"base": ERROR_INVALID_PIN_CODE} assert result["errors"] == {"base": ERROR_INVALID_PIN_CODE}
async def test_imported_flow_encrypted_not_connected_abort(hass): async def test_imported_flow_encrypted_not_connected_abort(hass: HomeAssistant) -> None:
"""Test imported flow with encryption and PIN code connection error abortion during pairing step.""" """Test imported flow with encryption and PIN code connection error abortion during pairing step."""
mock_remote = get_mock_remote(encrypted=True, authorize_error=TimeoutError) mock_remote = get_mock_remote(encrypted=True, authorize_error=TimeoutError)
@ -445,7 +450,7 @@ async def test_imported_flow_encrypted_not_connected_abort(hass):
assert result["reason"] == "cannot_connect" assert result["reason"] == "cannot_connect"
async def test_imported_flow_encrypted_unknown_abort(hass): async def test_imported_flow_encrypted_unknown_abort(hass: HomeAssistant) -> None:
"""Test imported flow with encryption and PIN code unknown error abortion during pairing step.""" """Test imported flow with encryption and PIN code unknown error abortion during pairing step."""
mock_remote = get_mock_remote(encrypted=True, authorize_error=Exception) mock_remote = get_mock_remote(encrypted=True, authorize_error=Exception)
@ -472,7 +477,7 @@ async def test_imported_flow_encrypted_unknown_abort(hass):
assert result["reason"] == "unknown" assert result["reason"] == "unknown"
async def test_imported_flow_not_connected_error(hass): async def test_imported_flow_not_connected_error(hass: HomeAssistant) -> None:
"""Test imported flow with connection error abortion.""" """Test imported flow with connection error abortion."""
with patch( with patch(
@ -490,7 +495,7 @@ async def test_imported_flow_not_connected_error(hass):
assert result["errors"] == {"base": "cannot_connect"} assert result["errors"] == {"base": "cannot_connect"}
async def test_imported_flow_unknown_abort(hass): async def test_imported_flow_unknown_abort(hass: HomeAssistant) -> None:
"""Test imported flow with unknown error abortion.""" """Test imported flow with unknown error abortion."""
with patch( with patch(
@ -507,7 +512,9 @@ async def test_imported_flow_unknown_abort(hass):
assert result["reason"] == "unknown" assert result["reason"] == "unknown"
async def test_imported_flow_non_encrypted_already_configured_abort(hass): async def test_imported_flow_non_encrypted_already_configured_abort(
hass: HomeAssistant,
) -> None:
"""Test imported flow without encryption and existing config entry abortion.""" """Test imported flow without encryption and existing config entry abortion."""
MockConfigEntry( MockConfigEntry(
@ -526,7 +533,9 @@ async def test_imported_flow_non_encrypted_already_configured_abort(hass):
assert result["reason"] == "already_configured" assert result["reason"] == "already_configured"
async def test_imported_flow_encrypted_already_configured_abort(hass): async def test_imported_flow_encrypted_already_configured_abort(
hass: HomeAssistant,
) -> None:
"""Test imported flow with encryption and existing config entry abortion.""" """Test imported flow with encryption and existing config entry abortion."""
MockConfigEntry( MockConfigEntry(

View file

@ -9,6 +9,7 @@ from homeassistant.components.panasonic_viera.const import (
) )
from homeassistant.config_entries import ConfigEntryState from homeassistant.config_entries import ConfigEntryState
from homeassistant.const import CONF_HOST, STATE_UNAVAILABLE from homeassistant.const import CONF_HOST, STATE_UNAVAILABLE
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from .conftest import ( from .conftest import (
@ -70,7 +71,9 @@ async def test_setup_entry_encrypted_missing_device_info(hass, mock_remote):
assert state_remote.name == DEFAULT_NAME assert state_remote.name == DEFAULT_NAME
async def test_setup_entry_encrypted_missing_device_info_none(hass): async def test_setup_entry_encrypted_missing_device_info_none(
hass: HomeAssistant,
) -> None:
"""Test setup with encrypted config entry and device info set to None.""" """Test setup with encrypted config entry and device info set to None."""
mock_entry = MockConfigEntry( mock_entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -151,7 +154,9 @@ async def test_setup_entry_unencrypted_missing_device_info(hass, mock_remote):
assert state_remote.name == DEFAULT_NAME assert state_remote.name == DEFAULT_NAME
async def test_setup_entry_unencrypted_missing_device_info_none(hass): async def test_setup_entry_unencrypted_missing_device_info_none(
hass: HomeAssistant,
) -> None:
"""Test setup with unencrypted config entry and device info set to None.""" """Test setup with unencrypted config entry and device info set to None."""
mock_entry = MockConfigEntry( mock_entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -183,7 +188,7 @@ async def test_setup_entry_unencrypted_missing_device_info_none(hass):
assert state_remote.name == DEFAULT_NAME assert state_remote.name == DEFAULT_NAME
async def test_setup_config_flow_initiated(hass): async def test_setup_config_flow_initiated(hass: HomeAssistant) -> None:
"""Test if config flow is initiated in setup.""" """Test if config flow is initiated in setup."""
mock_remote = get_mock_remote() mock_remote = get_mock_remote()
mock_remote.get_device_info = Mock(side_effect=OSError) mock_remote.get_device_info = Mock(side_effect=OSError)

View file

@ -3,9 +3,10 @@ from unittest.mock import Mock, patch
from homeassistant import setup from homeassistant import setup
from homeassistant.components import frontend from homeassistant.components import frontend
from homeassistant.core import HomeAssistant
async def test_webcomponent_custom_path_not_found(hass): async def test_webcomponent_custom_path_not_found(hass: HomeAssistant) -> None:
"""Test if a web component is found in config panels dir.""" """Test if a web component is found in config panels dir."""
filename = "mock.file" filename = "mock.file"
@ -30,7 +31,7 @@ async def test_webcomponent_custom_path_not_found(hass):
assert "nice_url" not in panels assert "nice_url" not in panels
async def test_js_webcomponent(hass): async def test_js_webcomponent(hass: HomeAssistant) -> None:
"""Test if a web component is found in config panels dir.""" """Test if a web component is found in config panels dir."""
config = { config = {
"panel_custom": { "panel_custom": {
@ -69,7 +70,7 @@ async def test_js_webcomponent(hass):
assert panel.sidebar_title == "Sidebar Title" assert panel.sidebar_title == "Sidebar Title"
async def test_module_webcomponent(hass): async def test_module_webcomponent(hass: HomeAssistant) -> None:
"""Test if a js module is found in config panels dir.""" """Test if a js module is found in config panels dir."""
config = { config = {
"panel_custom": { "panel_custom": {
@ -110,7 +111,7 @@ async def test_module_webcomponent(hass):
assert panel.sidebar_title == "Sidebar Title" assert panel.sidebar_title == "Sidebar Title"
async def test_latest_and_es5_build(hass): async def test_latest_and_es5_build(hass: HomeAssistant) -> None:
"""Test specifying an es5 and latest build.""" """Test specifying an es5 and latest build."""
config = { config = {
"panel_custom": { "panel_custom": {
@ -142,7 +143,7 @@ async def test_latest_and_es5_build(hass):
assert panel.frontend_url_path == "nice_url" assert panel.frontend_url_path == "nice_url"
async def test_url_path_conflict(hass): async def test_url_path_conflict(hass: HomeAssistant) -> None:
"""Test config with overlapping url path.""" """Test config with overlapping url path."""
assert await setup.async_setup_component( assert await setup.async_setup_component(
hass, hass,

View file

@ -2,6 +2,7 @@
import pytest import pytest
from homeassistant.components import frontend from homeassistant.components import frontend
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
@ -19,7 +20,7 @@ async def test_wrong_config(hass, config_to_try):
) )
async def test_correct_config(hass): async def test_correct_config(hass: HomeAssistant) -> None:
"""Test correct config.""" """Test correct config."""
assert await async_setup_component( assert await async_setup_component(
hass, hass,

View file

@ -3,9 +3,11 @@ import pytest
import homeassistant.components.persistent_notification as pn import homeassistant.components.persistent_notification as pn
from homeassistant.components.websocket_api.const import TYPE_RESULT from homeassistant.components.websocket_api.const import TYPE_RESULT
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from tests.common import async_capture_events from tests.common import async_capture_events
from tests.typing import WebSocketGenerator
@pytest.fixture(autouse=True) @pytest.fixture(autouse=True)
@ -14,7 +16,7 @@ async def setup_integration(hass):
assert await async_setup_component(hass, pn.DOMAIN, {}) assert await async_setup_component(hass, pn.DOMAIN, {})
async def test_create(hass): async def test_create(hass: HomeAssistant) -> None:
"""Test creating notification without title or notification id.""" """Test creating notification without title or notification id."""
notifications = hass.data[pn.DOMAIN] notifications = hass.data[pn.DOMAIN]
assert len(hass.states.async_entity_ids(pn.DOMAIN)) == 0 assert len(hass.states.async_entity_ids(pn.DOMAIN)) == 0
@ -38,7 +40,7 @@ async def test_create(hass):
assert notification["created_at"] is not None assert notification["created_at"] is not None
async def test_create_notification_id(hass): async def test_create_notification_id(hass: HomeAssistant) -> None:
"""Ensure overwrites existing notification with same id.""" """Ensure overwrites existing notification with same id."""
notifications = hass.data[pn.DOMAIN] notifications = hass.data[pn.DOMAIN]
assert len(hass.states.async_entity_ids(pn.DOMAIN)) == 0 assert len(hass.states.async_entity_ids(pn.DOMAIN)) == 0
@ -68,7 +70,7 @@ async def test_create_notification_id(hass):
assert notification["message"] == "test 2" assert notification["message"] == "test 2"
async def test_dismiss_notification(hass): async def test_dismiss_notification(hass: HomeAssistant) -> None:
"""Ensure removal of specific notification.""" """Ensure removal of specific notification."""
notifications = hass.data[pn.DOMAIN] notifications = hass.data[pn.DOMAIN]
assert len(hass.states.async_entity_ids(pn.DOMAIN)) == 0 assert len(hass.states.async_entity_ids(pn.DOMAIN)) == 0
@ -84,7 +86,7 @@ async def test_dismiss_notification(hass):
assert len(notifications) == 0 assert len(notifications) == 0
async def test_mark_read(hass): async def test_mark_read(hass: HomeAssistant) -> None:
"""Ensure notification is marked as Read.""" """Ensure notification is marked as Read."""
events = async_capture_events(hass, pn.EVENT_PERSISTENT_NOTIFICATIONS_UPDATED) events = async_capture_events(hass, pn.EVENT_PERSISTENT_NOTIFICATIONS_UPDATED)
notifications = hass.data[pn.DOMAIN] notifications = hass.data[pn.DOMAIN]
@ -122,7 +124,9 @@ async def test_mark_read(hass):
assert len(events) == 3 assert len(events) == 3
async def test_ws_get_notifications(hass, hass_ws_client): async def test_ws_get_notifications(
hass: HomeAssistant, hass_ws_client: WebSocketGenerator
) -> None:
"""Test websocket endpoint for retrieving persistent notifications.""" """Test websocket endpoint for retrieving persistent notifications."""
await async_setup_component(hass, pn.DOMAIN, {}) await async_setup_component(hass, pn.DOMAIN, {})

View file

@ -17,7 +17,7 @@ from homeassistant.const import (
SERVICE_RELOAD, SERVICE_RELOAD,
STATE_UNKNOWN, STATE_UNKNOWN,
) )
from homeassistant.core import Context, CoreState, State from homeassistant.core import Context, CoreState, HomeAssistant, State
from homeassistant.helpers import collection, entity_registry as er from homeassistant.helpers import collection, entity_registry as er
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
@ -61,7 +61,7 @@ def storage_setup(hass, hass_storage, hass_admin_user):
assert hass.loop.run_until_complete(async_setup_component(hass, DOMAIN, {})) assert hass.loop.run_until_complete(async_setup_component(hass, DOMAIN, {}))
async def test_minimal_setup(hass): async def test_minimal_setup(hass: HomeAssistant) -> None:
"""Test minimal config with only name.""" """Test minimal config with only name."""
config = {DOMAIN: {"id": "1234", "name": "test person"}} config = {DOMAIN: {"id": "1234", "name": "test person"}}
assert await async_setup_component(hass, DOMAIN, config) assert await async_setup_component(hass, DOMAIN, config)
@ -75,13 +75,13 @@ async def test_minimal_setup(hass):
assert state.attributes.get(ATTR_ENTITY_PICTURE) is None assert state.attributes.get(ATTR_ENTITY_PICTURE) is None
async def test_setup_no_id(hass): async def test_setup_no_id(hass: HomeAssistant) -> None:
"""Test config with no id.""" """Test config with no id."""
config = {DOMAIN: {"name": "test user"}} config = {DOMAIN: {"name": "test user"}}
assert not await async_setup_component(hass, DOMAIN, config) assert not await async_setup_component(hass, DOMAIN, config)
async def test_setup_no_name(hass): async def test_setup_no_name(hass: HomeAssistant) -> None:
"""Test config with no name.""" """Test config with no name."""
config = {DOMAIN: {"id": "1234"}} config = {DOMAIN: {"id": "1234"}}
assert not await async_setup_component(hass, DOMAIN, config) assert not await async_setup_component(hass, DOMAIN, config)
@ -352,7 +352,7 @@ async def test_duplicate_ids(hass, hass_admin_user):
assert hass.states.get("person.test_user_2") is None assert hass.states.get("person.test_user_2") is None
async def test_create_person_during_run(hass): async def test_create_person_during_run(hass: HomeAssistant) -> None:
"""Test that person is updated if created while hass is running.""" """Test that person is updated if created while hass is running."""
config = {DOMAIN: {}} config = {DOMAIN: {}}
assert await async_setup_component(hass, DOMAIN, config) assert await async_setup_component(hass, DOMAIN, config)
@ -773,7 +773,7 @@ async def test_person_storage_fixing_device_trackers(storage_collection):
assert storage_collection.data["bla"]["device_trackers"] == [] assert storage_collection.data["bla"]["device_trackers"] == []
async def test_persons_with_entity(hass): async def test_persons_with_entity(hass: HomeAssistant) -> None:
"""Test finding persons with an entity.""" """Test finding persons with an entity."""
assert await async_setup_component( assert await async_setup_component(
hass, hass,
@ -804,7 +804,7 @@ async def test_persons_with_entity(hass):
] ]
async def test_entities_in_person(hass): async def test_entities_in_person(hass: HomeAssistant) -> None:
"""Test finding entities tracked by person.""" """Test finding entities tracked by person."""
assert await async_setup_component( assert await async_setup_component(
hass, hass,

View file

@ -6,6 +6,7 @@ import pytest
from homeassistant import config_entries, data_entry_flow from homeassistant import config_entries, data_entry_flow
from homeassistant.components.philips_js.const import CONF_ALLOW_NOTIFY, DOMAIN from homeassistant.components.philips_js.const import CONF_ALLOW_NOTIFY, DOMAIN
from homeassistant.core import HomeAssistant
from . import ( from . import (
MOCK_CONFIG, MOCK_CONFIG,
@ -206,7 +207,7 @@ async def test_pair_grant_failed(hass, mock_tv_pairable, mock_setup_entry):
} }
async def test_options_flow(hass): async def test_options_flow(hass: HomeAssistant) -> None:
"""Test config flow options.""" """Test config flow options."""
config_entry = MockConfigEntry( config_entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,

View file

@ -8,6 +8,7 @@ import requests
from homeassistant import config_entries, data_entry_flow from homeassistant import config_entries, data_entry_flow
from homeassistant.components.picnic.const import CONF_COUNTRY_CODE, DOMAIN from homeassistant.components.picnic.const import CONF_COUNTRY_CODE, DOMAIN
from homeassistant.const import CONF_ACCESS_TOKEN from homeassistant.const import CONF_ACCESS_TOKEN
from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
@ -66,7 +67,7 @@ async def test_form(hass, picnic_api):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_form_invalid_auth(hass): async def test_form_invalid_auth(hass: HomeAssistant) -> None:
"""Test we handle invalid authentication.""" """Test we handle invalid authentication."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -89,7 +90,7 @@ async def test_form_invalid_auth(hass):
assert result2["errors"] == {"base": "invalid_auth"} assert result2["errors"] == {"base": "invalid_auth"}
async def test_form_cannot_connect(hass): async def test_form_cannot_connect(hass: HomeAssistant) -> None:
"""Test we handle connection errors.""" """Test we handle connection errors."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -112,7 +113,7 @@ async def test_form_cannot_connect(hass):
assert result2["errors"] == {"base": "cannot_connect"} assert result2["errors"] == {"base": "cannot_connect"}
async def test_form_exception(hass): async def test_form_exception(hass: HomeAssistant) -> None:
"""Test we handle random exceptions.""" """Test we handle random exceptions."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -201,7 +202,7 @@ async def test_step_reauth(hass, picnic_api):
assert len(hass.config_entries.async_entries()) == 1 assert len(hass.config_entries.async_entries()) == 1
async def test_step_reauth_failed(hass): async def test_step_reauth_failed(hass: HomeAssistant) -> None:
"""Test the re-auth flow when authentication fails.""" """Test the re-auth flow when authentication fails."""
# Create a mocked config entry # Create a mocked config entry
user_id = "f29-2a6-o32n" user_id = "f29-2a6-o32n"

View file

@ -93,7 +93,7 @@ async def test_connection_timeout_error(mock_error, hass):
@patch("pilight.pilight.Client", PilightDaemonSim) @patch("pilight.pilight.Client", PilightDaemonSim)
async def test_send_code_no_protocol(hass): async def test_send_code_no_protocol(hass: HomeAssistant) -> None:
"""Try to send data without protocol information, should give error.""" """Try to send data without protocol information, should give error."""
with assert_setup_component(4): with assert_setup_component(4):
assert await async_setup_component(hass, pilight.DOMAIN, {pilight.DOMAIN: {}}) assert await async_setup_component(hass, pilight.DOMAIN, {pilight.DOMAIN: {}})
@ -365,7 +365,7 @@ async def test_whitelist_no_match(mock_debug, hass):
assert "Event pilight_received" not in debug_log_call assert "Event pilight_received" not in debug_log_call
async def test_call_rate_delay_throttle_enabled(hass): async def test_call_rate_delay_throttle_enabled(hass: HomeAssistant) -> None:
"""Test that throttling actually work.""" """Test that throttling actually work."""
runs = [] runs = []
delay = 5.0 delay = 5.0

View file

@ -5,6 +5,7 @@ import pytest
from homeassistant.components import pilight from homeassistant.components import pilight
import homeassistant.components.sensor as sensor import homeassistant.components.sensor as sensor
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from tests.common import assert_setup_component, mock_component from tests.common import assert_setup_component, mock_component
@ -24,7 +25,7 @@ def fire_pilight_message(hass, protocol, data):
hass.bus.async_fire(pilight.EVENT, message) hass.bus.async_fire(pilight.EVENT, message)
async def test_sensor_value_from_code(hass): async def test_sensor_value_from_code(hass: HomeAssistant) -> None:
"""Test the setting of value via pilight.""" """Test the setting of value via pilight."""
with assert_setup_component(1): with assert_setup_component(1):
assert await async_setup_component( assert await async_setup_component(
@ -55,7 +56,7 @@ async def test_sensor_value_from_code(hass):
assert state.state == "42" assert state.state == "42"
async def test_disregard_wrong_payload(hass): async def test_disregard_wrong_payload(hass: HomeAssistant) -> None:
"""Test omitting setting of value with wrong payload.""" """Test omitting setting of value with wrong payload."""
with assert_setup_component(1): with assert_setup_component(1):
assert await async_setup_component( assert await async_setup_component(
@ -99,7 +100,9 @@ async def test_disregard_wrong_payload(hass):
assert state.state == "data" assert state.state == "data"
async def test_variable_missing(hass, caplog): async def test_variable_missing(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Check if error message when variable missing.""" """Check if error message when variable missing."""
caplog.set_level(logging.ERROR) caplog.set_level(logging.ERROR)
with assert_setup_component(1): with assert_setup_component(1):

View file

@ -12,6 +12,7 @@ from homeassistant.components.plaato.const import (
DOMAIN, DOMAIN,
) )
from homeassistant.const import CONF_SCAN_INTERVAL, CONF_TOKEN, CONF_WEBHOOK_ID from homeassistant.const import CONF_SCAN_INTERVAL, CONF_TOKEN, CONF_WEBHOOK_ID
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import FlowResultType from homeassistant.data_entry_flow import FlowResultType
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
@ -33,7 +34,7 @@ def mock_webhook_id():
yield yield
async def test_show_config_form(hass): async def test_show_config_form(hass: HomeAssistant) -> None:
"""Test show configuration form.""" """Test show configuration form."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -44,7 +45,7 @@ async def test_show_config_form(hass):
assert result["step_id"] == "user" assert result["step_id"] == "user"
async def test_show_config_form_device_type_airlock(hass): async def test_show_config_form_device_type_airlock(hass: HomeAssistant) -> None:
"""Test show configuration form.""" """Test show configuration form."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, DOMAIN,
@ -61,7 +62,7 @@ async def test_show_config_form_device_type_airlock(hass):
assert result["data_schema"].schema.get(CONF_USE_WEBHOOK) == bool assert result["data_schema"].schema.get(CONF_USE_WEBHOOK) == bool
async def test_show_config_form_device_type_keg(hass): async def test_show_config_form_device_type_keg(hass: HomeAssistant) -> None:
"""Test show configuration form.""" """Test show configuration form."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, DOMAIN,
@ -163,7 +164,7 @@ async def test_show_config_form_validate_webhook_not_connected(hass, webhook_id)
assert result["reason"] == "cloud_not_connected" assert result["reason"] == "cloud_not_connected"
async def test_show_config_form_validate_token(hass): async def test_show_config_form_validate_token(hass: HomeAssistant) -> None:
"""Test show configuration form.""" """Test show configuration form."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -281,7 +282,7 @@ async def test_show_config_form_api_method_no_auth_token(hass, webhook_id):
assert result["errors"]["base"] == "no_api_method" assert result["errors"]["base"] == "no_api_method"
async def test_options(hass): async def test_options(hass: HomeAssistant) -> None:
"""Test updating options.""" """Test updating options."""
config_entry = MockConfigEntry( config_entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,

View file

@ -43,7 +43,7 @@ GOOD_CONFIG = {
} }
async def test_valid_data(hass): async def test_valid_data(hass: HomeAssistant) -> None:
"""Test processing valid data.""" """Test processing valid data."""
sensor = plant.Plant("my plant", GOOD_CONFIG) sensor = plant.Plant("my plant", GOOD_CONFIG)
sensor.entity_id = "sensor.mqtt_plant_battery" sensor.entity_id = "sensor.mqtt_plant_battery"
@ -61,7 +61,7 @@ async def test_valid_data(hass):
assert attrib[reading] == value assert attrib[reading] == value
async def test_low_battery(hass): async def test_low_battery(hass: HomeAssistant) -> None:
"""Test processing with low battery data and limit set.""" """Test processing with low battery data and limit set."""
sensor = plant.Plant("other plant", GOOD_CONFIG) sensor = plant.Plant("other plant", GOOD_CONFIG)
sensor.entity_id = "sensor.mqtt_plant_battery" sensor.entity_id = "sensor.mqtt_plant_battery"
@ -75,7 +75,7 @@ async def test_low_battery(hass):
assert sensor.extra_state_attributes["problem"] == "battery low" assert sensor.extra_state_attributes["problem"] == "battery low"
async def test_initial_states(hass): async def test_initial_states(hass: HomeAssistant) -> None:
"""Test plant initialises attributes if sensor already exists.""" """Test plant initialises attributes if sensor already exists."""
hass.states.async_set(MOISTURE_ENTITY, 5, {ATTR_UNIT_OF_MEASUREMENT: CONDUCTIVITY}) hass.states.async_set(MOISTURE_ENTITY, 5, {ATTR_UNIT_OF_MEASUREMENT: CONDUCTIVITY})
plant_name = "some_plant" plant_name = "some_plant"
@ -87,7 +87,7 @@ async def test_initial_states(hass):
assert state.attributes[plant.READING_MOISTURE] == 5 assert state.attributes[plant.READING_MOISTURE] == 5
async def test_update_states(hass): async def test_update_states(hass: HomeAssistant) -> None:
"""Test updating the state of a sensor. """Test updating the state of a sensor.
Make sure that plant processes this correctly. Make sure that plant processes this correctly.
@ -103,7 +103,7 @@ async def test_update_states(hass):
assert state.attributes[plant.READING_MOISTURE] == 5 assert state.attributes[plant.READING_MOISTURE] == 5
async def test_unavailable_state(hass): async def test_unavailable_state(hass: HomeAssistant) -> None:
"""Test updating the state with unavailable. """Test updating the state with unavailable.
Make sure that plant processes this correctly. Make sure that plant processes this correctly.
@ -121,7 +121,7 @@ async def test_unavailable_state(hass):
assert state.attributes[plant.READING_MOISTURE] == STATE_UNAVAILABLE assert state.attributes[plant.READING_MOISTURE] == STATE_UNAVAILABLE
async def test_state_problem_if_unavailable(hass): async def test_state_problem_if_unavailable(hass: HomeAssistant) -> None:
"""Test updating the state with unavailable after setting it to valid value. """Test updating the state with unavailable after setting it to valid value.
Make sure that plant processes this correctly. Make sure that plant processes this correctly.
@ -170,7 +170,7 @@ async def test_load_from_db(recorder_mock, hass):
assert max_brightness == 30 assert max_brightness == 30
async def test_brightness_history(hass): async def test_brightness_history(hass: HomeAssistant) -> None:
"""Test the min_brightness check.""" """Test the min_brightness check."""
plant_name = "some_plant" plant_name = "some_plant"
assert await async_setup_component( assert await async_setup_component(

View file

@ -37,6 +37,7 @@ from homeassistant.const import (
CONF_VERIFY_SSL, CONF_VERIFY_SSL,
Platform, Platform,
) )
from homeassistant.core import HomeAssistant
from .const import DEFAULT_OPTIONS, MOCK_SERVERS, MOCK_TOKEN, PLEX_DIRECT_URL from .const import DEFAULT_OPTIONS, MOCK_SERVERS, MOCK_TOKEN, PLEX_DIRECT_URL
from .helpers import trigger_plex_update, wait_for_debouncer from .helpers import trigger_plex_update, wait_for_debouncer
@ -697,7 +698,7 @@ async def test_setup_with_limited_credentials(hass, entry, setup_plex_server):
assert entry.state is ConfigEntryState.LOADED assert entry.state is ConfigEntryState.LOADED
async def test_integration_discovery(hass): async def test_integration_discovery(hass: HomeAssistant) -> None:
"""Test integration self-discovery.""" """Test integration self-discovery."""
mock_gdm = MockGDM() mock_gdm = MockGDM()
@ -822,7 +823,7 @@ async def test_trigger_reauth_multiple_servers_available(
assert entry.data[PLEX_SERVER_CONFIG][CONF_TOKEN] == "BRAND_NEW_TOKEN" assert entry.data[PLEX_SERVER_CONFIG][CONF_TOKEN] == "BRAND_NEW_TOKEN"
async def test_client_request_missing(hass): async def test_client_request_missing(hass: HomeAssistant) -> None:
"""Test when client headers are not set properly.""" """Test when client headers are not set properly."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER} DOMAIN, context={"source": SOURCE_USER}

View file

@ -5,11 +5,12 @@ from requests.exceptions import ConnectTimeout
from homeassistant import config_entries from homeassistant import config_entries
from homeassistant.components.plum_lightpad.const import DOMAIN from homeassistant.components.plum_lightpad.const import DOMAIN
from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
async def test_form(hass): async def test_form(hass: HomeAssistant) -> None:
"""Test we get the form.""" """Test we get the form."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -42,7 +43,7 @@ async def test_form(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_form_cannot_connect(hass): async def test_form_cannot_connect(hass: HomeAssistant) -> None:
"""Test we handle invalid auth.""" """Test we handle invalid auth."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -61,7 +62,7 @@ async def test_form_cannot_connect(hass):
assert result2["errors"] == {"base": "cannot_connect"} assert result2["errors"] == {"base": "cannot_connect"}
async def test_form_one_entry_per_email_allowed(hass): async def test_form_one_entry_per_email_allowed(hass: HomeAssistant) -> None:
"""Test that only one entry allowed per Plum cloud email address.""" """Test that only one entry allowed per Plum cloud email address."""
MockConfigEntry( MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -89,7 +90,7 @@ async def test_form_one_entry_per_email_allowed(hass):
assert len(mock_setup_entry.mock_calls) == 0 assert len(mock_setup_entry.mock_calls) == 0
async def test_import(hass): async def test_import(hass: HomeAssistant) -> None:
"""Test configuring the flow using configuration.yaml.""" """Test configuring the flow using configuration.yaml."""
with patch( with patch(

View file

@ -7,6 +7,7 @@ import pytest
from homeassistant import data_entry_flow from homeassistant import data_entry_flow
from homeassistant.components.point import DOMAIN, config_flow from homeassistant.components.point import DOMAIN, config_flow
from homeassistant.const import CONF_CLIENT_ID, CONF_CLIENT_SECRET from homeassistant.const import CONF_CLIENT_ID, CONF_CLIENT_SECRET
from homeassistant.core import HomeAssistant
def init_config_flow(hass, side_effect=None): def init_config_flow(hass, side_effect=None):
@ -42,7 +43,7 @@ def mock_pypoint(is_authorized):
yield PointSession yield PointSession
async def test_abort_if_no_implementation_registered(hass): async def test_abort_if_no_implementation_registered(hass: HomeAssistant) -> None:
"""Test we abort if no implementation is registered.""" """Test we abort if no implementation is registered."""
flow = config_flow.PointFlowHandler() flow = config_flow.PointFlowHandler()
flow.hass = hass flow.hass = hass
@ -52,7 +53,7 @@ async def test_abort_if_no_implementation_registered(hass):
assert result["reason"] == "no_flows" assert result["reason"] == "no_flows"
async def test_abort_if_already_setup(hass): async def test_abort_if_already_setup(hass: HomeAssistant) -> None:
"""Test we abort if Point is already setup.""" """Test we abort if Point is already setup."""
flow = init_config_flow(hass) flow = init_config_flow(hass)
@ -112,7 +113,7 @@ async def test_wrong_code_flow_implementation(hass, mock_pypoint):
assert result["reason"] == "auth_error" assert result["reason"] == "auth_error"
async def test_not_pick_implementation_if_only_one(hass): async def test_not_pick_implementation_if_only_one(hass: HomeAssistant) -> None:
"""Test we allow picking implementation if we have one flow_imp.""" """Test we allow picking implementation if we have one flow_imp."""
flow = init_config_flow(hass) flow = init_config_flow(hass)
@ -121,7 +122,7 @@ async def test_not_pick_implementation_if_only_one(hass):
assert result["step_id"] == "auth" assert result["step_id"] == "auth"
async def test_abort_if_timeout_generating_auth_url(hass): async def test_abort_if_timeout_generating_auth_url(hass: HomeAssistant) -> None:
"""Test we abort if generating authorize url fails.""" """Test we abort if generating authorize url fails."""
flow = init_config_flow(hass, side_effect=asyncio.TimeoutError) flow = init_config_flow(hass, side_effect=asyncio.TimeoutError)
@ -130,7 +131,7 @@ async def test_abort_if_timeout_generating_auth_url(hass):
assert result["reason"] == "authorize_url_timeout" assert result["reason"] == "authorize_url_timeout"
async def test_abort_if_exception_generating_auth_url(hass): async def test_abort_if_exception_generating_auth_url(hass: HomeAssistant) -> None:
"""Test we abort if generating authorize url blows up.""" """Test we abort if generating authorize url blows up."""
flow = init_config_flow(hass, side_effect=ValueError) flow = init_config_flow(hass, side_effect=ValueError)
@ -139,7 +140,7 @@ async def test_abort_if_exception_generating_auth_url(hass):
assert result["reason"] == "unknown_authorize_url_generation" assert result["reason"] == "unknown_authorize_url_generation"
async def test_abort_no_code(hass): async def test_abort_no_code(hass: HomeAssistant) -> None:
"""Test if no code is given to step_code.""" """Test if no code is given to step_code."""
flow = init_config_flow(hass) flow = init_config_flow(hass)

View file

@ -5,9 +5,10 @@ from homeassistant import data_entry_flow
from homeassistant.components.poolsense.const import DOMAIN from homeassistant.components.poolsense.const import DOMAIN
from homeassistant.config_entries import SOURCE_USER from homeassistant.config_entries import SOURCE_USER
from homeassistant.const import CONF_EMAIL, CONF_PASSWORD from homeassistant.const import CONF_EMAIL, CONF_PASSWORD
from homeassistant.core import HomeAssistant
async def test_show_form(hass): async def test_show_form(hass: HomeAssistant) -> None:
"""Test that the form is served with no input.""" """Test that the form is served with no input."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER} DOMAIN, context={"source": SOURCE_USER}
@ -17,7 +18,7 @@ async def test_show_form(hass):
assert result["step_id"] == SOURCE_USER assert result["step_id"] == SOURCE_USER
async def test_invalid_credentials(hass): async def test_invalid_credentials(hass: HomeAssistant) -> None:
"""Test we handle invalid credentials.""" """Test we handle invalid credentials."""
with patch( with patch(
"poolsense.PoolSense.test_poolsense_credentials", "poolsense.PoolSense.test_poolsense_credentials",
@ -33,7 +34,7 @@ async def test_invalid_credentials(hass):
assert result["errors"] == {"base": "invalid_auth"} assert result["errors"] == {"base": "invalid_auth"}
async def test_valid_credentials(hass): async def test_valid_credentials(hass: HomeAssistant) -> None:
"""Test we handle invalid credentials.""" """Test we handle invalid credentials."""
with patch( with patch(
"poolsense.PoolSense.test_poolsense_credentials", return_value=True "poolsense.PoolSense.test_poolsense_credentials", return_value=True

View file

@ -1,16 +1,16 @@
"""The binary sensor tests for the powerwall platform.""" """The binary sensor tests for the powerwall platform."""
from unittest.mock import patch from unittest.mock import patch
from homeassistant.components.powerwall.const import DOMAIN from homeassistant.components.powerwall.const import DOMAIN
from homeassistant.const import CONF_IP_ADDRESS, STATE_ON from homeassistant.const import CONF_IP_ADDRESS, STATE_ON
from homeassistant.core import HomeAssistant
from .mocks import _mock_powerwall_with_fixtures from .mocks import _mock_powerwall_with_fixtures
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
async def test_sensors(hass): async def test_sensors(hass: HomeAssistant) -> None:
"""Test creation of the binary sensors.""" """Test creation of the binary sensors."""
mock_powerwall = await _mock_powerwall_with_fixtures(hass) mock_powerwall = await _mock_powerwall_with_fixtures(hass)

View file

@ -27,7 +27,7 @@ from tests.common import MockConfigEntry
VALID_CONFIG = {CONF_IP_ADDRESS: "1.2.3.4", CONF_PASSWORD: "00GGX"} VALID_CONFIG = {CONF_IP_ADDRESS: "1.2.3.4", CONF_PASSWORD: "00GGX"}
async def test_form_source_user(hass): async def test_form_source_user(hass: HomeAssistant) -> None:
"""Test we get config flow setup form as a user.""" """Test we get config flow setup form as a user."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -57,7 +57,7 @@ async def test_form_source_user(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_form_cannot_connect(hass): async def test_form_cannot_connect(hass: HomeAssistant) -> None:
"""Test we handle cannot connect error.""" """Test we handle cannot connect error."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -78,7 +78,7 @@ async def test_form_cannot_connect(hass):
assert result2["errors"] == {CONF_IP_ADDRESS: "cannot_connect"} assert result2["errors"] == {CONF_IP_ADDRESS: "cannot_connect"}
async def test_invalid_auth(hass): async def test_invalid_auth(hass: HomeAssistant) -> None:
"""Test we handle invalid auth error.""" """Test we handle invalid auth error."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -99,7 +99,7 @@ async def test_invalid_auth(hass):
assert result2["errors"] == {CONF_PASSWORD: "invalid_auth"} assert result2["errors"] == {CONF_PASSWORD: "invalid_auth"}
async def test_form_unknown_exeption(hass): async def test_form_unknown_exeption(hass: HomeAssistant) -> None:
"""Test we handle an unknown exception.""" """Test we handle an unknown exception."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -119,7 +119,7 @@ async def test_form_unknown_exeption(hass):
assert result2["errors"] == {"base": "unknown"} assert result2["errors"] == {"base": "unknown"}
async def test_form_wrong_version(hass): async def test_form_wrong_version(hass: HomeAssistant) -> None:
"""Test we can handle wrong version error.""" """Test we can handle wrong version error."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -142,7 +142,7 @@ async def test_form_wrong_version(hass):
assert result3["errors"] == {"base": "wrong_version"} assert result3["errors"] == {"base": "wrong_version"}
async def test_already_configured(hass): async def test_already_configured(hass: HomeAssistant) -> None:
"""Test we abort when already configured.""" """Test we abort when already configured."""
config_entry = MockConfigEntry(domain=DOMAIN, data={CONF_IP_ADDRESS: "1.1.1.1"}) config_entry = MockConfigEntry(domain=DOMAIN, data={CONF_IP_ADDRESS: "1.1.1.1"})
@ -161,7 +161,7 @@ async def test_already_configured(hass):
assert result["reason"] == "already_configured" assert result["reason"] == "already_configured"
async def test_already_configured_with_ignored(hass): async def test_already_configured_with_ignored(hass: HomeAssistant) -> None:
"""Test ignored entries do not break checking for existing entries.""" """Test ignored entries do not break checking for existing entries."""
config_entry = MockConfigEntry( config_entry = MockConfigEntry(
@ -206,7 +206,7 @@ async def test_already_configured_with_ignored(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_dhcp_discovery_manual_configure(hass): async def test_dhcp_discovery_manual_configure(hass: HomeAssistant) -> None:
"""Test we can process the discovery from dhcp and manually configure.""" """Test we can process the discovery from dhcp and manually configure."""
mock_powerwall = await _mock_powerwall_site_name(hass, "Some site") mock_powerwall = await _mock_powerwall_site_name(hass, "Some site")
@ -245,7 +245,7 @@ async def test_dhcp_discovery_manual_configure(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_dhcp_discovery_auto_configure(hass): async def test_dhcp_discovery_auto_configure(hass: HomeAssistant) -> None:
"""Test we can process the discovery from dhcp and auto configure.""" """Test we can process the discovery from dhcp and auto configure."""
mock_powerwall = await _mock_powerwall_site_name(hass, "Some site") mock_powerwall = await _mock_powerwall_site_name(hass, "Some site")
@ -284,7 +284,7 @@ async def test_dhcp_discovery_auto_configure(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_dhcp_discovery_cannot_connect(hass): async def test_dhcp_discovery_cannot_connect(hass: HomeAssistant) -> None:
"""Test we can process the discovery from dhcp and we cannot connect.""" """Test we can process the discovery from dhcp and we cannot connect."""
mock_powerwall = _mock_powerwall_side_effect(site_info=PowerwallUnreachableError) mock_powerwall = _mock_powerwall_side_effect(site_info=PowerwallUnreachableError)
@ -305,7 +305,7 @@ async def test_dhcp_discovery_cannot_connect(hass):
assert result["reason"] == "cannot_connect" assert result["reason"] == "cannot_connect"
async def test_form_reauth(hass): async def test_form_reauth(hass: HomeAssistant) -> None:
"""Test reauthenticate.""" """Test reauthenticate."""
entry = MockConfigEntry( entry = MockConfigEntry(
@ -345,7 +345,7 @@ async def test_form_reauth(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_dhcp_discovery_update_ip_address(hass): async def test_dhcp_discovery_update_ip_address(hass: HomeAssistant) -> None:
"""Test we can update the ip address from dhcp.""" """Test we can update the ip address from dhcp."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -377,7 +377,9 @@ async def test_dhcp_discovery_update_ip_address(hass):
assert entry.data[CONF_IP_ADDRESS] == "1.1.1.1" assert entry.data[CONF_IP_ADDRESS] == "1.1.1.1"
async def test_dhcp_discovery_does_not_update_ip_when_auth_fails(hass): async def test_dhcp_discovery_does_not_update_ip_when_auth_fails(
hass: HomeAssistant,
) -> None:
"""Test we do not switch to another interface when auth is failing.""" """Test we do not switch to another interface when auth is failing."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -409,7 +411,9 @@ async def test_dhcp_discovery_does_not_update_ip_when_auth_fails(hass):
assert entry.data[CONF_IP_ADDRESS] == "1.2.3.4" assert entry.data[CONF_IP_ADDRESS] == "1.2.3.4"
async def test_dhcp_discovery_does_not_update_ip_when_auth_successful(hass): async def test_dhcp_discovery_does_not_update_ip_when_auth_successful(
hass: HomeAssistant,
) -> None:
"""Test we do not switch to another interface when auth is successful.""" """Test we do not switch to another interface when auth is successful."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -441,7 +445,7 @@ async def test_dhcp_discovery_does_not_update_ip_when_auth_successful(hass):
assert entry.data[CONF_IP_ADDRESS] == "1.2.3.4" assert entry.data[CONF_IP_ADDRESS] == "1.2.3.4"
async def test_dhcp_discovery_updates_unique_id(hass): async def test_dhcp_discovery_updates_unique_id(hass: HomeAssistant) -> None:
"""Test we can update the unique id from dhcp.""" """Test we can update the unique id from dhcp."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -474,7 +478,9 @@ async def test_dhcp_discovery_updates_unique_id(hass):
assert entry.unique_id == MOCK_GATEWAY_DIN assert entry.unique_id == MOCK_GATEWAY_DIN
async def test_dhcp_discovery_updates_unique_id_when_entry_is_failed(hass): async def test_dhcp_discovery_updates_unique_id_when_entry_is_failed(
hass: HomeAssistant,
) -> None:
"""Test we can update the unique id from dhcp in a failed state.""" """Test we can update the unique id from dhcp in a failed state."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,

View file

@ -12,6 +12,7 @@ from homeassistant.const import (
CONF_IP_ADDRESS, CONF_IP_ADDRESS,
PERCENTAGE, PERCENTAGE,
) )
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr from homeassistant.helpers import device_registry as dr
from .mocks import _mock_powerwall_with_fixtures from .mocks import _mock_powerwall_with_fixtures
@ -116,7 +117,7 @@ async def test_sensors(hass, entity_registry_enabled_by_default):
assert state.attributes[key] == value assert state.attributes[key] == value
async def test_sensor_backup_reserve_unavailable(hass): async def test_sensor_backup_reserve_unavailable(hass: HomeAssistant) -> None:
"""Confirm that backup reserve sensor is not added if data is unavailable from the device.""" """Confirm that backup reserve sensor is not added if data is unavailable from the device."""
mock_powerwall = await _mock_powerwall_with_fixtures(hass) mock_powerwall = await _mock_powerwall_with_fixtures(hass)

View file

@ -3,11 +3,12 @@ from unittest.mock import patch
from homeassistant import config_entries from homeassistant import config_entries
from homeassistant.components.profiler.const import DOMAIN from homeassistant.components.profiler.const import DOMAIN
from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
async def test_form_user(hass): async def test_form_user(hass: HomeAssistant) -> None:
"""Test we can setup by the user.""" """Test we can setup by the user."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -32,7 +33,7 @@ async def test_form_user(hass):
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1
async def test_form_user_only_once(hass): async def test_form_user_only_once(hass: HomeAssistant) -> None:
"""Test we can setup by the user only once.""" """Test we can setup by the user only once."""
MockConfigEntry(domain=DOMAIN).add_to_hass(hass) MockConfigEntry(domain=DOMAIN).add_to_hass(hass)

View file

@ -3,6 +3,8 @@ from datetime import timedelta
import os import os
from unittest.mock import patch from unittest.mock import patch
import pytest
from homeassistant.components.profiler import ( from homeassistant.components.profiler import (
CONF_SECONDS, CONF_SECONDS,
SERVICE_DUMP_LOG_OBJECTS, SERVICE_DUMP_LOG_OBJECTS,
@ -15,6 +17,7 @@ from homeassistant.components.profiler import (
) )
from homeassistant.components.profiler.const import DOMAIN from homeassistant.components.profiler.const import DOMAIN
from homeassistant.const import CONF_SCAN_INTERVAL, CONF_TYPE from homeassistant.const import CONF_SCAN_INTERVAL, CONF_TYPE
from homeassistant.core import HomeAssistant
import homeassistant.util.dt as dt_util import homeassistant.util.dt as dt_util
from tests.common import MockConfigEntry, async_fire_time_changed from tests.common import MockConfigEntry, async_fire_time_changed
@ -78,7 +81,9 @@ async def test_memory_usage(hass, tmpdir):
await hass.async_block_till_done() await hass.async_block_till_done()
async def test_object_growth_logging(hass, caplog): async def test_object_growth_logging(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test we can setup and the service and we can dump objects to the log.""" """Test we can setup and the service and we can dump objects to the log."""
entry = MockConfigEntry(domain=DOMAIN) entry = MockConfigEntry(domain=DOMAIN)
@ -119,7 +124,9 @@ async def test_object_growth_logging(hass, caplog):
assert "Growth" not in caplog.text assert "Growth" not in caplog.text
async def test_dump_log_object(hass, caplog): async def test_dump_log_object(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test we can setup and the service is registered and logging works.""" """Test we can setup and the service is registered and logging works."""
entry = MockConfigEntry(domain=DOMAIN) entry = MockConfigEntry(domain=DOMAIN)
@ -154,7 +161,9 @@ async def test_dump_log_object(hass, caplog):
caplog.clear() caplog.clear()
async def test_log_thread_frames(hass, caplog): async def test_log_thread_frames(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test we can log thread frames.""" """Test we can log thread frames."""
entry = MockConfigEntry(domain=DOMAIN) entry = MockConfigEntry(domain=DOMAIN)
@ -175,7 +184,9 @@ async def test_log_thread_frames(hass, caplog):
await hass.async_block_till_done() await hass.async_block_till_done()
async def test_log_scheduled(hass, caplog): async def test_log_scheduled(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test we can log scheduled items in the event loop.""" """Test we can log scheduled items in the event loop."""
entry = MockConfigEntry(domain=DOMAIN) entry = MockConfigEntry(domain=DOMAIN)

View file

@ -4,6 +4,7 @@ from unittest.mock import patch
from homeassistant import config_entries from homeassistant import config_entries
from homeassistant.components.progettihwsw.const import DOMAIN from homeassistant.components.progettihwsw.const import DOMAIN
from homeassistant.const import CONF_HOST, CONF_PORT from homeassistant.const import CONF_HOST, CONF_PORT
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import FlowResultType from homeassistant.data_entry_flow import FlowResultType
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
@ -16,7 +17,7 @@ mock_value_step_user = {
} }
async def test_form(hass): async def test_form(hass: HomeAssistant) -> None:
"""Test we get the form.""" """Test we get the form."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -59,7 +60,7 @@ async def test_form(hass):
assert result3["data"]["relay_count"] == result3["data"]["input_count"] == 1 assert result3["data"]["relay_count"] == result3["data"]["input_count"] == 1
async def test_form_cannot_connect(hass): async def test_form_cannot_connect(hass: HomeAssistant) -> None:
"""Test we handle unexisting board.""" """Test we handle unexisting board."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -81,7 +82,7 @@ async def test_form_cannot_connect(hass):
assert result2["errors"] == {"base": "cannot_connect"} assert result2["errors"] == {"base": "cannot_connect"}
async def test_form_existing_entry_exception(hass): async def test_form_existing_entry_exception(hass: HomeAssistant) -> None:
"""Test we handle existing board.""" """Test we handle existing board."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -107,7 +108,7 @@ async def test_form_existing_entry_exception(hass):
assert result2["reason"] == "already_configured" assert result2["reason"] == "already_configured"
async def test_form_user_exception(hass): async def test_form_user_exception(hass: HomeAssistant) -> None:
"""Test we handle unknown exception.""" """Test we handle unknown exception."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}

View file

@ -6,12 +6,13 @@ import pytest
from homeassistant import config_entries from homeassistant import config_entries
from homeassistant.components.prosegur.config_flow import CannotConnect, InvalidAuth from homeassistant.components.prosegur.config_flow import CannotConnect, InvalidAuth
from homeassistant.components.prosegur.const import DOMAIN from homeassistant.components.prosegur.const import DOMAIN
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import FlowResultType from homeassistant.data_entry_flow import FlowResultType
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
async def test_form(hass): async def test_form(hass: HomeAssistant) -> None:
"""Test we get the form.""" """Test we get the form."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -53,7 +54,7 @@ async def test_form(hass):
assert len(mock_retrieve.mock_calls) == 1 assert len(mock_retrieve.mock_calls) == 1
async def test_form_invalid_auth(hass): async def test_form_invalid_auth(hass: HomeAssistant) -> None:
"""Test we handle invalid auth.""" """Test we handle invalid auth."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -76,7 +77,7 @@ async def test_form_invalid_auth(hass):
assert result2["errors"] == {"base": "invalid_auth"} assert result2["errors"] == {"base": "invalid_auth"}
async def test_form_cannot_connect(hass): async def test_form_cannot_connect(hass: HomeAssistant) -> None:
"""Test we handle cannot connect error.""" """Test we handle cannot connect error."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -99,7 +100,7 @@ async def test_form_cannot_connect(hass):
assert result2["errors"] == {"base": "cannot_connect"} assert result2["errors"] == {"base": "cannot_connect"}
async def test_form_unknown_exception(hass): async def test_form_unknown_exception(hass: HomeAssistant) -> None:
"""Test we handle unknown exceptions.""" """Test we handle unknown exceptions."""
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -122,7 +123,7 @@ async def test_form_unknown_exception(hass):
assert result2["errors"] == {"base": "unknown"} assert result2["errors"] == {"base": "unknown"}
async def test_reauth_flow(hass): async def test_reauth_flow(hass: HomeAssistant) -> None:
"""Test a reauthentication flow.""" """Test a reauthentication flow."""
entry = MockConfigEntry( entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,

View file

@ -4,8 +4,10 @@ from unittest.mock import MagicMock, patch
import pytest import pytest
from homeassistant.components.prosegur import DOMAIN from homeassistant.components.prosegur import DOMAIN
from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
from tests.test_util.aiohttp import AiohttpClientMocker
@pytest.mark.parametrize( @pytest.mark.parametrize(
@ -38,7 +40,9 @@ async def test_setup_entry_fail_retrieve(hass, error):
await hass.async_block_till_done() await hass.async_block_till_done()
async def test_unload_entry(hass, aioclient_mock): async def test_unload_entry(
hass: HomeAssistant, aioclient_mock: AiohttpClientMocker
) -> None:
"""Test unloading the Prosegur entry.""" """Test unloading the Prosegur entry."""
aioclient_mock.post( aioclient_mock.post(

View file

@ -1,10 +1,10 @@
"""The tests for the Proximity component.""" """The tests for the Proximity component."""
from homeassistant.components.proximity import DOMAIN from homeassistant.components.proximity import DOMAIN
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
async def test_proximities(hass): async def test_proximities(hass: HomeAssistant) -> None:
"""Test a list of proximities.""" """Test a list of proximities."""
config = { config = {
"proximity": { "proximity": {
@ -33,7 +33,7 @@ async def test_proximities(hass):
assert state.state == "0" assert state.state == "0"
async def test_proximities_setup(hass): async def test_proximities_setup(hass: HomeAssistant) -> None:
"""Test a list of proximities with missing devices.""" """Test a list of proximities with missing devices."""
config = { config = {
"proximity": { "proximity": {
@ -49,7 +49,7 @@ async def test_proximities_setup(hass):
assert await async_setup_component(hass, DOMAIN, config) assert await async_setup_component(hass, DOMAIN, config)
async def test_proximity(hass): async def test_proximity(hass: HomeAssistant) -> None:
"""Test the proximity.""" """Test the proximity."""
config = { config = {
"proximity": { "proximity": {
@ -74,7 +74,7 @@ async def test_proximity(hass):
assert state.state == "0" assert state.state == "0"
async def test_device_tracker_test1_in_zone(hass): async def test_device_tracker_test1_in_zone(hass: HomeAssistant) -> None:
"""Test for tracker in zone.""" """Test for tracker in zone."""
config = { config = {
"proximity": { "proximity": {
@ -100,7 +100,7 @@ async def test_device_tracker_test1_in_zone(hass):
assert state.attributes.get("dir_of_travel") == "arrived" assert state.attributes.get("dir_of_travel") == "arrived"
async def test_device_trackers_in_zone(hass): async def test_device_trackers_in_zone(hass: HomeAssistant) -> None:
"""Test for trackers in zone.""" """Test for trackers in zone."""
config = { config = {
"proximity": { "proximity": {
@ -134,7 +134,7 @@ async def test_device_trackers_in_zone(hass):
assert state.attributes.get("dir_of_travel") == "arrived" assert state.attributes.get("dir_of_travel") == "arrived"
async def test_device_tracker_test1_away(hass): async def test_device_tracker_test1_away(hass: HomeAssistant) -> None:
"""Test for tracker state away.""" """Test for tracker state away."""
config = { config = {
"proximity": { "proximity": {
@ -160,7 +160,7 @@ async def test_device_tracker_test1_away(hass):
assert state.attributes.get("dir_of_travel") == "unknown" assert state.attributes.get("dir_of_travel") == "unknown"
async def test_device_tracker_test1_awayfurther(hass): async def test_device_tracker_test1_awayfurther(hass: HomeAssistant) -> None:
"""Test for tracker state away further.""" """Test for tracker state away further."""
config_zones(hass) config_zones(hass)
@ -199,7 +199,7 @@ async def test_device_tracker_test1_awayfurther(hass):
assert state.attributes.get("dir_of_travel") == "away_from" assert state.attributes.get("dir_of_travel") == "away_from"
async def test_device_tracker_test1_awaycloser(hass): async def test_device_tracker_test1_awaycloser(hass: HomeAssistant) -> None:
"""Test for tracker state away closer.""" """Test for tracker state away closer."""
config_zones(hass) config_zones(hass)
await hass.async_block_till_done() await hass.async_block_till_done()
@ -237,7 +237,7 @@ async def test_device_tracker_test1_awaycloser(hass):
assert state.attributes.get("dir_of_travel") == "towards" assert state.attributes.get("dir_of_travel") == "towards"
async def test_all_device_trackers_in_ignored_zone(hass): async def test_all_device_trackers_in_ignored_zone(hass: HomeAssistant) -> None:
"""Test for tracker in ignored zone.""" """Test for tracker in ignored zone."""
config = { config = {
"proximity": { "proximity": {
@ -259,7 +259,7 @@ async def test_all_device_trackers_in_ignored_zone(hass):
assert state.attributes.get("dir_of_travel") == "not set" assert state.attributes.get("dir_of_travel") == "not set"
async def test_device_tracker_test1_no_coordinates(hass): async def test_device_tracker_test1_no_coordinates(hass: HomeAssistant) -> None:
"""Test for tracker with no coordinates.""" """Test for tracker with no coordinates."""
config = { config = {
"proximity": { "proximity": {
@ -282,7 +282,9 @@ async def test_device_tracker_test1_no_coordinates(hass):
assert state.attributes.get("dir_of_travel") == "not set" assert state.attributes.get("dir_of_travel") == "not set"
async def test_device_tracker_test1_awayfurther_than_test2_first_test1(hass): async def test_device_tracker_test1_awayfurther_than_test2_first_test1(
hass: HomeAssistant,
) -> None:
"""Test for tracker ordering.""" """Test for tracker ordering."""
config_zones(hass) config_zones(hass)
await hass.async_block_till_done() await hass.async_block_till_done()
@ -332,7 +334,9 @@ async def test_device_tracker_test1_awayfurther_than_test2_first_test1(hass):
assert state.attributes.get("dir_of_travel") == "unknown" assert state.attributes.get("dir_of_travel") == "unknown"
async def test_device_tracker_test1_awayfurther_than_test2_first_test2(hass): async def test_device_tracker_test1_awayfurther_than_test2_first_test2(
hass: HomeAssistant,
) -> None:
"""Test for tracker ordering.""" """Test for tracker ordering."""
config_zones(hass) config_zones(hass)
await hass.async_block_till_done() await hass.async_block_till_done()
@ -380,7 +384,9 @@ async def test_device_tracker_test1_awayfurther_than_test2_first_test2(hass):
assert state.attributes.get("dir_of_travel") == "unknown" assert state.attributes.get("dir_of_travel") == "unknown"
async def test_device_tracker_test1_awayfurther_test2_in_ignored_zone(hass): async def test_device_tracker_test1_awayfurther_test2_in_ignored_zone(
hass: HomeAssistant,
) -> None:
"""Test for tracker states.""" """Test for tracker states."""
hass.states.async_set( hass.states.async_set(
"device_tracker.test1", "not_home", {"friendly_name": "test1"} "device_tracker.test1", "not_home", {"friendly_name": "test1"}
@ -413,7 +419,9 @@ async def test_device_tracker_test1_awayfurther_test2_in_ignored_zone(hass):
assert state.attributes.get("dir_of_travel") == "unknown" assert state.attributes.get("dir_of_travel") == "unknown"
async def test_device_tracker_test1_awayfurther_test2_first(hass): async def test_device_tracker_test1_awayfurther_test2_first(
hass: HomeAssistant,
) -> None:
"""Test for tracker state.""" """Test for tracker state."""
config_zones(hass) config_zones(hass)
await hass.async_block_till_done() await hass.async_block_till_done()
@ -477,7 +485,7 @@ async def test_device_tracker_test1_awayfurther_test2_first(hass):
assert state.attributes.get("dir_of_travel") == "unknown" assert state.attributes.get("dir_of_travel") == "unknown"
async def test_device_tracker_test1_awayfurther_a_bit(hass): async def test_device_tracker_test1_awayfurther_a_bit(hass: HomeAssistant) -> None:
"""Test for tracker states.""" """Test for tracker states."""
assert await async_setup_component( assert await async_setup_component(
hass, hass,
@ -515,7 +523,9 @@ async def test_device_tracker_test1_awayfurther_a_bit(hass):
assert state.attributes.get("dir_of_travel") == "stationary" assert state.attributes.get("dir_of_travel") == "stationary"
async def test_device_tracker_test1_nearest_after_test2_in_ignored_zone(hass): async def test_device_tracker_test1_nearest_after_test2_in_ignored_zone(
hass: HomeAssistant,
) -> None:
"""Test for tracker states.""" """Test for tracker states."""
config_zones(hass) config_zones(hass)
await hass.async_block_till_done() await hass.async_block_till_done()

View file

@ -21,6 +21,7 @@ from homeassistant.const import (
CONF_REGION, CONF_REGION,
CONF_TOKEN, CONF_TOKEN,
) )
from homeassistant.core import HomeAssistant
from homeassistant.util import location from homeassistant.util import location
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
@ -96,7 +97,7 @@ def ps4_setup_fixture():
yield yield
async def test_full_flow_implementation(hass): async def test_full_flow_implementation(hass: HomeAssistant) -> None:
"""Test registering an implementation and flow works.""" """Test registering an implementation and flow works."""
# User Step Started, results in Step Creds # User Step Started, results in Step Creds
with patch("pyps4_2ndscreen.Helper.port_bind", return_value=None): with patch("pyps4_2ndscreen.Helper.port_bind", return_value=None):
@ -137,7 +138,7 @@ async def test_full_flow_implementation(hass):
assert result["title"] == MOCK_TITLE assert result["title"] == MOCK_TITLE
async def test_multiple_flow_implementation(hass): async def test_multiple_flow_implementation(hass: HomeAssistant) -> None:
"""Test multiple device flows.""" """Test multiple device flows."""
# User Step Started, results in Step Creds # User Step Started, results in Step Creds
with patch("pyps4_2ndscreen.Helper.port_bind", return_value=None): with patch("pyps4_2ndscreen.Helper.port_bind", return_value=None):
@ -242,7 +243,7 @@ async def test_multiple_flow_implementation(hass):
assert entry_1 is not entry_2 assert entry_1 is not entry_2
async def test_port_bind_abort(hass): async def test_port_bind_abort(hass: HomeAssistant) -> None:
"""Test that flow aborted when cannot bind to ports 987, 997.""" """Test that flow aborted when cannot bind to ports 987, 997."""
with patch("pyps4_2ndscreen.Helper.port_bind", return_value=MOCK_UDP_PORT): with patch("pyps4_2ndscreen.Helper.port_bind", return_value=MOCK_UDP_PORT):
reason = "port_987_bind_error" reason = "port_987_bind_error"
@ -261,7 +262,7 @@ async def test_port_bind_abort(hass):
assert result["reason"] == reason assert result["reason"] == reason
async def test_duplicate_abort(hass): async def test_duplicate_abort(hass: HomeAssistant) -> None:
"""Test that Flow aborts when found devices already configured.""" """Test that Flow aborts when found devices already configured."""
MockConfigEntry(domain=ps4.DOMAIN, data=MOCK_DATA).add_to_hass(hass) MockConfigEntry(domain=ps4.DOMAIN, data=MOCK_DATA).add_to_hass(hass)
@ -289,7 +290,7 @@ async def test_duplicate_abort(hass):
assert result["reason"] == "already_configured" assert result["reason"] == "already_configured"
async def test_additional_device(hass): async def test_additional_device(hass: HomeAssistant) -> None:
"""Test that Flow can configure another device.""" """Test that Flow can configure another device."""
# Mock existing entry. # Mock existing entry.
entry = MockConfigEntry(domain=ps4.DOMAIN, data=MOCK_DATA) entry = MockConfigEntry(domain=ps4.DOMAIN, data=MOCK_DATA)
@ -328,7 +329,7 @@ async def test_additional_device(hass):
assert result["title"] == MOCK_TITLE assert result["title"] == MOCK_TITLE
async def test_0_pin(hass): async def test_0_pin(hass: HomeAssistant) -> None:
"""Test Pin with leading '0' is passed correctly.""" """Test Pin with leading '0' is passed correctly."""
with patch("pyps4_2ndscreen.Helper.get_creds", return_value=MOCK_CREDS): with patch("pyps4_2ndscreen.Helper.get_creds", return_value=MOCK_CREDS):
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -366,7 +367,7 @@ async def test_0_pin(hass):
) )
async def test_no_devices_found_abort(hass): async def test_no_devices_found_abort(hass: HomeAssistant) -> None:
"""Test that failure to find devices aborts flow.""" """Test that failure to find devices aborts flow."""
with patch("pyps4_2ndscreen.Helper.port_bind", return_value=None): with patch("pyps4_2ndscreen.Helper.port_bind", return_value=None):
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -391,7 +392,7 @@ async def test_no_devices_found_abort(hass):
assert result["reason"] == "no_devices_found" assert result["reason"] == "no_devices_found"
async def test_manual_mode(hass): async def test_manual_mode(hass: HomeAssistant) -> None:
"""Test host specified in manual mode is passed to Step Link.""" """Test host specified in manual mode is passed to Step Link."""
with patch("pyps4_2ndscreen.Helper.port_bind", return_value=None): with patch("pyps4_2ndscreen.Helper.port_bind", return_value=None):
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -419,7 +420,7 @@ async def test_manual_mode(hass):
assert result["step_id"] == "link" assert result["step_id"] == "link"
async def test_credential_abort(hass): async def test_credential_abort(hass: HomeAssistant) -> None:
"""Test that failure to get credentials aborts flow.""" """Test that failure to get credentials aborts flow."""
with patch("pyps4_2ndscreen.Helper.port_bind", return_value=None): with patch("pyps4_2ndscreen.Helper.port_bind", return_value=None):
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -437,7 +438,7 @@ async def test_credential_abort(hass):
assert result["reason"] == "credential_error" assert result["reason"] == "credential_error"
async def test_credential_timeout(hass): async def test_credential_timeout(hass: HomeAssistant) -> None:
"""Test that Credential Timeout shows error.""" """Test that Credential Timeout shows error."""
with patch("pyps4_2ndscreen.Helper.port_bind", return_value=None): with patch("pyps4_2ndscreen.Helper.port_bind", return_value=None):
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -456,7 +457,7 @@ async def test_credential_timeout(hass):
assert result["errors"] == {"base": "credential_timeout"} assert result["errors"] == {"base": "credential_timeout"}
async def test_wrong_pin_error(hass): async def test_wrong_pin_error(hass: HomeAssistant) -> None:
"""Test that incorrect pin throws an error.""" """Test that incorrect pin throws an error."""
with patch("pyps4_2ndscreen.Helper.port_bind", return_value=None): with patch("pyps4_2ndscreen.Helper.port_bind", return_value=None):
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -488,7 +489,7 @@ async def test_wrong_pin_error(hass):
assert result["errors"] == {"base": "login_failed"} assert result["errors"] == {"base": "login_failed"}
async def test_device_connection_error(hass): async def test_device_connection_error(hass: HomeAssistant) -> None:
"""Test that device not connected or on throws an error.""" """Test that device not connected or on throws an error."""
with patch("pyps4_2ndscreen.Helper.port_bind", return_value=None): with patch("pyps4_2ndscreen.Helper.port_bind", return_value=None):
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
@ -520,7 +521,7 @@ async def test_device_connection_error(hass):
assert result["errors"] == {"base": "cannot_connect"} assert result["errors"] == {"base": "cannot_connect"}
async def test_manual_mode_no_ip_error(hass): async def test_manual_mode_no_ip_error(hass: HomeAssistant) -> None:
"""Test no IP specified in manual mode throws an error.""" """Test no IP specified in manual mode throws an error."""
with patch("pyps4_2ndscreen.Helper.port_bind", return_value=None): with patch("pyps4_2ndscreen.Helper.port_bind", return_value=None):
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(

View file

@ -109,14 +109,14 @@ MOCK_GAMES = {MOCK_ID: MOCK_GAMES_DATA}
MOCK_GAMES_LOCKED = {MOCK_ID: MOCK_GAMES_DATA_LOCKED} MOCK_GAMES_LOCKED = {MOCK_ID: MOCK_GAMES_DATA_LOCKED}
async def test_ps4_integration_setup(hass): async def test_ps4_integration_setup(hass: HomeAssistant) -> None:
"""Test PS4 integration is setup.""" """Test PS4 integration is setup."""
await ps4.async_setup(hass, {}) await ps4.async_setup(hass, {})
await hass.async_block_till_done() await hass.async_block_till_done()
assert hass.data[PS4_DATA].protocol is not None assert hass.data[PS4_DATA].protocol is not None
async def test_creating_entry_sets_up_media_player(hass): async def test_creating_entry_sets_up_media_player(hass: HomeAssistant) -> None:
"""Test setting up PS4 loads the media player.""" """Test setting up PS4 loads the media player."""
mock_flow = "homeassistant.components.ps4.PlayStation4FlowHandler.async_step_user" mock_flow = "homeassistant.components.ps4.PlayStation4FlowHandler.async_step_user"
with patch( with patch(
@ -133,7 +133,7 @@ async def test_creating_entry_sets_up_media_player(hass):
assert len(mock_setup.mock_calls) == 1 assert len(mock_setup.mock_calls) == 1
async def test_config_flow_entry_migrate(hass): async def test_config_flow_entry_migrate(hass: HomeAssistant) -> None:
"""Test that config flow entry is migrated correctly.""" """Test that config flow entry is migrated correctly."""
# Start with the config entry at Version 1. # Start with the config entry at Version 1.
manager = hass.config_entries manager = hass.config_entries
@ -182,7 +182,7 @@ async def test_config_flow_entry_migrate(hass):
assert mock_entry.data["devices"][0][CONF_REGION] == DEFAULT_REGION assert mock_entry.data["devices"][0][CONF_REGION] == DEFAULT_REGION
async def test_media_player_is_setup(hass): async def test_media_player_is_setup(hass: HomeAssistant) -> None:
"""Test media_player is setup correctly.""" """Test media_player is setup correctly."""
await setup_mock_component(hass) await setup_mock_component(hass)
assert len(hass.data[PS4_DATA].devices) == 1 assert len(hass.data[PS4_DATA].devices) == 1
@ -269,7 +269,7 @@ def test_loading_games_returns_dict(hass: HomeAssistant) -> None:
assert not mock_games assert not mock_games
async def test_send_command(hass): async def test_send_command(hass: HomeAssistant) -> None:
"""Test send_command service.""" """Test send_command service."""
await setup_mock_component(hass) await setup_mock_component(hass)

View file

@ -35,6 +35,7 @@ from homeassistant.const import (
STATE_STANDBY, STATE_STANDBY,
STATE_UNKNOWN, STATE_UNKNOWN,
) )
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from tests.common import MockConfigEntry, mock_device_registry, mock_registry from tests.common import MockConfigEntry, mock_device_registry, mock_registry
@ -162,7 +163,7 @@ async def mock_ddp_response(hass, mock_status_data):
await hass.async_block_till_done() await hass.async_block_till_done()
async def test_media_player_is_setup_correctly_with_entry(hass): async def test_media_player_is_setup_correctly_with_entry(hass: HomeAssistant) -> None:
"""Test entity is setup correctly with entry correctly.""" """Test entity is setup correctly with entry correctly."""
mock_entity_id = await setup_mock_component(hass) mock_entity_id = await setup_mock_component(hass)
mock_state = hass.states.get(mock_entity_id).state mock_state = hass.states.get(mock_entity_id).state
@ -176,7 +177,7 @@ async def test_media_player_is_setup_correctly_with_entry(hass):
assert mock_state == STATE_UNKNOWN assert mock_state == STATE_UNKNOWN
async def test_state_standby_is_set(hass): async def test_state_standby_is_set(hass: HomeAssistant) -> None:
"""Test that state is set to standby.""" """Test that state is set to standby."""
mock_entity_id = await setup_mock_component(hass) mock_entity_id = await setup_mock_component(hass)
@ -185,7 +186,7 @@ async def test_state_standby_is_set(hass):
assert hass.states.get(mock_entity_id).state == STATE_STANDBY assert hass.states.get(mock_entity_id).state == STATE_STANDBY
async def test_state_playing_is_set(hass): async def test_state_playing_is_set(hass: HomeAssistant) -> None:
"""Test that state is set to playing.""" """Test that state is set to playing."""
mock_entity_id = await setup_mock_component(hass) mock_entity_id = await setup_mock_component(hass)
mock_func = "{}{}".format( mock_func = "{}{}".format(
@ -199,7 +200,7 @@ async def test_state_playing_is_set(hass):
assert hass.states.get(mock_entity_id).state == STATE_PLAYING assert hass.states.get(mock_entity_id).state == STATE_PLAYING
async def test_state_idle_is_set(hass): async def test_state_idle_is_set(hass: HomeAssistant) -> None:
"""Test that state is set to idle.""" """Test that state is set to idle."""
mock_entity_id = await setup_mock_component(hass) mock_entity_id = await setup_mock_component(hass)
@ -208,14 +209,14 @@ async def test_state_idle_is_set(hass):
assert hass.states.get(mock_entity_id).state == STATE_IDLE assert hass.states.get(mock_entity_id).state == STATE_IDLE
async def test_state_none_is_set(hass): async def test_state_none_is_set(hass: HomeAssistant) -> None:
"""Test that state is set to None.""" """Test that state is set to None."""
mock_entity_id = await setup_mock_component(hass) mock_entity_id = await setup_mock_component(hass)
assert hass.states.get(mock_entity_id).state == STATE_UNKNOWN assert hass.states.get(mock_entity_id).state == STATE_UNKNOWN
async def test_media_attributes_are_fetched(hass): async def test_media_attributes_are_fetched(hass: HomeAssistant) -> None:
"""Test that media attributes are fetched.""" """Test that media attributes are fetched."""
mock_entity_id = await setup_mock_component(hass) mock_entity_id = await setup_mock_component(hass)
mock_func = "{}{}".format( mock_func = "{}{}".format(
@ -313,7 +314,7 @@ async def test_device_info_is_set_from_status_correctly(hass, patch_get_status):
assert mock_entry.identifiers == {(DOMAIN, MOCK_HOST_ID)} assert mock_entry.identifiers == {(DOMAIN, MOCK_HOST_ID)}
async def test_device_info_is_assummed(hass): async def test_device_info_is_assummed(hass: HomeAssistant) -> None:
"""Test that device info is assumed if device is unavailable.""" """Test that device info is assumed if device is unavailable."""
# Create a device registry entry with device info. # Create a device registry entry with device info.
mock_d_registry = mock_device_registry(hass) mock_d_registry = mock_device_registry(hass)
@ -349,7 +350,7 @@ async def test_device_info_is_assummed(hass):
assert mock_entities[0] == mock_entity_id assert mock_entities[0] == mock_entity_id
async def test_device_info_assummed_works(hass): async def test_device_info_assummed_works(hass: HomeAssistant) -> None:
"""Reverse test that device info assumption works.""" """Reverse test that device info assumption works."""
mock_d_registry = mock_device_registry(hass) mock_d_registry = mock_device_registry(hass)
mock_entity_id = await setup_mock_component(hass) mock_entity_id = await setup_mock_component(hass)
@ -363,7 +364,7 @@ async def test_device_info_assummed_works(hass):
assert not mock_d_entries assert not mock_d_entries
async def test_turn_on(hass): async def test_turn_on(hass: HomeAssistant) -> None:
"""Test that turn on service calls function.""" """Test that turn on service calls function."""
mock_entity_id = await setup_mock_component(hass) mock_entity_id = await setup_mock_component(hass)
mock_func = "{}{}".format( mock_func = "{}{}".format(
@ -379,7 +380,7 @@ async def test_turn_on(hass):
assert len(mock_call.mock_calls) == 1 assert len(mock_call.mock_calls) == 1
async def test_turn_off(hass): async def test_turn_off(hass: HomeAssistant) -> None:
"""Test that turn off service calls function.""" """Test that turn off service calls function."""
mock_entity_id = await setup_mock_component(hass) mock_entity_id = await setup_mock_component(hass)
mock_func = "{}{}".format( mock_func = "{}{}".format(
@ -395,7 +396,7 @@ async def test_turn_off(hass):
assert len(mock_call.mock_calls) == 1 assert len(mock_call.mock_calls) == 1
async def test_toggle(hass): async def test_toggle(hass: HomeAssistant) -> None:
"""Test that toggle service calls function.""" """Test that toggle service calls function."""
mock_entity_id = await setup_mock_component(hass) mock_entity_id = await setup_mock_component(hass)
mock_func = "{}{}".format( mock_func = "{}{}".format(
@ -411,7 +412,7 @@ async def test_toggle(hass):
assert len(mock_call.mock_calls) == 1 assert len(mock_call.mock_calls) == 1
async def test_media_pause(hass): async def test_media_pause(hass: HomeAssistant) -> None:
"""Test that media pause service calls function.""" """Test that media pause service calls function."""
mock_entity_id = await setup_mock_component(hass) mock_entity_id = await setup_mock_component(hass)
mock_func = "{}{}".format( mock_func = "{}{}".format(
@ -427,7 +428,7 @@ async def test_media_pause(hass):
assert len(mock_call.mock_calls) == 1 assert len(mock_call.mock_calls) == 1
async def test_media_stop(hass): async def test_media_stop(hass: HomeAssistant) -> None:
"""Test that media stop service calls function.""" """Test that media stop service calls function."""
mock_entity_id = await setup_mock_component(hass) mock_entity_id = await setup_mock_component(hass)
mock_func = "{}{}".format( mock_func = "{}{}".format(
@ -506,7 +507,7 @@ async def test_select_source_id(hass, patch_load_json):
assert len(mock_call.mock_calls) == 1 assert len(mock_call.mock_calls) == 1
async def test_ps4_send_command(hass): async def test_ps4_send_command(hass: HomeAssistant) -> None:
"""Test that ps4 send command service calls function.""" """Test that ps4 send command service calls function."""
mock_entity_id = await setup_mock_component(hass) mock_entity_id = await setup_mock_component(hass)
@ -521,7 +522,7 @@ async def test_ps4_send_command(hass):
assert len(mock_call.mock_calls) == 1 assert len(mock_call.mock_calls) == 1
async def test_entry_is_unloaded(hass): async def test_entry_is_unloaded(hass: HomeAssistant) -> None:
"""Test that entry is unloaded.""" """Test that entry is unloaded."""
mock_entry = MockConfigEntry( mock_entry = MockConfigEntry(
domain=ps4.DOMAIN, data=MOCK_DATA, version=VERSION, entry_id=MOCK_ENTRY_ID domain=ps4.DOMAIN, data=MOCK_DATA, version=VERSION, entry_id=MOCK_ENTRY_ID

View file

@ -4,13 +4,17 @@ from http import HTTPStatus
import io import io
from homeassistant.config import async_process_ha_core_config from homeassistant.config import async_process_ha_core_config
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from homeassistant.util import dt as dt_util from homeassistant.util import dt as dt_util
from tests.common import async_fire_time_changed from tests.common import async_fire_time_changed
from tests.typing import ClientSessionGenerator
async def test_bad_posting(hass, hass_client_no_auth): async def test_bad_posting(
hass: HomeAssistant, hass_client_no_auth: ClientSessionGenerator
) -> None:
"""Test that posting to wrong api endpoint fails.""" """Test that posting to wrong api endpoint fails."""
await async_process_ha_core_config( await async_process_ha_core_config(
hass, hass,
@ -41,7 +45,9 @@ async def test_bad_posting(hass, hass_client_no_auth):
assert camera_state.state == "idle" # no file supplied we are still idle assert camera_state.state == "idle" # no file supplied we are still idle
async def test_posting_url(hass, hass_client_no_auth): async def test_posting_url(
hass: HomeAssistant, hass_client_no_auth: ClientSessionGenerator
) -> None:
"""Test that posting to api endpoint works.""" """Test that posting to api endpoint works."""
await async_process_ha_core_config( await async_process_ha_core_config(
hass, hass,

View file

@ -2,14 +2,17 @@
import logging import logging
from unittest.mock import mock_open, patch from unittest.mock import mock_open, patch
import pytest
from homeassistant.components.python_script import DOMAIN, FOLDER, execute from homeassistant.components.python_script import DOMAIN, FOLDER, execute
from homeassistant.core import HomeAssistant
from homeassistant.helpers.service import async_get_all_descriptions from homeassistant.helpers.service import async_get_all_descriptions
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from tests.common import patch_yaml_files from tests.common import patch_yaml_files
async def test_setup(hass): async def test_setup(hass: HomeAssistant) -> None:
"""Test we can discover scripts.""" """Test we can discover scripts."""
scripts = [ scripts = [
"/some/config/dir/python_scripts/hello.py", "/some/config/dir/python_scripts/hello.py",
@ -42,7 +45,9 @@ async def test_setup(hass):
assert data == {"some": "data"} assert data == {"some": "data"}
async def test_setup_fails_on_no_dir(hass, caplog): async def test_setup_fails_on_no_dir(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test we fail setup when no dir found.""" """Test we fail setup when no dir found."""
with patch( with patch(
"homeassistant.components.python_script.os.path.isdir", return_value=False "homeassistant.components.python_script.os.path.isdir", return_value=False
@ -53,7 +58,9 @@ async def test_setup_fails_on_no_dir(hass, caplog):
assert "Folder python_scripts not found in configuration folder" in caplog.text assert "Folder python_scripts not found in configuration folder" in caplog.text
async def test_execute_with_data(hass, caplog): async def test_execute_with_data(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test executing a script.""" """Test executing a script."""
caplog.set_level(logging.WARNING) caplog.set_level(logging.WARNING)
source = """ source = """
@ -69,7 +76,9 @@ hass.states.set('test.entity', data.get('name', 'not set'))
assert caplog.text == "" assert caplog.text == ""
async def test_execute_warns_print(hass, caplog): async def test_execute_warns_print(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test print triggers warning.""" """Test print triggers warning."""
caplog.set_level(logging.WARNING) caplog.set_level(logging.WARNING)
source = """ source = """
@ -82,7 +91,9 @@ print("This triggers warning.")
assert "Don't use print() inside scripts." in caplog.text assert "Don't use print() inside scripts." in caplog.text
async def test_execute_logging(hass, caplog): async def test_execute_logging(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test logging works.""" """Test logging works."""
caplog.set_level(logging.INFO) caplog.set_level(logging.INFO)
source = """ source = """
@ -95,7 +106,9 @@ logger.info('Logging from inside script')
assert "Logging from inside script" in caplog.text assert "Logging from inside script" in caplog.text
async def test_execute_compile_error(hass, caplog): async def test_execute_compile_error(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test compile error logs error.""" """Test compile error logs error."""
caplog.set_level(logging.ERROR) caplog.set_level(logging.ERROR)
source = """ source = """
@ -108,7 +121,9 @@ this is not valid Python
assert "Error loading script test.py" in caplog.text assert "Error loading script test.py" in caplog.text
async def test_execute_runtime_error(hass, caplog): async def test_execute_runtime_error(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test compile error logs error.""" """Test compile error logs error."""
caplog.set_level(logging.ERROR) caplog.set_level(logging.ERROR)
source = """ source = """
@ -121,7 +136,9 @@ raise Exception('boom')
assert "Error executing script: boom" in caplog.text assert "Error executing script: boom" in caplog.text
async def test_accessing_async_methods(hass, caplog): async def test_accessing_async_methods(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test compile error logs error.""" """Test compile error logs error."""
caplog.set_level(logging.ERROR) caplog.set_level(logging.ERROR)
source = """ source = """
@ -134,7 +151,9 @@ hass.async_stop()
assert "Not allowed to access async methods" in caplog.text assert "Not allowed to access async methods" in caplog.text
async def test_using_complex_structures(hass, caplog): async def test_using_complex_structures(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test that dicts and lists work.""" """Test that dicts and lists work."""
caplog.set_level(logging.INFO) caplog.set_level(logging.INFO)
source = """ source = """
@ -149,7 +168,9 @@ logger.info('Logging from inside script: %s %s' % (mydict["a"], mylist[2]))
assert "Logging from inside script: 1 3" in caplog.text assert "Logging from inside script: 1 3" in caplog.text
async def test_accessing_forbidden_methods(hass, caplog): async def test_accessing_forbidden_methods(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test compile error logs error.""" """Test compile error logs error."""
caplog.set_level(logging.ERROR) caplog.set_level(logging.ERROR)
@ -165,7 +186,7 @@ async def test_accessing_forbidden_methods(hass, caplog):
assert f"Not allowed to access {name}" in caplog.text assert f"Not allowed to access {name}" in caplog.text
async def test_iterating(hass): async def test_iterating(hass: HomeAssistant) -> None:
"""Test compile error logs error.""" """Test compile error logs error."""
source = """ source = """
for i in [1, 2]: for i in [1, 2]:
@ -179,7 +200,7 @@ for i in [1, 2]:
assert hass.states.is_state("hello.2", "world") assert hass.states.is_state("hello.2", "world")
async def test_using_enumerate(hass): async def test_using_enumerate(hass: HomeAssistant) -> None:
"""Test that enumerate is accepted and executed.""" """Test that enumerate is accepted and executed."""
source = """ source = """
for index, value in enumerate(["earth", "mars"]): for index, value in enumerate(["earth", "mars"]):
@ -193,7 +214,9 @@ for index, value in enumerate(["earth", "mars"]):
assert hass.states.is_state("hello.1", "mars") assert hass.states.is_state("hello.1", "mars")
async def test_unpacking_sequence(hass, caplog): async def test_unpacking_sequence(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test compile error logs error.""" """Test compile error logs error."""
caplog.set_level(logging.ERROR) caplog.set_level(logging.ERROR)
source = """ source = """
@ -215,7 +238,9 @@ hass.states.set('hello.ab_list', '{}'.format(ab_list))
assert caplog.text == "" assert caplog.text == ""
async def test_execute_sorted(hass, caplog): async def test_execute_sorted(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test sorted() function.""" """Test sorted() function."""
caplog.set_level(logging.ERROR) caplog.set_level(logging.ERROR)
source = """ source = """
@ -235,7 +260,9 @@ hass.states.set('hello.c', a[2])
assert caplog.text == "" assert caplog.text == ""
async def test_exposed_modules(hass, caplog): async def test_exposed_modules(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test datetime and time modules exposed.""" """Test datetime and time modules exposed."""
caplog.set_level(logging.ERROR) caplog.set_level(logging.ERROR)
source = """ source = """
@ -257,7 +284,9 @@ hass.states.set('module.datetime',
assert caplog.text == "" assert caplog.text == ""
async def test_execute_functions(hass, caplog): async def test_execute_functions(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test functions defined in script can call one another.""" """Test functions defined in script can call one another."""
caplog.set_level(logging.ERROR) caplog.set_level(logging.ERROR)
source = """ source = """
@ -279,7 +308,7 @@ b()
assert caplog.text == "" assert caplog.text == ""
async def test_reload(hass): async def test_reload(hass: HomeAssistant) -> None:
"""Test we can re-discover scripts.""" """Test we can re-discover scripts."""
scripts = [ scripts = [
"/some/config/dir/python_scripts/hello.py", "/some/config/dir/python_scripts/hello.py",
@ -310,7 +339,7 @@ async def test_reload(hass):
assert hass.services.has_service("python_script", "reload") assert hass.services.has_service("python_script", "reload")
async def test_service_descriptions(hass): async def test_service_descriptions(hass: HomeAssistant) -> None:
"""Test that service descriptions are loaded and reloaded correctly.""" """Test that service descriptions are loaded and reloaded correctly."""
# Test 1: no user-provided services.yaml file # Test 1: no user-provided services.yaml file
scripts1 = [ scripts1 = [
@ -409,7 +438,9 @@ async def test_service_descriptions(hass):
) )
async def test_sleep_warns_one(hass, caplog): async def test_sleep_warns_one(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test time.sleep warns once.""" """Test time.sleep warns once."""
caplog.set_level(logging.WARNING) caplog.set_level(logging.WARNING)
source = """ source = """