diff --git a/homeassistant/components/mikrotik/__init__.py b/homeassistant/components/mikrotik/__init__.py index 1ef250a3f4e..25aa2eb1468 100644 --- a/homeassistant/components/mikrotik/__init__.py +++ b/homeassistant/components/mikrotik/__init__.py @@ -1,71 +1,12 @@ """The Mikrotik component.""" -import voluptuous as vol - -from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry -from homeassistant.const import ( - CONF_HOST, - CONF_NAME, - CONF_PASSWORD, - CONF_PORT, - CONF_USERNAME, - CONF_VERIFY_SSL, -) +from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers import config_validation as cv, device_registry as dr -from homeassistant.helpers.typing import ConfigType -from .const import ( - ATTR_MANUFACTURER, - CONF_ARP_PING, - CONF_DETECTION_TIME, - CONF_FORCE_DHCP, - DEFAULT_API_PORT, - DEFAULT_DETECTION_TIME, - DEFAULT_NAME, - DOMAIN, - PLATFORMS, -) +from .const import ATTR_MANUFACTURER, DOMAIN, PLATFORMS from .hub import MikrotikHub -MIKROTIK_SCHEMA = vol.All( - vol.Schema( - { - vol.Required(CONF_HOST): cv.string, - vol.Required(CONF_USERNAME): cv.string, - vol.Required(CONF_PASSWORD): cv.string, - vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, - vol.Optional(CONF_PORT, default=DEFAULT_API_PORT): cv.port, - vol.Optional(CONF_VERIFY_SSL, default=False): cv.boolean, - vol.Optional(CONF_ARP_PING, default=False): cv.boolean, - vol.Optional(CONF_FORCE_DHCP, default=False): cv.boolean, - vol.Optional( - CONF_DETECTION_TIME, default=DEFAULT_DETECTION_TIME - ): cv.time_period, - } - ) -) - - -CONFIG_SCHEMA = vol.Schema( - vol.All( - cv.deprecated(DOMAIN), {DOMAIN: vol.All(cv.ensure_list, [MIKROTIK_SCHEMA])} - ), - extra=vol.ALLOW_EXTRA, -) - - -async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: - """Import the Mikrotik component from config.""" - - if DOMAIN in config: - for entry in config[DOMAIN]: - hass.async_create_task( - hass.config_entries.flow.async_init( - DOMAIN, context={"source": SOURCE_IMPORT}, data=entry - ) - ) - - return True +CONFIG_SCHEMA = cv.removed(DOMAIN, raise_if_present=False) async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool: diff --git a/homeassistant/components/mikrotik/config_flow.py b/homeassistant/components/mikrotik/config_flow.py index 922df221d5a..11117d22842 100644 --- a/homeassistant/components/mikrotik/config_flow.py +++ b/homeassistant/components/mikrotik/config_flow.py @@ -74,14 +74,6 @@ class MikrotikFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): errors=errors, ) - async def async_step_import(self, import_config): - """Import Miktortik from config.""" - - import_config[CONF_DETECTION_TIME] = import_config[ - CONF_DETECTION_TIME - ].total_seconds() - return await self.async_step_user(user_input=import_config) - class MikrotikOptionsFlowHandler(config_entries.OptionsFlow): """Handle Mikrotik options.""" diff --git a/tests/components/mikrotik/__init__.py b/tests/components/mikrotik/__init__.py index ae8013eff4b..885fc9c8d83 100644 --- a/tests/components/mikrotik/__init__.py +++ b/tests/components/mikrotik/__init__.py @@ -1,19 +1,32 @@ """Tests for the Mikrotik component.""" -from homeassistant.components import mikrotik +from homeassistant.components.mikrotik.const import ( + CONF_ARP_PING, + CONF_DETECTION_TIME, + CONF_FORCE_DHCP, + DEFAULT_DETECTION_TIME, +) +from homeassistant.const import ( + CONF_HOST, + CONF_NAME, + CONF_PASSWORD, + CONF_PORT, + CONF_USERNAME, + CONF_VERIFY_SSL, +) MOCK_DATA = { - mikrotik.CONF_NAME: "Mikrotik", - mikrotik.CONF_HOST: "0.0.0.0", - mikrotik.CONF_USERNAME: "user", - mikrotik.CONF_PASSWORD: "pass", - mikrotik.CONF_PORT: 8278, - mikrotik.CONF_VERIFY_SSL: False, + CONF_NAME: "Mikrotik", + CONF_HOST: "0.0.0.0", + CONF_USERNAME: "user", + CONF_PASSWORD: "pass", + CONF_PORT: 8278, + CONF_VERIFY_SSL: False, } MOCK_OPTIONS = { - mikrotik.CONF_ARP_PING: False, - mikrotik.const.CONF_FORCE_DHCP: False, - mikrotik.CONF_DETECTION_TIME: mikrotik.DEFAULT_DETECTION_TIME, + CONF_ARP_PING: False, + CONF_FORCE_DHCP: False, + CONF_DETECTION_TIME: DEFAULT_DETECTION_TIME, } DEVICE_1_DHCP = { diff --git a/tests/components/mikrotik/test_config_flow.py b/tests/components/mikrotik/test_config_flow.py index 411408e8c98..b4c087a436d 100644 --- a/tests/components/mikrotik/test_config_flow.py +++ b/tests/components/mikrotik/test_config_flow.py @@ -6,7 +6,12 @@ import librouteros import pytest from homeassistant import config_entries, data_entry_flow -from homeassistant.components import mikrotik +from homeassistant.components.mikrotik.const import ( + CONF_ARP_PING, + CONF_DETECTION_TIME, + CONF_FORCE_DHCP, + DOMAIN, +) from homeassistant.const import ( CONF_HOST, CONF_NAME, @@ -34,9 +39,9 @@ DEMO_CONFIG = { CONF_PASSWORD: "password", CONF_PORT: 8278, CONF_VERIFY_SSL: False, - mikrotik.const.CONF_FORCE_DHCP: False, - mikrotik.CONF_ARP_PING: False, - mikrotik.CONF_DETECTION_TIME: timedelta(seconds=30), + CONF_FORCE_DHCP: False, + CONF_ARP_PING: False, + CONF_DETECTION_TIME: timedelta(seconds=30), } DEMO_CONFIG_ENTRY = { @@ -46,9 +51,9 @@ DEMO_CONFIG_ENTRY = { CONF_PASSWORD: "password", CONF_PORT: 8278, CONF_VERIFY_SSL: False, - mikrotik.const.CONF_FORCE_DHCP: False, - mikrotik.CONF_ARP_PING: False, - mikrotik.CONF_DETECTION_TIME: 30, + CONF_FORCE_DHCP: False, + CONF_ARP_PING: False, + CONF_DETECTION_TIME: 30, } @@ -78,29 +83,11 @@ def mock_api_connection_error(): yield -async def test_import(hass, api): - """Test import step.""" - result = await hass.config_entries.flow.async_init( - mikrotik.DOMAIN, - context={"source": config_entries.SOURCE_IMPORT}, - data=DEMO_CONFIG, - ) - - assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY - assert result["title"] == "Home router" - assert result["data"][CONF_NAME] == "Home router" - assert result["data"][CONF_HOST] == "0.0.0.0" - assert result["data"][CONF_USERNAME] == "username" - assert result["data"][CONF_PASSWORD] == "password" - assert result["data"][CONF_PORT] == 8278 - assert result["data"][CONF_VERIFY_SSL] is False - - async def test_flow_works(hass, api): """Test config flow.""" result = await hass.config_entries.flow.async_init( - mikrotik.DOMAIN, context={"source": config_entries.SOURCE_USER} + DOMAIN, context={"source": config_entries.SOURCE_USER} ) assert result["type"] == data_entry_flow.RESULT_TYPE_FORM assert result["step_id"] == "user" @@ -118,11 +105,14 @@ async def test_flow_works(hass, api): assert result["data"][CONF_PORT] == 8278 -async def test_options(hass): +async def test_options(hass, api): """Test updating options.""" - entry = MockConfigEntry(domain=mikrotik.DOMAIN, data=DEMO_CONFIG_ENTRY) + entry = MockConfigEntry(domain=DOMAIN, data=DEMO_CONFIG_ENTRY) entry.add_to_hass(hass) + assert await hass.config_entries.async_setup(entry.entry_id) + await hass.async_block_till_done() + result = await hass.config_entries.options.async_init(entry.entry_id) assert result["type"] == data_entry_flow.RESULT_TYPE_FORM @@ -131,28 +121,28 @@ async def test_options(hass): result = await hass.config_entries.options.async_configure( result["flow_id"], user_input={ - mikrotik.CONF_DETECTION_TIME: 30, - mikrotik.CONF_ARP_PING: True, - mikrotik.const.CONF_FORCE_DHCP: False, + CONF_DETECTION_TIME: 30, + CONF_ARP_PING: True, + CONF_FORCE_DHCP: False, }, ) assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY assert result["data"] == { - mikrotik.CONF_DETECTION_TIME: 30, - mikrotik.CONF_ARP_PING: True, - mikrotik.const.CONF_FORCE_DHCP: False, + CONF_DETECTION_TIME: 30, + CONF_ARP_PING: True, + CONF_FORCE_DHCP: False, } async def test_host_already_configured(hass, auth_error): """Test host already configured.""" - entry = MockConfigEntry(domain=mikrotik.DOMAIN, data=DEMO_CONFIG_ENTRY) + entry = MockConfigEntry(domain=DOMAIN, data=DEMO_CONFIG_ENTRY) entry.add_to_hass(hass) result = await hass.config_entries.flow.async_init( - mikrotik.DOMAIN, context={"source": config_entries.SOURCE_USER} + DOMAIN, context={"source": config_entries.SOURCE_USER} ) result = await hass.config_entries.flow.async_configure( result["flow_id"], user_input=DEMO_USER_INPUT @@ -164,13 +154,13 @@ async def test_host_already_configured(hass, auth_error): async def test_name_exists(hass, api): """Test name already configured.""" - entry = MockConfigEntry(domain=mikrotik.DOMAIN, data=DEMO_CONFIG_ENTRY) + entry = MockConfigEntry(domain=DOMAIN, data=DEMO_CONFIG_ENTRY) entry.add_to_hass(hass) user_input = DEMO_USER_INPUT.copy() user_input[CONF_HOST] = "0.0.0.1" result = await hass.config_entries.flow.async_init( - mikrotik.DOMAIN, context={"source": config_entries.SOURCE_USER} + DOMAIN, context={"source": config_entries.SOURCE_USER} ) result = await hass.config_entries.flow.async_configure( result["flow_id"], user_input=user_input @@ -184,7 +174,7 @@ async def test_connection_error(hass, conn_error): """Test error when connection is unsuccessful.""" result = await hass.config_entries.flow.async_init( - mikrotik.DOMAIN, context={"source": config_entries.SOURCE_USER} + DOMAIN, context={"source": config_entries.SOURCE_USER} ) result = await hass.config_entries.flow.async_configure( result["flow_id"], user_input=DEMO_USER_INPUT @@ -197,7 +187,7 @@ async def test_wrong_credentials(hass, auth_error): """Test error when credentials are wrong.""" result = await hass.config_entries.flow.async_init( - mikrotik.DOMAIN, context={"source": config_entries.SOURCE_USER} + DOMAIN, context={"source": config_entries.SOURCE_USER} ) result = await hass.config_entries.flow.async_configure( result["flow_id"], user_input=DEMO_USER_INPUT diff --git a/tests/components/mikrotik/test_hub.py b/tests/components/mikrotik/test_hub.py index 2159b58293b..2116d73826f 100644 --- a/tests/components/mikrotik/test_hub.py +++ b/tests/components/mikrotik/test_hub.py @@ -5,6 +5,14 @@ import librouteros from homeassistant import config_entries from homeassistant.components import mikrotik +from homeassistant.const import ( + CONF_HOST, + CONF_NAME, + CONF_PASSWORD, + CONF_PORT, + CONF_USERNAME, + CONF_VERIFY_SSL, +) from . import ARP_DATA, DHCP_DATA, MOCK_DATA, MOCK_OPTIONS, WIRELESS_DATA @@ -56,17 +64,17 @@ async def test_hub_setup_successful(hass): hub = await setup_mikrotik_entry(hass) assert hub.config_entry.data == { - mikrotik.CONF_NAME: "Mikrotik", - mikrotik.CONF_HOST: "0.0.0.0", - mikrotik.CONF_USERNAME: "user", - mikrotik.CONF_PASSWORD: "pass", - mikrotik.CONF_PORT: 8278, - mikrotik.CONF_VERIFY_SSL: False, + CONF_NAME: "Mikrotik", + CONF_HOST: "0.0.0.0", + CONF_USERNAME: "user", + CONF_PASSWORD: "pass", + CONF_PORT: 8278, + CONF_VERIFY_SSL: False, } assert hub.config_entry.options == { - mikrotik.hub.CONF_FORCE_DHCP: False, - mikrotik.CONF_ARP_PING: False, - mikrotik.CONF_DETECTION_TIME: 300, + mikrotik.const.CONF_FORCE_DHCP: False, + mikrotik.const.CONF_ARP_PING: False, + mikrotik.const.CONF_DETECTION_TIME: 300, } assert hub.api.available is True