diff --git a/homeassistant/components/mpd/config_flow.py b/homeassistant/components/mpd/config_flow.py index 36777a205f9..e4bfc2136d8 100644 --- a/homeassistant/components/mpd/config_flow.py +++ b/homeassistant/components/mpd/config_flow.py @@ -10,7 +10,7 @@ from mpd.asyncio import MPDClient import voluptuous as vol from homeassistant.config_entries import ConfigFlow, ConfigFlowResult -from homeassistant.const import CONF_HOST, CONF_NAME, CONF_PASSWORD, CONF_PORT +from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_PORT from .const import DOMAIN, LOGGER @@ -66,36 +66,3 @@ class MPDConfigFlow(ConfigFlow, domain=DOMAIN): data_schema=SCHEMA, errors=errors, ) - - async def async_step_import(self, import_data: dict[str, Any]) -> ConfigFlowResult: - """Attempt to import the existing configuration.""" - self._async_abort_entries_match({CONF_HOST: import_data[CONF_HOST]}) - client = MPDClient() - client.timeout = 30 - client.idletimeout = 10 - try: - async with timeout(35): - await client.connect(import_data[CONF_HOST], import_data[CONF_PORT]) - if CONF_PASSWORD in import_data: - await client.password(import_data[CONF_PASSWORD]) - with suppress(mpd.ConnectionError): - client.disconnect() - except ( - TimeoutError, - gaierror, - mpd.ConnectionError, - OSError, - ): - return self.async_abort(reason="cannot_connect") - except Exception: # noqa: BLE001 - LOGGER.exception("Unknown exception") - return self.async_abort(reason="unknown") - - return self.async_create_entry( - title=import_data.get(CONF_NAME, "Music Player Daemon"), - data={ - CONF_HOST: import_data[CONF_HOST], - CONF_PORT: import_data[CONF_PORT], - CONF_PASSWORD: import_data.get(CONF_PASSWORD), - }, - ) diff --git a/homeassistant/components/mpd/media_player.py b/homeassistant/components/mpd/media_player.py index 92f0f5cfcc4..a79d933a782 100644 --- a/homeassistant/components/mpd/media_player.py +++ b/homeassistant/components/mpd/media_player.py @@ -26,15 +26,12 @@ from homeassistant.components.media_player import ( RepeatMode, async_process_play_media_url, ) -from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry +from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_HOST, CONF_NAME, CONF_PASSWORD, CONF_PORT -from homeassistant.core import DOMAIN as HOMEASSISTANT_DOMAIN, HomeAssistant -from homeassistant.data_entry_flow import FlowResultType +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback -from homeassistant.helpers.issue_registry import IssueSeverity, async_create_issue -from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.util import Throttle import homeassistant.util.dt as dt_util @@ -71,54 +68,6 @@ PLATFORM_SCHEMA = MEDIA_PLAYER_PLATFORM_SCHEMA.extend( ) -async def async_setup_platform( - hass: HomeAssistant, - config: ConfigType, - async_add_entities: AddEntitiesCallback, - discovery_info: DiscoveryInfoType | None = None, -) -> None: - """Set up the MPD platform.""" - - result = await hass.config_entries.flow.async_init( - DOMAIN, - context={"source": SOURCE_IMPORT}, - data=config, - ) - if ( - result["type"] is FlowResultType.CREATE_ENTRY - or result["reason"] == "already_configured" - ): - async_create_issue( - hass, - HOMEASSISTANT_DOMAIN, - f"deprecated_yaml_{DOMAIN}", - breaks_in_ha_version="2025.1.0", - is_fixable=False, - issue_domain=DOMAIN, - severity=IssueSeverity.WARNING, - translation_key="deprecated_yaml", - translation_placeholders={ - "domain": DOMAIN, - "integration_title": "Music Player Daemon", - }, - ) - return - async_create_issue( - hass, - DOMAIN, - f"deprecated_yaml_import_issue_{result['reason']}", - breaks_in_ha_version="2025.1.0", - is_fixable=False, - issue_domain=DOMAIN, - severity=IssueSeverity.WARNING, - translation_key=f"deprecated_yaml_import_issue_{result['reason']}", - translation_placeholders={ - "domain": DOMAIN, - "integration_title": "Music Player Daemon", - }, - ) - - async def async_setup_entry( hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: diff --git a/homeassistant/components/mpd/strings.json b/homeassistant/components/mpd/strings.json index fc922ab128a..44cbe8b2bb2 100644 --- a/homeassistant/components/mpd/strings.json +++ b/homeassistant/components/mpd/strings.json @@ -19,15 +19,5 @@ "abort": { "already_configured": "[%key:common::config_flow::abort::already_configured_device%]" } - }, - "issues": { - "deprecated_yaml_import_issue_cannot_connect": { - "title": "The {integration_title} YAML configuration import cannot connect to daemon", - "description": "Configuring {integration_title} using YAML is being removed but there was a connection error importing your YAML configuration.\n\nPlease make sure {integration_title} is turned on, and restart Home Assistant to try importing again. Otherwise, please remove the YAML from your configuration and add the integration manually." - }, - "deprecated_yaml_import_issue_unknown": { - "title": "The {integration_title} YAML configuration could not be imported", - "description": "Configuring {integration_title} using YAML is being removed but there was an unknown error importing your YAML configuration.\n\nPlease make sure {integration_title} is turned on, and restart Home Assistant to try importing again. Otherwise, please remove the YAML from your configuration and add the integration manually." - } } } diff --git a/tests/components/mpd/test_config_flow.py b/tests/components/mpd/test_config_flow.py index d17bef60446..af2ba7562a8 100644 --- a/tests/components/mpd/test_config_flow.py +++ b/tests/components/mpd/test_config_flow.py @@ -7,8 +7,8 @@ import mpd import pytest from homeassistant.components.mpd.const import DOMAIN -from homeassistant.config_entries import SOURCE_IMPORT, SOURCE_USER -from homeassistant.const import CONF_HOST, CONF_NAME, CONF_PASSWORD, CONF_PORT +from homeassistant.config_entries import SOURCE_USER +from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_PORT from homeassistant.core import HomeAssistant from homeassistant.data_entry_flow import FlowResultType @@ -107,85 +107,3 @@ async def test_existing_entry( assert result["type"] is FlowResultType.ABORT assert result["reason"] == "already_configured" - - -async def test_full_import_flow( - hass: HomeAssistant, - mock_setup_entry: AsyncMock, - mock_mpd_client: AsyncMock, -) -> None: - """Test the happy flow.""" - result = await hass.config_entries.flow.async_init( - DOMAIN, - context={"source": SOURCE_IMPORT}, - data={ - CONF_HOST: "192.168.0.1", - CONF_PORT: 6600, - CONF_PASSWORD: "test123", - CONF_NAME: "My PC", - }, - ) - - assert result["type"] is FlowResultType.CREATE_ENTRY - assert result["title"] == "My PC" - assert result["data"] == { - CONF_HOST: "192.168.0.1", - CONF_PORT: 6600, - CONF_PASSWORD: "test123", - } - assert len(mock_setup_entry.mock_calls) == 1 - - -@pytest.mark.parametrize( - ("exception", "error"), - [ - (TimeoutError, "cannot_connect"), - (gaierror, "cannot_connect"), - (mpd.ConnectionError, "cannot_connect"), - (OSError, "cannot_connect"), - (Exception, "unknown"), - ], -) -async def test_import_errors( - hass: HomeAssistant, - mock_setup_entry: AsyncMock, - mock_mpd_client: AsyncMock, - exception: Exception, - error: str, -) -> None: - """Test we handle errors correctly.""" - mock_mpd_client.password.side_effect = exception - - result = await hass.config_entries.flow.async_init( - DOMAIN, - context={"source": SOURCE_IMPORT}, - data={ - CONF_HOST: "192.168.0.1", - CONF_PORT: 6600, - CONF_PASSWORD: "test123", - CONF_NAME: "My PC", - }, - ) - - assert result["type"] is FlowResultType.ABORT - assert result["reason"] == error - - -async def test_existing_entry_import( - hass: HomeAssistant, mock_config_entry: MockConfigEntry -) -> None: - """Test we abort if an entry already exists.""" - mock_config_entry.add_to_hass(hass) - result = await hass.config_entries.flow.async_init( - DOMAIN, - context={"source": SOURCE_IMPORT}, - data={ - CONF_HOST: "192.168.0.1", - CONF_PORT: 6600, - CONF_PASSWORD: "test123", - CONF_NAME: "My PC", - }, - ) - - assert result["type"] is FlowResultType.ABORT - assert result["reason"] == "already_configured"