Simplify AsusWRT config flow (#69800)

pull/70372/head
ollo69 2022-04-21 17:23:40 +02:00 committed by GitHub
parent a2c74b9786
commit f6e5e1b167
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 34 additions and 34 deletions

View File

@ -29,7 +29,6 @@ from .const import (
CONF_TRACK_UNKNOWN,
DEFAULT_DNSMASQ,
DEFAULT_INTERFACE,
DEFAULT_SSH_PORT,
DEFAULT_TRACK_UNKNOWN,
DOMAIN,
MODE_AP,
@ -76,25 +75,28 @@ class AsusWrtFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
if user_input is None:
user_input = {}
schema = {
vol.Required(CONF_HOST, default=user_input.get(CONF_HOST, "")): str,
vol.Required(CONF_USERNAME, default=user_input.get(CONF_USERNAME, "")): str,
vol.Optional(CONF_PASSWORD)
if self.show_advanced_options
else vol.Required(CONF_PASSWORD): str,
vol.Required(CONF_PROTOCOL, default=PROTOCOL_SSH): vol.In(
{PROTOCOL_SSH: "SSH", PROTOCOL_TELNET: "Telnet"}
),
}
if self.show_advanced_options:
schema[vol.Optional(CONF_PORT)] = cv.port
schema[vol.Optional(CONF_SSH_KEY)] = str
schema[vol.Required(CONF_MODE, default=MODE_ROUTER)] = vol.In(
{MODE_ROUTER: "Router", MODE_AP: "Access Point"}
)
return self.async_show_form(
step_id="user",
data_schema=vol.Schema(
{
vol.Required(CONF_HOST, default=user_input.get(CONF_HOST, "")): str,
vol.Required(
CONF_USERNAME, default=user_input.get(CONF_USERNAME, "")
): str,
vol.Optional(CONF_PASSWORD): str,
vol.Optional(CONF_SSH_KEY): str,
vol.Required(CONF_PROTOCOL, default=PROTOCOL_SSH): vol.In(
{PROTOCOL_SSH: "SSH", PROTOCOL_TELNET: "Telnet"}
),
vol.Required(CONF_PORT, default=DEFAULT_SSH_PORT): cv.port,
vol.Required(CONF_MODE, default=MODE_ROUTER): vol.In(
{MODE_ROUTER: "Router", MODE_AP: "Access Point"}
),
}
),
data_schema=vol.Schema(schema),
errors=errors or {},
)
@ -134,6 +136,7 @@ class AsusWrtFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
errors = {}
self._host = user_input[CONF_HOST]
pwd = user_input.get(CONF_PASSWORD)
ssh = user_input.get(CONF_SSH_KEY)

View File

@ -11,7 +11,6 @@ DATA_ASUSWRT = DOMAIN
DEFAULT_DNSMASQ = "/var/lib/misc"
DEFAULT_INTERFACE = "eth0"
DEFAULT_SSH_PORT = 22
DEFAULT_TRACK_UNKNOWN = False
MODE_AP = "ap"

View File

@ -492,7 +492,7 @@ def get_api(conf: dict[str, Any], options: dict[str, Any] | None = None) -> Asus
return AsusWrt(
conf[CONF_HOST],
conf[CONF_PORT],
conf.get(CONF_PORT),
conf[CONF_PROTOCOL] == PROTOCOL_TELNET,
conf[CONF_USERNAME],
conf.get(CONF_PASSWORD, ""),

View File

@ -11,7 +11,7 @@
"password": "[%key:common::config_flow::data::password%]",
"ssh_key": "Path to your SSH key file (instead of password)",
"protocol": "Communication protocol to use",
"port": "[%key:common::config_flow::data::port%]",
"port": "[%key:common::config_flow::data::port%] (leave empty for protocol default)",
"mode": "[%key:common::config_flow::data::mode%]"
}
}

View File

@ -18,7 +18,7 @@
"mode": "Mode",
"name": "Name",
"password": "Password",
"port": "Port",
"port": "Port (leave empty for protocol default)",
"protocol": "Communication protocol to use",
"ssh_key": "Path to your SSH key file (instead of password)",
"username": "Username"

View File

@ -52,11 +52,11 @@ def mock_controller_connect():
async def test_user(hass, connect):
"""Test user config."""
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}
flow_result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER, "show_advanced_options": True}
)
assert result["type"] == data_entry_flow.RESULT_TYPE_FORM
assert result["step_id"] == "user"
assert flow_result["type"] == data_entry_flow.RESULT_TYPE_FORM
assert flow_result["step_id"] == "user"
# test with all provided
with patch(
@ -66,10 +66,8 @@ async def test_user(hass, connect):
"homeassistant.components.asuswrt.config_flow.socket.gethostbyname",
return_value=IP_ADDRESS,
):
result = await hass.config_entries.flow.async_init(
DOMAIN,
context={"source": SOURCE_USER},
data=CONFIG_DATA,
result = await hass.config_entries.flow.async_configure(
flow_result["flow_id"], user_input=CONFIG_DATA
)
await hass.async_block_till_done()
@ -86,7 +84,7 @@ async def test_error_no_password_ssh(hass):
config_data.pop(CONF_PASSWORD)
result = await hass.config_entries.flow.async_init(
DOMAIN,
context={"source": SOURCE_USER},
context={"source": SOURCE_USER, "show_advanced_options": True},
data=config_data,
)
@ -100,7 +98,7 @@ async def test_error_both_password_ssh(hass):
config_data[CONF_SSH_KEY] = SSH_KEY
result = await hass.config_entries.flow.async_init(
DOMAIN,
context={"source": SOURCE_USER},
context={"source": SOURCE_USER, "show_advanced_options": True},
data=config_data,
)
@ -115,7 +113,7 @@ async def test_error_invalid_ssh(hass):
config_data[CONF_SSH_KEY] = SSH_KEY
result = await hass.config_entries.flow.async_init(
DOMAIN,
context={"source": SOURCE_USER},
context={"source": SOURCE_USER, "show_advanced_options": True},
data=config_data,
)
@ -164,7 +162,7 @@ async def test_on_connect_failed(hass):
"""Test when we have errors connecting the router."""
flow_result = await hass.config_entries.flow.async_init(
DOMAIN,
context={"source": SOURCE_USER},
context={"source": SOURCE_USER, "show_advanced_options": True},
)
with patch("homeassistant.components.asuswrt.router.AsusWrt") as asus_wrt: