Remove YAML configuration from Discord (#71696)

This commit is contained in:
Franck Nijhof 2022-05-14 05:55:02 +02:00 committed by GitHub
parent ef9d8944f1
commit 991f0b40f2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 6 additions and 92 deletions

View File

@ -2,33 +2,17 @@
from aiohttp.client_exceptions import ClientConnectorError from aiohttp.client_exceptions import ClientConnectorError
import nextcord import nextcord
from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_API_TOKEN, CONF_PLATFORM, Platform from homeassistant.const import CONF_API_TOKEN, Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
from homeassistant.helpers import discovery from homeassistant.helpers import discovery
from homeassistant.helpers.typing import ConfigType
from .const import DOMAIN from .const import DOMAIN
PLATFORMS = [Platform.NOTIFY] PLATFORMS = [Platform.NOTIFY]
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
"""Set up the Discord component."""
# Iterate all entries for notify to only get Discord
if Platform.NOTIFY in config:
for entry in config[Platform.NOTIFY]:
if entry[CONF_PLATFORM] == DOMAIN:
hass.async_create_task(
hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_IMPORT}, data=entry
)
)
return True
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up Discord from a config entry.""" """Set up Discord from a config entry."""
nextcord.VoiceClient.warn_nacl = False nextcord.VoiceClient.warn_nacl = False

View File

@ -8,7 +8,7 @@ import nextcord
import voluptuous as vol import voluptuous as vol
from homeassistant import config_entries from homeassistant import config_entries
from homeassistant.const import CONF_API_TOKEN, CONF_NAME, CONF_TOKEN from homeassistant.const import CONF_API_TOKEN, CONF_NAME
from homeassistant.data_entry_flow import FlowResult from homeassistant.data_entry_flow import FlowResult
from .const import DOMAIN, URL_PLACEHOLDER from .const import DOMAIN, URL_PLACEHOLDER
@ -69,7 +69,7 @@ class DiscordFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
self._abort_if_unique_id_configured() self._abort_if_unique_id_configured()
return self.async_create_entry( return self.async_create_entry(
title=info.name, title=info.name,
data=user_input | {CONF_NAME: user_input.get(CONF_NAME, info.name)}, data=user_input | {CONF_NAME: info.name},
) )
user_input = user_input or {} user_input = user_input or {}
@ -80,20 +80,6 @@ class DiscordFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
errors=errors, errors=errors,
) )
async def async_step_import(self, import_config: dict[str, str]) -> FlowResult:
"""Import a config entry from configuration.yaml."""
_LOGGER.warning(
"Configuration of the Discord integration in YAML is deprecated and "
"will be removed in Home Assistant 2022.6; Your existing configuration "
"has been imported into the UI automatically and can be safely removed "
"from your configuration.yaml file"
)
for entry in self._async_current_entries():
if entry.data[CONF_API_TOKEN] == import_config[CONF_TOKEN]:
return self.async_abort(reason="already_configured")
import_config[CONF_API_TOKEN] = import_config.pop(CONF_TOKEN)
return await self.async_step_user(import_config)
async def _async_try_connect(token: str) -> tuple[str | None, nextcord.AppInfo | None]: async def _async_try_connect(token: str) -> tuple[str | None, nextcord.AppInfo | None]:
"""Try connecting to Discord.""" """Try connecting to Discord."""

View File

@ -7,17 +7,14 @@ from typing import Any, cast
import nextcord import nextcord
from nextcord.abc import Messageable from nextcord.abc import Messageable
import voluptuous as vol
from homeassistant.components.notify import ( from homeassistant.components.notify import (
ATTR_DATA, ATTR_DATA,
ATTR_TARGET, ATTR_TARGET,
PLATFORM_SCHEMA,
BaseNotificationService, BaseNotificationService,
) )
from homeassistant.const import CONF_API_TOKEN, CONF_TOKEN from homeassistant.const import CONF_API_TOKEN
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -33,9 +30,6 @@ ATTR_EMBED_THUMBNAIL = "thumbnail"
ATTR_EMBED_URL = "url" ATTR_EMBED_URL = "url"
ATTR_IMAGES = "images" ATTR_IMAGES = "images"
# Deprecated in Home Assistant 2022.4
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({vol.Required(CONF_TOKEN): cv.string})
async def async_get_service( async def async_get_service(
hass: HomeAssistant, hass: HomeAssistant,

View File

@ -6,7 +6,7 @@ import nextcord
from homeassistant.components.discord.const import DOMAIN from homeassistant.components.discord.const import DOMAIN
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_API_TOKEN, CONF_NAME, CONF_TOKEN from homeassistant.const import CONF_API_TOKEN, CONF_NAME
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
@ -21,10 +21,6 @@ CONF_DATA = {
CONF_NAME: NAME, CONF_NAME: NAME,
} }
CONF_IMPORT_DATA_NO_NAME = {CONF_TOKEN: TOKEN}
CONF_IMPORT_DATA = CONF_IMPORT_DATA_NO_NAME | {CONF_NAME: NAME}
def create_entry(hass: HomeAssistant) -> ConfigEntry: def create_entry(hass: HomeAssistant) -> ConfigEntry:
"""Add config entry in Home Assistant.""" """Add config entry in Home Assistant."""

View File

@ -1,6 +1,5 @@
"""Test Discord config flow.""" """Test Discord config flow."""
import nextcord import nextcord
from pytest import LogCaptureFixture
from homeassistant import config_entries, data_entry_flow from homeassistant import config_entries, data_entry_flow
from homeassistant.components.discord.const import DOMAIN from homeassistant.components.discord.const import DOMAIN
@ -9,8 +8,6 @@ from homeassistant.core import HomeAssistant
from . import ( from . import (
CONF_DATA, CONF_DATA,
CONF_IMPORT_DATA,
CONF_IMPORT_DATA_NO_NAME,
CONF_INPUT, CONF_INPUT,
NAME, NAME,
create_entry, create_entry,
@ -121,49 +118,6 @@ async def test_flow_user_unknown_error(hass: HomeAssistant) -> None:
assert result["data"] == CONF_DATA assert result["data"] == CONF_DATA
async def test_flow_import(hass: HomeAssistant, caplog: LogCaptureFixture) -> None:
"""Test an import flow."""
with mocked_discord_info(), patch_discord_login():
result = await hass.config_entries.flow.async_init(
DOMAIN,
context={"source": config_entries.SOURCE_IMPORT},
data=CONF_IMPORT_DATA.copy(),
)
assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY
assert result["title"] == NAME
assert result["data"] == CONF_DATA
assert "Discord integration in YAML" in caplog.text
async def test_flow_import_no_name(hass: HomeAssistant) -> None:
"""Test import flow with no name in config."""
with mocked_discord_info(), patch_discord_login():
result = await hass.config_entries.flow.async_init(
DOMAIN,
context={"source": config_entries.SOURCE_IMPORT},
data=CONF_IMPORT_DATA_NO_NAME,
)
assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY
assert result["title"] == NAME
assert result["data"] == CONF_DATA
async def test_flow_import_already_configured(hass: HomeAssistant) -> None:
"""Test an import flow already configured."""
create_entry(hass)
with mocked_discord_info(), patch_discord_login():
result = await hass.config_entries.flow.async_init(
DOMAIN,
context={"source": config_entries.SOURCE_IMPORT},
data=CONF_IMPORT_DATA,
)
assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT
assert result["reason"] == "already_configured"
async def test_flow_reauth(hass: HomeAssistant) -> None: async def test_flow_reauth(hass: HomeAssistant) -> None:
"""Test a reauth flow.""" """Test a reauth flow."""
entry = create_entry(hass) entry = create_entry(hass)