This commit is contained in:
epenet 2025-05-19 06:51:33 +00:00
parent 864882750d
commit 0dd090ba20
5 changed files with 63 additions and 31 deletions

View File

@ -151,7 +151,11 @@ async def test_dhcp_flow(
) -> None:
"""Test the DHCP discovery flow."""
result = await dhcp_service_info.start_discovery_flow(hass, DOMAIN)
result = await hass.config_entries.flow.async_init(
DOMAIN,
data=dhcp_service_info,
context={"source": config_entries.SOURCE_DHCP},
)
assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "user"

View File

@ -11,6 +11,7 @@ from aioairzone.exceptions import (
SystemOutOfRange,
)
from homeassistant import config_entries
from homeassistant.components.airzone.config_flow import short_mac
from homeassistant.components.airzone.const import DOMAIN
from homeassistant.config_entries import SOURCE_USER, ConfigEntryState
@ -202,7 +203,11 @@ async def test_dhcp_flow(hass: HomeAssistant) -> None:
"homeassistant.components.airzone.AirzoneLocalApi.get_version",
return_value=HVAC_VERSION_MOCK,
):
result = await DHCP_SERVICE_INFO.start_discovery_flow(hass, DOMAIN)
result = await hass.config_entries.flow.async_init(
DOMAIN,
data=DHCP_SERVICE_INFO,
context={"source": config_entries.SOURCE_DHCP},
)
assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "discovered_connection"
@ -256,7 +261,11 @@ async def test_dhcp_flow_error(hass: HomeAssistant) -> None:
"homeassistant.components.airzone.AirzoneLocalApi.get_version",
side_effect=AirzoneError,
):
result = await DHCP_SERVICE_INFO.start_discovery_flow(hass, DOMAIN)
result = await hass.config_entries.flow.async_init(
DOMAIN,
data=DHCP_SERVICE_INFO,
context={"source": config_entries.SOURCE_DHCP},
)
assert result["type"] is FlowResultType.ABORT
assert result["reason"] == "cannot_connect"
@ -269,7 +278,11 @@ async def test_dhcp_connection_error(hass: HomeAssistant) -> None:
"homeassistant.components.airzone.AirzoneLocalApi.get_version",
return_value=HVAC_VERSION_MOCK,
):
result = await DHCP_SERVICE_INFO.start_discovery_flow(hass, DOMAIN)
result = await hass.config_entries.flow.async_init(
DOMAIN,
data=DHCP_SERVICE_INFO,
context={"source": config_entries.SOURCE_DHCP},
)
assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "discovered_connection"
@ -341,7 +354,11 @@ async def test_dhcp_invalid_system_id(hass: HomeAssistant) -> None:
"homeassistant.components.airzone.AirzoneLocalApi.get_version",
return_value=HVAC_VERSION_MOCK,
):
result = await DHCP_SERVICE_INFO.start_discovery_flow(hass, DOMAIN)
result = await hass.config_entries.flow.async_init(
DOMAIN,
data=DHCP_SERVICE_INFO,
context={"source": config_entries.SOURCE_DHCP},
)
assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "discovered_connection"

View File

@ -25,12 +25,6 @@ from .mock_data import MOCK_CONFIG, NETWORK_INFO, ROBOROCK_RRUID, USER_DATA, USE
from tests.common import MockConfigEntry
from tests.service_info import MockDhcpServiceInfo
DNCP_SERVICE_INFO = MockDhcpServiceInfo(
ip=NETWORK_INFO.ip,
macaddress=NETWORK_INFO.mac,
hostname="roborock-vacuum-a72",
)
@pytest.fixture
def cleanup_map_storage():
@ -352,7 +346,15 @@ async def test_discovery_not_setup(
with (
patch("homeassistant.components.roborock.async_setup_entry", return_value=True),
):
result = await DNCP_SERVICE_INFO.start_discovery_flow(hass, DOMAIN)
result = await hass.config_entries.flow.async_init(
DOMAIN,
context={"source": config_entries.SOURCE_DHCP},
data=MockDhcpServiceInfo(
ip=NETWORK_INFO.ip,
macaddress=NETWORK_INFO.mac,
hostname="roborock-vacuum-a72",
),
)
assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "user"
with patch(
@ -389,7 +391,15 @@ async def test_discovery_already_setup(
"""Handle aborting if the device is already setup."""
await hass.config_entries.async_setup(mock_roborock_entry.entry_id)
await hass.async_block_till_done()
result = await DNCP_SERVICE_INFO.start_discovery_flow(hass, DOMAIN)
result = await hass.config_entries.flow.async_init(
DOMAIN,
context={"source": config_entries.SOURCE_DHCP},
data=MockDhcpServiceInfo(
ip=NETWORK_INFO.ip,
macaddress=NETWORK_INFO.mac,
hostname="roborock-vacuum-a72",
),
)
assert result["type"] is FlowResultType.ABORT
assert result["reason"] == "already_configured"

View File

@ -5,7 +5,7 @@ from unittest.mock import AsyncMock, patch
import aiohttp
from homeassistant.components.wmspro.const import DOMAIN
from homeassistant.config_entries import SOURCE_USER, ConfigEntryState
from homeassistant.config_entries import SOURCE_DHCP, SOURCE_USER, ConfigEntryState
from homeassistant.const import CONF_HOST
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import FlowResultType
@ -52,7 +52,9 @@ async def test_config_flow_from_dhcp(
info = MockDhcpServiceInfo(
ip="1.2.3.4", hostname="webcontrol", macaddress="00:11:22:33:44:55"
)
result = await info.start_discovery_flow(hass, DOMAIN)
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_DHCP}, data=info
)
assert result["type"] is FlowResultType.FORM
assert result["errors"] == {}
@ -109,7 +111,9 @@ async def test_config_flow_from_dhcp_add_mac(
info = MockDhcpServiceInfo(
ip="1.2.3.4", hostname="webcontrol", macaddress="00:11:22:33:44:55"
)
result = await info.start_discovery_flow(hass, DOMAIN)
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_DHCP}, data=info
)
assert result["type"] is FlowResultType.ABORT
assert result["reason"] == "already_configured"
assert hass.config_entries.async_entries(DOMAIN)[0].unique_id == "00:11:22:33:44:55"
@ -124,7 +128,9 @@ async def test_config_flow_from_dhcp_ip_update(
info = MockDhcpServiceInfo(
ip="1.2.3.4", hostname="webcontrol", macaddress="00:11:22:33:44:55"
)
result = await info.start_discovery_flow(hass, DOMAIN)
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_DHCP}, data=info
)
assert result["type"] is FlowResultType.FORM
assert result["errors"] == {}
@ -150,7 +156,9 @@ async def test_config_flow_from_dhcp_ip_update(
info = MockDhcpServiceInfo(
ip="5.6.7.8", hostname="webcontrol", macaddress="00:11:22:33:44:55"
)
result = await info.start_discovery_flow(hass, DOMAIN)
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_DHCP}, data=info
)
assert result["type"] is FlowResultType.ABORT
assert result["reason"] == "already_configured"
assert hass.config_entries.async_entries(DOMAIN)[0].unique_id == "00:11:22:33:44:55"
@ -166,7 +174,9 @@ async def test_config_flow_from_dhcp_no_update(
info = MockDhcpServiceInfo(
ip="1.2.3.4", hostname="webcontrol", macaddress="00:11:22:33:44:55"
)
result = await info.start_discovery_flow(hass, DOMAIN)
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_DHCP}, data=info
)
assert result["type"] is FlowResultType.FORM
assert result["errors"] == {}
@ -192,7 +202,9 @@ async def test_config_flow_from_dhcp_no_update(
info = MockDhcpServiceInfo(
ip="5.6.7.8", hostname="webcontrol", macaddress="00:11:22:33:44:55"
)
result = await info.start_discovery_flow(hass, DOMAIN)
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_DHCP}, data=info
)
assert result["type"] is FlowResultType.ABORT
assert result["reason"] == "already_configured"
assert hass.config_entries.async_entries(DOMAIN)[0].unique_id == "00:11:22:33:44:55"

View File

@ -2,9 +2,6 @@
from __future__ import annotations
from homeassistant import config_entries
from homeassistant.config_entries import ConfigFlowResult
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr
from homeassistant.helpers.service_info.dhcp import DhcpServiceInfo
@ -22,11 +19,3 @@ class MockDhcpServiceInfo(DhcpServiceInfo):
hostname=hostname,
macaddress=dr.format_mac(macaddress).replace(":", ""),
)
async def start_discovery_flow(
self, hass: HomeAssistant, domain: str
) -> ConfigFlowResult:
"""Start a reauthentication flow."""
return await hass.config_entries.flow.async_init(
domain, context={"source": config_entries.SOURCE_DHCP}, data=self
)