diff --git a/homeassistant/components/vicare/__init__.py b/homeassistant/components/vicare/__init__.py index 4af36835ed2..221f3a4374a 100644 --- a/homeassistant/components/vicare/__init__.py +++ b/homeassistant/components/vicare/__init__.py @@ -7,19 +7,14 @@ import logging from PyViCare.PyViCare import PyViCare from PyViCare.PyViCareDevice import Device -import voluptuous as vol -from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry +from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_CLIENT_ID, CONF_PASSWORD, CONF_USERNAME from homeassistant.core import HomeAssistant -import homeassistant.helpers.config_validation as cv from homeassistant.helpers.storage import STORAGE_DIR -from homeassistant.helpers.typing import ConfigType from .const import ( - CONF_CIRCUIT, CONF_HEATING_TYPE, - DEFAULT_HEATING_TYPE, DEFAULT_SCAN_INTERVAL, DOMAIN, HEATING_TYPE_TO_CREATOR_METHOD, @@ -39,50 +34,6 @@ class ViCareRequiredKeysMixin: value_getter: Callable[[Device], bool] -CONFIG_SCHEMA = vol.Schema( - vol.All( - cv.deprecated(DOMAIN), - { - DOMAIN: vol.All( - cv.deprecated(CONF_CIRCUIT), - cv.deprecated(DOMAIN), - vol.Schema( - { - vol.Required(CONF_USERNAME): cv.string, - vol.Required(CONF_PASSWORD): cv.string, - vol.Required(CONF_CLIENT_ID): cv.string, - vol.Optional( - CONF_CIRCUIT - ): int, # Ignored: All circuits are now supported. Will be removed when switching to Setup via UI. - vol.Optional( - CONF_HEATING_TYPE, default=DEFAULT_HEATING_TYPE.value - ): vol.In([e.value for e in HeatingType]), - } - ), - ) - }, - ), - extra=vol.ALLOW_EXTRA, -) - - -async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: - """Set up the ViCare component from yaml.""" - if DOMAIN not in config: - # Setup via UI. No need to continue yaml-based setup - return True - - hass.async_create_task( - hass.config_entries.flow.async_init( - DOMAIN, - context={"source": SOURCE_IMPORT}, - data=config[DOMAIN], - ) - ) - - return True - - async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up from config entry.""" _LOGGER.debug("Setting up ViCare component") diff --git a/homeassistant/components/vicare/config_flow.py b/homeassistant/components/vicare/config_flow.py index 0f0e2a85b3c..a0feb8f38ea 100644 --- a/homeassistant/components/vicare/config_flow.py +++ b/homeassistant/components/vicare/config_flow.py @@ -16,7 +16,6 @@ from homeassistant.helpers.device_registry import format_mac from . import vicare_login from .const import ( - CONF_CIRCUIT, CONF_HEATING_TYPE, DEFAULT_HEATING_TYPE, DOMAIN, @@ -32,7 +31,9 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): VERSION = 1 - async def async_step_user(self, user_input: dict[str, Any] | None = None): + async def async_step_user( + self, user_input: dict[str, Any] | None = None + ) -> FlowResult: """Invoke when a user initiates a flow via the user interface.""" if self._async_current_entries(): return self.async_abort(reason="single_instance_allowed") @@ -75,17 +76,3 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): return self.async_abort(reason="single_instance_allowed") return await self.async_step_user() - - async def async_step_import(self, import_info): - """Handle a flow initiated by a YAML config import.""" - if self._async_current_entries(): - return self.async_abort(reason="single_instance_allowed") - - # Remove now unsupported config parameters - import_info.pop(CONF_CIRCUIT, None) - - # CONF_HEATING_TYPE is now required but was optional in yaml config. Add if missing. - if import_info.get(CONF_HEATING_TYPE) is None: - import_info[CONF_HEATING_TYPE] = DEFAULT_HEATING_TYPE.value - - return await self.async_step_user(import_info) diff --git a/tests/components/vicare/__init__.py b/tests/components/vicare/__init__.py index ae9df782886..66cbfdc1d26 100644 --- a/tests/components/vicare/__init__.py +++ b/tests/components/vicare/__init__.py @@ -13,10 +13,4 @@ ENTRY_CONFIG: Final[dict[str, str]] = { CONF_HEATING_TYPE: "auto", } -ENTRY_CONFIG_NO_HEATING_TYPE: Final[dict[str, str]] = { - CONF_USERNAME: "foo@bar.com", - CONF_PASSWORD: "1234", - CONF_CLIENT_ID: "5678", -} - MOCK_MAC = "B874241B7B9" diff --git a/tests/components/vicare/test_config_flow.py b/tests/components/vicare/test_config_flow.py index 0bedb0d73b8..3096f8a492c 100644 --- a/tests/components/vicare/test_config_flow.py +++ b/tests/components/vicare/test_config_flow.py @@ -5,10 +5,10 @@ from PyViCare.PyViCareUtils import PyViCareInvalidCredentialsError from homeassistant import config_entries, data_entry_flow from homeassistant.components import dhcp -from homeassistant.components.vicare.const import CONF_CIRCUIT, DOMAIN, VICARE_NAME +from homeassistant.components.vicare.const import DOMAIN from homeassistant.const import CONF_CLIENT_ID, CONF_PASSWORD, CONF_USERNAME -from . import ENTRY_CONFIG, ENTRY_CONFIG_NO_HEATING_TYPE, MOCK_MAC +from . import ENTRY_CONFIG, MOCK_MAC from tests.common import MockConfigEntry @@ -25,8 +25,6 @@ async def test_form(hass): "homeassistant.components.vicare.config_flow.vicare_login", return_value=None, ), patch( - "homeassistant.components.vicare.async_setup", return_value=True - ) as mock_setup, patch( "homeassistant.components.vicare.async_setup_entry", return_value=True, ) as mock_setup_entry: @@ -43,89 +41,9 @@ async def test_form(hass): assert result2["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY assert result2["title"] == "ViCare" assert result2["data"] == ENTRY_CONFIG - assert len(mock_setup.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1 -async def test_import(hass): - """Test that the import works.""" - - with patch( - "homeassistant.components.vicare.config_flow.vicare_login", - return_value=True, - ), patch( - "homeassistant.components.vicare.async_setup", return_value=True - ) as mock_setup, patch( - "homeassistant.components.vicare.async_setup_entry", - return_value=True, - ) as mock_setup_entry: - result = await hass.config_entries.flow.async_init( - DOMAIN, - context={"source": config_entries.SOURCE_IMPORT}, - data=ENTRY_CONFIG, - ) - assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY - assert result["title"] == VICARE_NAME - assert result["data"] == ENTRY_CONFIG - - await hass.async_block_till_done() - assert len(mock_setup.mock_calls) == 1 - assert len(mock_setup_entry.mock_calls) == 1 - - -async def test_import_removes_circuit(hass): - """Test that the import works.""" - - with patch( - "homeassistant.components.vicare.config_flow.vicare_login", - return_value=True, - ), patch( - "homeassistant.components.vicare.async_setup", return_value=True - ) as mock_setup, patch( - "homeassistant.components.vicare.async_setup_entry", - return_value=True, - ) as mock_setup_entry: - ENTRY_CONFIG[CONF_CIRCUIT] = 1 - result = await hass.config_entries.flow.async_init( - DOMAIN, - context={"source": config_entries.SOURCE_IMPORT}, - data=ENTRY_CONFIG, - ) - assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY - assert result["title"] == VICARE_NAME - assert result["data"] == ENTRY_CONFIG - - await hass.async_block_till_done() - assert len(mock_setup.mock_calls) == 1 - assert len(mock_setup_entry.mock_calls) == 1 - - -async def test_import_adds_heating_type(hass): - """Test that the import works.""" - - with patch( - "homeassistant.components.vicare.config_flow.vicare_login", - return_value=True, - ), patch( - "homeassistant.components.vicare.async_setup", return_value=True - ) as mock_setup, patch( - "homeassistant.components.vicare.async_setup_entry", - return_value=True, - ) as mock_setup_entry: - result = await hass.config_entries.flow.async_init( - DOMAIN, - context={"source": config_entries.SOURCE_IMPORT}, - data=ENTRY_CONFIG_NO_HEATING_TYPE, - ) - assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY - assert result["title"] == VICARE_NAME - assert result["data"] == ENTRY_CONFIG - - await hass.async_block_till_done() - assert len(mock_setup.mock_calls) == 1 - assert len(mock_setup_entry.mock_calls) == 1 - - async def test_invalid_login(hass) -> None: """Test a flow with an invalid Vicare login.""" result = await hass.config_entries.flow.async_init( @@ -171,8 +89,6 @@ async def test_form_dhcp(hass): "homeassistant.components.vicare.config_flow.vicare_login", return_value=None, ), patch( - "homeassistant.components.vicare.async_setup", return_value=True - ) as mock_setup, patch( "homeassistant.components.vicare.async_setup_entry", return_value=True, ) as mock_setup_entry: @@ -189,27 +105,9 @@ async def test_form_dhcp(hass): assert result2["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY assert result2["title"] == "ViCare" assert result2["data"] == ENTRY_CONFIG - assert len(mock_setup.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1 -async def test_import_single_instance_allowed(hass): - """Test that configuring more than one instance is rejected.""" - mock_entry = MockConfigEntry( - domain=DOMAIN, - data=ENTRY_CONFIG, - ) - mock_entry.add_to_hass(hass) - - result = await hass.config_entries.flow.async_init( - DOMAIN, - context={"source": config_entries.SOURCE_IMPORT}, - data=ENTRY_CONFIG, - ) - assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT - assert result["reason"] == "single_instance_allowed" - - async def test_dhcp_single_instance_allowed(hass): """Test that configuring more than one instance is rejected.""" mock_entry = MockConfigEntry(