Remove name key from config flow in Mikrotik (#78571)

This commit is contained in:
Rami Mosleh 2022-09-16 12:30:29 +03:00 committed by GitHub
parent a19a7e64d5
commit b093c2840b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 46 deletions

View File

@ -8,7 +8,6 @@ import voluptuous as vol
from homeassistant import config_entries from homeassistant import config_entries
from homeassistant.const import ( from homeassistant.const import (
CONF_HOST, CONF_HOST,
CONF_NAME,
CONF_PASSWORD, CONF_PASSWORD,
CONF_PORT, CONF_PORT,
CONF_USERNAME, CONF_USERNAME,
@ -49,12 +48,7 @@ class MikrotikFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
"""Handle a flow initialized by the user.""" """Handle a flow initialized by the user."""
errors = {} errors = {}
if user_input is not None: if user_input is not None:
for entry in self._async_current_entries(): self._async_abort_entries_match({CONF_HOST: user_input[CONF_HOST]})
if entry.data[CONF_HOST] == user_input[CONF_HOST]:
return self.async_abort(reason="already_configured")
if entry.data[CONF_NAME] == user_input[CONF_NAME]:
errors[CONF_NAME] = "name_exists"
break
try: try:
await self.hass.async_add_executor_job(get_api, user_input) await self.hass.async_add_executor_job(get_api, user_input)
@ -66,13 +60,12 @@ class MikrotikFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
if not errors: if not errors:
return self.async_create_entry( return self.async_create_entry(
title=user_input[CONF_NAME], data=user_input title=f"{DEFAULT_NAME} ({user_input[CONF_HOST]})", data=user_input
) )
return self.async_show_form( return self.async_show_form(
step_id="user", step_id="user",
data_schema=vol.Schema( data_schema=vol.Schema(
{ {
vol.Required(CONF_NAME, default=DEFAULT_NAME): str,
vol.Required(CONF_HOST): str, vol.Required(CONF_HOST): str,
vol.Required(CONF_USERNAME): str, vol.Required(CONF_USERNAME): str,
vol.Required(CONF_PASSWORD): str, vol.Required(CONF_PASSWORD): str,

View File

@ -1,5 +1,4 @@
"""Test Mikrotik setup process.""" """Test Mikrotik setup process."""
from datetime import timedelta
from unittest.mock import patch from unittest.mock import patch
import librouteros import librouteros
@ -14,7 +13,6 @@ from homeassistant.components.mikrotik.const import (
) )
from homeassistant.const import ( from homeassistant.const import (
CONF_HOST, CONF_HOST,
CONF_NAME,
CONF_PASSWORD, CONF_PASSWORD,
CONF_PORT, CONF_PORT,
CONF_USERNAME, CONF_USERNAME,
@ -24,7 +22,6 @@ from homeassistant.const import (
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
DEMO_USER_INPUT = { DEMO_USER_INPUT = {
CONF_NAME: "Home router",
CONF_HOST: "0.0.0.0", CONF_HOST: "0.0.0.0",
CONF_USERNAME: "username", CONF_USERNAME: "username",
CONF_PASSWORD: "password", CONF_PASSWORD: "password",
@ -32,20 +29,7 @@ DEMO_USER_INPUT = {
CONF_VERIFY_SSL: False, CONF_VERIFY_SSL: False,
} }
DEMO_CONFIG = {
CONF_NAME: "Home router",
CONF_HOST: "0.0.0.0",
CONF_USERNAME: "username",
CONF_PASSWORD: "password",
CONF_PORT: 8278,
CONF_VERIFY_SSL: False,
CONF_FORCE_DHCP: False,
CONF_ARP_PING: False,
CONF_DETECTION_TIME: timedelta(seconds=30),
}
DEMO_CONFIG_ENTRY = { DEMO_CONFIG_ENTRY = {
CONF_NAME: "Home router",
CONF_HOST: "0.0.0.0", CONF_HOST: "0.0.0.0",
CONF_USERNAME: "username", CONF_USERNAME: "username",
CONF_PASSWORD: "password", CONF_PASSWORD: "password",
@ -97,8 +81,7 @@ async def test_flow_works(hass, api):
) )
assert result["type"] == data_entry_flow.FlowResultType.CREATE_ENTRY assert result["type"] == data_entry_flow.FlowResultType.CREATE_ENTRY
assert result["title"] == "Home router" assert result["title"] == "Mikrotik (0.0.0.0)"
assert result["data"][CONF_NAME] == "Home router"
assert result["data"][CONF_HOST] == "0.0.0.0" assert result["data"][CONF_HOST] == "0.0.0.0"
assert result["data"][CONF_USERNAME] == "username" assert result["data"][CONF_USERNAME] == "username"
assert result["data"][CONF_PASSWORD] == "password" assert result["data"][CONF_PASSWORD] == "password"
@ -151,25 +134,6 @@ async def test_host_already_configured(hass, auth_error):
assert result["reason"] == "already_configured" assert result["reason"] == "already_configured"
async def test_name_exists(hass, api):
"""Test name already configured."""
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(
DOMAIN, context={"source": config_entries.SOURCE_USER}
)
result = await hass.config_entries.flow.async_configure(
result["flow_id"], user_input=user_input
)
assert result["type"] == "form"
assert result["errors"] == {CONF_NAME: "name_exists"}
async def test_connection_error(hass, conn_error): async def test_connection_error(hass, conn_error):
"""Test error when connection is unsuccessful.""" """Test error when connection is unsuccessful."""