1
mirror of https://github.com/home-assistant/core synced 2024-10-04 07:58:43 +02:00

Automatically onboard DiscoveryFlows (#73841)

This commit is contained in:
Franck Nijhof 2022-06-22 22:37:49 +02:00 committed by GitHub
parent ec119ae718
commit a8a033681f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 2 deletions

View File

@ -6,7 +6,7 @@ import logging
from typing import TYPE_CHECKING, Any, Generic, TypeVar, Union, cast
from homeassistant import config_entries
from homeassistant.components import dhcp, mqtt, ssdp, zeroconf
from homeassistant.components import dhcp, mqtt, onboarding, ssdp, zeroconf
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import FlowResult
@ -52,7 +52,7 @@ class DiscoveryFlowHandler(config_entries.ConfigFlow, Generic[_R]):
self, user_input: dict[str, Any] | None = None
) -> FlowResult:
"""Confirm setup."""
if user_input is None:
if user_input is None and onboarding.async_is_onboarded(self.hass):
self._set_confirm_only()
return self.async_show_form(step_id="confirm")

View File

@ -139,6 +139,30 @@ async def test_discovery_confirmation(hass, discovery_flow_conf, source):
assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY
@pytest.mark.parametrize(
"source",
[
config_entries.SOURCE_DISCOVERY,
config_entries.SOURCE_MQTT,
config_entries.SOURCE_SSDP,
config_entries.SOURCE_ZEROCONF,
config_entries.SOURCE_DHCP,
],
)
async def test_discovery_during_onboarding(hass, discovery_flow_conf, source):
"""Test we create config entry via discovery during onboarding."""
flow = config_entries.HANDLERS["test"]()
flow.hass = hass
flow.context = {"source": source}
with patch(
"homeassistant.components.onboarding.async_is_onboarded", return_value=False
):
result = await getattr(flow, f"async_step_{source}")({})
assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY
async def test_multiple_discoveries(hass, discovery_flow_conf):
"""Test we only create one instance for multiple discoveries."""
mock_entity_platform(hass, "config_flow.test", None)