From ca886de3cacdaf59f56411dc91206a4acd0eba46 Mon Sep 17 00:00:00 2001 From: Jan-Philipp Benecke Date: Mon, 8 Jan 2024 22:03:25 +0100 Subject: [PATCH] Remove deprecated YAML support from OpenSky (#107585) --- .../components/opensky/config_flow.py | 28 ++--- homeassistant/components/opensky/sensor.py | 58 +-------- tests/components/opensky/test_config_flow.py | 112 +----------------- tests/components/opensky/test_sensor.py | 22 ---- 4 files changed, 12 insertions(+), 208 deletions(-) diff --git a/homeassistant/components/opensky/config_flow.py b/homeassistant/components/opensky/config_flow.py index a0cd6bc54c2..87621ea3508 100644 --- a/homeassistant/components/opensky/config_flow.py +++ b/homeassistant/components/opensky/config_flow.py @@ -25,10 +25,14 @@ from homeassistant.core import callback from homeassistant.data_entry_flow import FlowResult from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv -from homeassistant.helpers.typing import ConfigType -from .const import CONF_CONTRIBUTING_USER, DEFAULT_NAME, DOMAIN -from .sensor import CONF_ALTITUDE, DEFAULT_ALTITUDE +from .const import ( + CONF_ALTITUDE, + CONF_CONTRIBUTING_USER, + DEFAULT_ALTITUDE, + DEFAULT_NAME, + DOMAIN, +) class OpenSkyConfigFlowHandler(ConfigFlow, domain=DOMAIN): @@ -77,24 +81,6 @@ class OpenSkyConfigFlowHandler(ConfigFlow, domain=DOMAIN): ), ) - async def async_step_import(self, import_config: ConfigType) -> FlowResult: - """Import config from yaml.""" - entry_data = { - CONF_LATITUDE: import_config.get(CONF_LATITUDE, self.hass.config.latitude), - CONF_LONGITUDE: import_config.get( - CONF_LONGITUDE, self.hass.config.longitude - ), - } - self._async_abort_entries_match(entry_data) - return self.async_create_entry( - title=import_config.get(CONF_NAME, DEFAULT_NAME), - data=entry_data, - options={ - CONF_RADIUS: import_config[CONF_RADIUS] * 1000, - CONF_ALTITUDE: import_config.get(CONF_ALTITUDE, DEFAULT_ALTITUDE), - }, - ) - class OpenSkyOptionsFlowHandler(OptionsFlowWithConfigEntry): """OpenSky Options flow handler.""" diff --git a/homeassistant/components/opensky/sensor.py b/homeassistant/components/opensky/sensor.py index e6a165b36ee..9cae0366357 100644 --- a/homeassistant/components/opensky/sensor.py +++ b/homeassistant/components/opensky/sensor.py @@ -1,66 +1,16 @@ """Sensor for the Open Sky Network.""" from __future__ import annotations -import voluptuous as vol - -from homeassistant.components.sensor import ( - PLATFORM_SCHEMA, - SensorEntity, - SensorStateClass, -) -from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry -from homeassistant.const import CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME, CONF_RADIUS -from homeassistant.core import DOMAIN as HOMEASSISTANT_DOMAIN, HomeAssistant -import homeassistant.helpers.config_validation as cv +from homeassistant.components.sensor import SensorEntity, SensorStateClass +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant 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.helpers.update_coordinator import CoordinatorEntity -from .const import CONF_ALTITUDE, DEFAULT_ALTITUDE, DOMAIN, MANUFACTURER +from .const import DOMAIN, MANUFACTURER from .coordinator import OpenSkyDataUpdateCoordinator -PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( - { - vol.Required(CONF_RADIUS): vol.Coerce(float), - vol.Optional(CONF_NAME): cv.string, - vol.Inclusive(CONF_LATITUDE, "coordinates"): cv.latitude, - vol.Inclusive(CONF_LONGITUDE, "coordinates"): cv.longitude, - vol.Optional(CONF_ALTITUDE, default=DEFAULT_ALTITUDE): vol.Coerce(float), - } -) - - -async def async_setup_platform( - hass: HomeAssistant, - config: ConfigType, - async_add_entities: AddEntitiesCallback, - discovery_info: DiscoveryInfoType | None = None, -) -> None: - """Set up the OpenSky sensor platform from yaml.""" - - async_create_issue( - hass, - HOMEASSISTANT_DOMAIN, - f"deprecated_yaml_{DOMAIN}", - breaks_in_ha_version="2024.1.0", - is_fixable=False, - issue_domain=DOMAIN, - severity=IssueSeverity.WARNING, - translation_key="deprecated_yaml", - translation_placeholders={ - "domain": DOMAIN, - "integration_title": "OpenSky", - }, - ) - - hass.async_create_task( - hass.config_entries.flow.async_init( - DOMAIN, context={"source": SOURCE_IMPORT}, data=config - ) - ) - async def async_setup_entry( hass: HomeAssistant, diff --git a/tests/components/opensky/test_config_flow.py b/tests/components/opensky/test_config_flow.py index 7fa19762ddf..5207ac52f0c 100644 --- a/tests/components/opensky/test_config_flow.py +++ b/tests/components/opensky/test_config_flow.py @@ -9,14 +9,12 @@ from homeassistant import data_entry_flow from homeassistant.components.opensky.const import ( CONF_ALTITUDE, CONF_CONTRIBUTING_USER, - DEFAULT_NAME, DOMAIN, ) -from homeassistant.config_entries import SOURCE_IMPORT, SOURCE_USER +from homeassistant.config_entries import SOURCE_USER from homeassistant.const import ( CONF_LATITUDE, CONF_LONGITUDE, - CONF_NAME, CONF_PASSWORD, CONF_RADIUS, CONF_USERNAME, @@ -59,114 +57,6 @@ async def test_full_user_flow(hass: HomeAssistant) -> None: } -@pytest.mark.parametrize( - ("config", "title", "data", "options"), - [ - ( - {CONF_RADIUS: 10.0}, - DEFAULT_NAME, - { - CONF_LATITUDE: 32.87336, - CONF_LONGITUDE: -117.22743, - }, - { - CONF_RADIUS: 10000.0, - CONF_ALTITUDE: 0, - }, - ), - ( - { - CONF_RADIUS: 10.0, - CONF_NAME: "My home", - }, - "My home", - { - CONF_LATITUDE: 32.87336, - CONF_LONGITUDE: -117.22743, - }, - { - CONF_RADIUS: 10000.0, - CONF_ALTITUDE: 0, - }, - ), - ( - { - CONF_RADIUS: 10.0, - CONF_LATITUDE: 10.0, - CONF_LONGITUDE: -100.0, - }, - DEFAULT_NAME, - { - CONF_LATITUDE: 10.0, - CONF_LONGITUDE: -100.0, - }, - { - CONF_RADIUS: 10000.0, - CONF_ALTITUDE: 0, - }, - ), - ( - {CONF_RADIUS: 10.0, CONF_ALTITUDE: 100.0}, - DEFAULT_NAME, - { - CONF_LATITUDE: 32.87336, - CONF_LONGITUDE: -117.22743, - }, - { - CONF_RADIUS: 10000.0, - CONF_ALTITUDE: 100.0, - }, - ), - ], -) -async def test_import_flow( - hass: HomeAssistant, - config: dict[str, Any], - title: str, - data: dict[str, Any], - options: dict[str, Any], -) -> None: - """Test the import flow.""" - with patch_setup_entry(): - result = await hass.config_entries.flow.async_init( - DOMAIN, context={"source": SOURCE_IMPORT}, data=config - ) - await hass.async_block_till_done() - assert result["type"] == FlowResultType.CREATE_ENTRY - assert result["title"] == title - assert result["options"] == options - assert result["data"] == data - - -async def test_importing_already_exists_flow(hass: HomeAssistant) -> None: - """Test the import flow when same location already exists.""" - MockConfigEntry( - domain=DOMAIN, - title=DEFAULT_NAME, - data={}, - options={ - CONF_LATITUDE: 32.87336, - CONF_LONGITUDE: -117.22743, - CONF_RADIUS: 10.0, - CONF_ALTITUDE: 100.0, - }, - ).add_to_hass(hass) - with patch_setup_entry(): - result = await hass.config_entries.flow.async_init( - DOMAIN, - context={"source": SOURCE_IMPORT}, - data={ - CONF_LATITUDE: 32.87336, - CONF_LONGITUDE: -117.22743, - CONF_RADIUS: 10.0, - CONF_ALTITUDE: 100.0, - }, - ) - await hass.async_block_till_done() - assert result["type"] == FlowResultType.ABORT - assert result["reason"] == "already_configured" - - @pytest.mark.parametrize( ("user_input", "error"), [ diff --git a/tests/components/opensky/test_sensor.py b/tests/components/opensky/test_sensor.py index 3429d5eec7e..27c45d1b8ca 100644 --- a/tests/components/opensky/test_sensor.py +++ b/tests/components/opensky/test_sensor.py @@ -6,38 +6,16 @@ from freezegun.api import FrozenDateTimeFactory from syrupy import SnapshotAssertion from homeassistant.components.opensky.const import ( - DOMAIN, EVENT_OPENSKY_ENTRY, EVENT_OPENSKY_EXIT, ) -from homeassistant.config_entries import ConfigEntryState -from homeassistant.const import CONF_PLATFORM, CONF_RADIUS, Platform from homeassistant.core import Event, HomeAssistant -from homeassistant.helpers import issue_registry as ir -from homeassistant.setup import async_setup_component from . import get_states_response_fixture from .conftest import ComponentSetup from tests.common import MockConfigEntry, async_fire_time_changed -LEGACY_CONFIG = {Platform.SENSOR: [{CONF_PLATFORM: DOMAIN, CONF_RADIUS: 10.0}]} - - -async def test_legacy_migration(hass: HomeAssistant) -> None: - """Test migration from yaml to config flow.""" - with patch( - "python_opensky.OpenSky.get_states", - return_value=get_states_response_fixture("opensky/states.json"), - ): - assert await async_setup_component(hass, Platform.SENSOR, LEGACY_CONFIG) - await hass.async_block_till_done() - entries = hass.config_entries.async_entries(DOMAIN) - assert len(entries) == 1 - assert entries[0].state is ConfigEntryState.LOADED - issue_registry = ir.async_get(hass) - assert len(issue_registry.issues) == 1 - async def test_sensor( hass: HomeAssistant,