mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Add test helper mock_config_flow (#90103)
This commit is contained in:
parent
0ca6723378
commit
0ecd043cb2
@ -34,6 +34,7 @@ from homeassistant.components.device_automation import ( # noqa: F401
|
|||||||
_async_get_device_automation_capabilities as async_get_device_automation_capabilities,
|
_async_get_device_automation_capabilities as async_get_device_automation_capabilities,
|
||||||
)
|
)
|
||||||
from homeassistant.config import async_process_component_config
|
from homeassistant.config import async_process_component_config
|
||||||
|
from homeassistant.config_entries import ConfigFlow
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
DEVICE_DEFAULT_NAME,
|
DEVICE_DEFAULT_NAME,
|
||||||
EVENT_HOMEASSISTANT_CLOSE,
|
EVENT_HOMEASSISTANT_CLOSE,
|
||||||
@ -1242,6 +1243,16 @@ async def get_system_health_info(hass: HomeAssistant, domain: str) -> dict[str,
|
|||||||
return await hass.data["system_health"][domain].info_callback(hass)
|
return await hass.data["system_health"][domain].info_callback(hass)
|
||||||
|
|
||||||
|
|
||||||
|
@contextmanager
|
||||||
|
def mock_config_flow(domain: str, config_flow: type[ConfigFlow]) -> None:
|
||||||
|
"""Mock a config flow handler."""
|
||||||
|
assert domain not in config_entries.HANDLERS
|
||||||
|
config_entries.HANDLERS[domain] = config_flow
|
||||||
|
_LOGGER.info("Adding mock config flow: %s", domain)
|
||||||
|
yield
|
||||||
|
config_entries.HANDLERS.pop(domain)
|
||||||
|
|
||||||
|
|
||||||
def mock_integration(
|
def mock_integration(
|
||||||
hass: HomeAssistant, module: MockModule, built_in: bool = True
|
hass: HomeAssistant, module: MockModule, built_in: bool = True
|
||||||
) -> loader.Integration:
|
) -> loader.Integration:
|
||||||
|
@ -28,7 +28,7 @@ from homeassistant.core import HomeAssistant
|
|||||||
from homeassistant.helpers import config_entry_oauth2_flow
|
from homeassistant.helpers import config_entry_oauth2_flow
|
||||||
from homeassistant.setup import async_setup_component
|
from homeassistant.setup import async_setup_component
|
||||||
|
|
||||||
from tests.common import MockConfigEntry, mock_platform
|
from tests.common import MockConfigEntry, mock_config_flow, mock_platform
|
||||||
from tests.test_util.aiohttp import AiohttpClientMocker
|
from tests.test_util.aiohttp import AiohttpClientMocker
|
||||||
from tests.typing import ClientSessionGenerator, WebSocketGenerator
|
from tests.typing import ClientSessionGenerator, WebSocketGenerator
|
||||||
|
|
||||||
@ -98,7 +98,7 @@ async def mock_application_credentials_integration(
|
|||||||
yield
|
yield
|
||||||
|
|
||||||
|
|
||||||
class FakeConfigFlow(config_entry_oauth2_flow.AbstractOAuth2FlowHandler, domain=DOMAIN):
|
class FakeConfigFlow(config_entry_oauth2_flow.AbstractOAuth2FlowHandler):
|
||||||
"""Config flow used during tests."""
|
"""Config flow used during tests."""
|
||||||
|
|
||||||
DOMAIN = TEST_DOMAIN
|
DOMAIN = TEST_DOMAIN
|
||||||
@ -115,8 +115,8 @@ def config_flow_handler(
|
|||||||
) -> Generator[FakeConfigFlow, None, None]:
|
) -> Generator[FakeConfigFlow, None, None]:
|
||||||
"""Fixture for a test config flow."""
|
"""Fixture for a test config flow."""
|
||||||
mock_platform(hass, f"{TEST_DOMAIN}.config_flow")
|
mock_platform(hass, f"{TEST_DOMAIN}.config_flow")
|
||||||
with patch.dict(config_entries.HANDLERS, {TEST_DOMAIN: FakeConfigFlow}):
|
with mock_config_flow(TEST_DOMAIN, FakeConfigFlow):
|
||||||
yield FakeConfigFlow
|
yield
|
||||||
|
|
||||||
|
|
||||||
class OAuthFixture:
|
class OAuthFixture:
|
||||||
|
@ -12,7 +12,12 @@ from homeassistant.const import EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_S
|
|||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.setup import async_setup_component
|
from homeassistant.setup import async_setup_component
|
||||||
|
|
||||||
from tests.common import MockModule, mock_entity_platform, mock_integration
|
from tests.common import (
|
||||||
|
MockModule,
|
||||||
|
mock_config_flow,
|
||||||
|
mock_entity_platform,
|
||||||
|
mock_integration,
|
||||||
|
)
|
||||||
from tests.test_util.aiohttp import AiohttpClientMocker
|
from tests.test_util.aiohttp import AiohttpClientMocker
|
||||||
|
|
||||||
|
|
||||||
@ -22,15 +27,14 @@ async def mock_mqtt_fixture(hass):
|
|||||||
mock_integration(hass, MockModule(MQTT_DOMAIN))
|
mock_integration(hass, MockModule(MQTT_DOMAIN))
|
||||||
mock_entity_platform(hass, f"config_flow.{MQTT_DOMAIN}", None)
|
mock_entity_platform(hass, f"config_flow.{MQTT_DOMAIN}", None)
|
||||||
|
|
||||||
with patch.dict(config_entries.HANDLERS):
|
class MqttFlow(config_entries.ConfigFlow):
|
||||||
|
"""Test flow."""
|
||||||
|
|
||||||
class MqttFlow(config_entries.ConfigFlow, domain=MQTT_DOMAIN):
|
VERSION = 1
|
||||||
"""Test flow."""
|
|
||||||
|
|
||||||
VERSION = 1
|
async_step_hassio = AsyncMock(return_value={"type": "abort"})
|
||||||
|
|
||||||
async_step_hassio = AsyncMock(return_value={"type": "abort"})
|
|
||||||
|
|
||||||
|
with mock_config_flow(MQTT_DOMAIN, MqttFlow):
|
||||||
yield MqttFlow
|
yield MqttFlow
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,7 +7,6 @@ from unittest.mock import Mock, patch
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from homeassistant import config_entries
|
|
||||||
from homeassistant.components.hassio.handler import HassioAPIError
|
from homeassistant.components.hassio.handler import HassioAPIError
|
||||||
from homeassistant.components.homeassistant_hardware import silabs_multiprotocol_addon
|
from homeassistant.components.homeassistant_hardware import silabs_multiprotocol_addon
|
||||||
from homeassistant.components.zha.core.const import DOMAIN as ZHA_DOMAIN
|
from homeassistant.components.zha.core.const import DOMAIN as ZHA_DOMAIN
|
||||||
@ -15,12 +14,18 @@ from homeassistant.config_entries import ConfigEntry, ConfigFlow
|
|||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.data_entry_flow import FlowResult, FlowResultType
|
from homeassistant.data_entry_flow import FlowResult, FlowResultType
|
||||||
|
|
||||||
from tests.common import MockConfigEntry, MockModule, mock_integration, mock_platform
|
from tests.common import (
|
||||||
|
MockConfigEntry,
|
||||||
|
MockModule,
|
||||||
|
mock_config_flow,
|
||||||
|
mock_integration,
|
||||||
|
mock_platform,
|
||||||
|
)
|
||||||
|
|
||||||
TEST_DOMAIN = "test"
|
TEST_DOMAIN = "test"
|
||||||
|
|
||||||
|
|
||||||
class TestConfigFlow(ConfigFlow, domain=TEST_DOMAIN):
|
class TestConfigFlow(ConfigFlow):
|
||||||
"""Handle a config flow for the silabs multiprotocol add-on."""
|
"""Handle a config flow for the silabs multiprotocol add-on."""
|
||||||
|
|
||||||
VERSION = 1
|
VERSION = 1
|
||||||
@ -87,8 +92,8 @@ def config_flow_handler(
|
|||||||
) -> Generator[TestConfigFlow, None, None]:
|
) -> Generator[TestConfigFlow, None, None]:
|
||||||
"""Fixture for a test config flow."""
|
"""Fixture for a test config flow."""
|
||||||
mock_platform(hass, f"{TEST_DOMAIN}.config_flow")
|
mock_platform(hass, f"{TEST_DOMAIN}.config_flow")
|
||||||
with patch.dict(config_entries.HANDLERS, {TEST_DOMAIN: TestConfigFlow}):
|
with mock_config_flow(TEST_DOMAIN, TestConfigFlow):
|
||||||
yield TestConfigFlow
|
yield
|
||||||
|
|
||||||
|
|
||||||
async def test_option_flow_install_multi_pan_addon(
|
async def test_option_flow_install_multi_pan_addon(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user