Remove deprecated YAML support from OpenSky (#107585)

This commit is contained in:
Jan-Philipp Benecke 2024-01-08 22:03:25 +01:00 committed by GitHub
parent 8150754b9b
commit ca886de3ca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 12 additions and 208 deletions

View file

@ -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."""

View file

@ -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,

View file

@ -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"),
[

View file

@ -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,