From 91dbe3092fda376ef5aa2052628acf42907d6a7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=2E=20Diego=20Rodr=C3=ADguez=20Royo?= Date: Sat, 8 Feb 2025 16:29:00 +0100 Subject: [PATCH] Only allow single Home Connect config entry (#137088) * Make Home Connect config entry unique * Use unique ID for Home connect config entry * Remove unnecessary code * Revert "Use unique ID for Home connect config entry" This reverts commit 424131746990dfbbba05b578f61fd49f4f7cb8d7. * Added tests --- .../components/home_connect/manifest.json | 3 ++- homeassistant/generated/integrations.json | 3 ++- .../components/home_connect/test_config_flow.py | 16 ++++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/home_connect/manifest.json b/homeassistant/components/home_connect/manifest.json index 41d359446fa..94085af2fc3 100644 --- a/homeassistant/components/home_connect/manifest.json +++ b/homeassistant/components/home_connect/manifest.json @@ -7,5 +7,6 @@ "documentation": "https://www.home-assistant.io/integrations/home_connect", "iot_class": "cloud_push", "loggers": ["aiohomeconnect"], - "requirements": ["aiohomeconnect==0.12.3"] + "requirements": ["aiohomeconnect==0.12.3"], + "single_config_entry": true } diff --git a/homeassistant/generated/integrations.json b/homeassistant/generated/integrations.json index 026eab30f8f..6c688e07f5c 100644 --- a/homeassistant/generated/integrations.json +++ b/homeassistant/generated/integrations.json @@ -2609,7 +2609,8 @@ "name": "Home Connect", "integration_type": "hub", "config_flow": true, - "iot_class": "cloud_push" + "iot_class": "cloud_push", + "single_config_entry": true }, "home_plus_control": { "name": "Legrand Home+ Control", diff --git a/tests/components/home_connect/test_config_flow.py b/tests/components/home_connect/test_config_flow.py index c015a881343..343d648e543 100644 --- a/tests/components/home_connect/test_config_flow.py +++ b/tests/components/home_connect/test_config_flow.py @@ -16,6 +16,7 @@ from homeassistant.core import HomeAssistant from homeassistant.data_entry_flow import FlowResultType from homeassistant.helpers import config_entry_oauth2_flow +from tests.common import MockConfigEntry from tests.test_util.aiohttp import AiohttpClientMocker from tests.typing import ClientSessionGenerator @@ -77,3 +78,18 @@ async def test_full_flow( assert len(hass.config_entries.async_entries(DOMAIN)) == 1 assert len(mock_setup_entry.mock_calls) == 1 + + +async def test_prevent_multiple_config_entries( + hass: HomeAssistant, + config_entry: MockConfigEntry, +) -> None: + """Test we only allow one config entry.""" + config_entry.add_to_hass(hass) + + result = await hass.config_entries.flow.async_init( + "home_connect", context={"source": config_entries.SOURCE_USER} + ) + + assert result["type"] == "abort" + assert result["reason"] == "single_instance_allowed"