mirror of
https://github.com/home-assistant/core.git
synced 2025-07-13 00:07:10 +00:00
Netgear catch no info error (#100212)
This commit is contained in:
parent
f50d47121e
commit
d2b5ffc9fc
@ -190,8 +190,6 @@ class NetgearFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
|
|||||||
)
|
)
|
||||||
except CannotLoginException:
|
except CannotLoginException:
|
||||||
errors["base"] = "config"
|
errors["base"] = "config"
|
||||||
|
|
||||||
if errors:
|
|
||||||
return await self._show_setup_form(user_input, errors)
|
return await self._show_setup_form(user_input, errors)
|
||||||
|
|
||||||
config_data = {
|
config_data = {
|
||||||
@ -204,6 +202,10 @@ class NetgearFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
|
|||||||
|
|
||||||
# Check if already configured
|
# Check if already configured
|
||||||
info = await self.hass.async_add_executor_job(api.get_info)
|
info = await self.hass.async_add_executor_job(api.get_info)
|
||||||
|
if info is None:
|
||||||
|
errors["base"] = "info"
|
||||||
|
return await self._show_setup_form(user_input, errors)
|
||||||
|
|
||||||
await self.async_set_unique_id(info["SerialNumber"], raise_on_progress=False)
|
await self.async_set_unique_id(info["SerialNumber"], raise_on_progress=False)
|
||||||
self._abort_if_unique_id_configured(updates=config_data)
|
self._abort_if_unique_id_configured(updates=config_data)
|
||||||
|
|
||||||
|
@ -11,7 +11,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"config": "Connection or login error: please check your configuration"
|
"config": "Connection or login error: please check your configuration",
|
||||||
|
"info": "Failed to get info from router"
|
||||||
},
|
},
|
||||||
"abort": {
|
"abort": {
|
||||||
"already_configured": "[%key:common::config_flow::abort::already_configured_device%]",
|
"already_configured": "[%key:common::config_flow::abort::already_configured_device%]",
|
||||||
|
@ -76,41 +76,6 @@ def mock_controller_service():
|
|||||||
yield service_mock
|
yield service_mock
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="service_5555")
|
|
||||||
def mock_controller_service_5555():
|
|
||||||
"""Mock a successful service."""
|
|
||||||
with patch(
|
|
||||||
"homeassistant.components.netgear.async_setup_entry", return_value=True
|
|
||||||
), patch("homeassistant.components.netgear.router.Netgear") as service_mock:
|
|
||||||
service_mock.return_value.get_info = Mock(return_value=ROUTER_INFOS)
|
|
||||||
service_mock.return_value.port = 5555
|
|
||||||
service_mock.return_value.ssl = True
|
|
||||||
yield service_mock
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="service_incomplete")
|
|
||||||
def mock_controller_service_incomplete():
|
|
||||||
"""Mock a successful service."""
|
|
||||||
router_infos = ROUTER_INFOS.copy()
|
|
||||||
router_infos.pop("DeviceName")
|
|
||||||
with patch(
|
|
||||||
"homeassistant.components.netgear.async_setup_entry", return_value=True
|
|
||||||
), patch("homeassistant.components.netgear.router.Netgear") as service_mock:
|
|
||||||
service_mock.return_value.get_info = Mock(return_value=router_infos)
|
|
||||||
service_mock.return_value.port = 80
|
|
||||||
service_mock.return_value.ssl = False
|
|
||||||
yield service_mock
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="service_failed")
|
|
||||||
def mock_controller_service_failed():
|
|
||||||
"""Mock a failed service."""
|
|
||||||
with patch("homeassistant.components.netgear.router.Netgear") as service_mock:
|
|
||||||
service_mock.return_value.login_try_port = Mock(return_value=None)
|
|
||||||
service_mock.return_value.get_info = Mock(return_value=None)
|
|
||||||
yield service_mock
|
|
||||||
|
|
||||||
|
|
||||||
async def test_user(hass: HomeAssistant, service) -> None:
|
async def test_user(hass: HomeAssistant, service) -> None:
|
||||||
"""Test user step."""
|
"""Test user step."""
|
||||||
result = await hass.config_entries.flow.async_init(
|
result = await hass.config_entries.flow.async_init(
|
||||||
@ -138,7 +103,7 @@ async def test_user(hass: HomeAssistant, service) -> None:
|
|||||||
assert result["data"][CONF_PASSWORD] == PASSWORD
|
assert result["data"][CONF_PASSWORD] == PASSWORD
|
||||||
|
|
||||||
|
|
||||||
async def test_user_connect_error(hass: HomeAssistant, service_failed) -> None:
|
async def test_user_connect_error(hass: HomeAssistant, service) -> None:
|
||||||
"""Test user step with connection failure."""
|
"""Test user step with connection failure."""
|
||||||
result = await hass.config_entries.flow.async_init(
|
result = await hass.config_entries.flow.async_init(
|
||||||
DOMAIN, context={"source": SOURCE_USER}
|
DOMAIN, context={"source": SOURCE_USER}
|
||||||
@ -146,7 +111,23 @@ async def test_user_connect_error(hass: HomeAssistant, service_failed) -> None:
|
|||||||
assert result["type"] == data_entry_flow.FlowResultType.FORM
|
assert result["type"] == data_entry_flow.FlowResultType.FORM
|
||||||
assert result["step_id"] == "user"
|
assert result["step_id"] == "user"
|
||||||
|
|
||||||
|
service.return_value.get_info = Mock(return_value=None)
|
||||||
|
|
||||||
# Have to provide all config
|
# Have to provide all config
|
||||||
|
result = await hass.config_entries.flow.async_configure(
|
||||||
|
result["flow_id"],
|
||||||
|
{
|
||||||
|
CONF_HOST: HOST,
|
||||||
|
CONF_USERNAME: USERNAME,
|
||||||
|
CONF_PASSWORD: PASSWORD,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
assert result["type"] == data_entry_flow.FlowResultType.FORM
|
||||||
|
assert result["step_id"] == "user"
|
||||||
|
assert result["errors"] == {"base": "info"}
|
||||||
|
|
||||||
|
service.return_value.login_try_port = Mock(return_value=None)
|
||||||
|
|
||||||
result = await hass.config_entries.flow.async_configure(
|
result = await hass.config_entries.flow.async_configure(
|
||||||
result["flow_id"],
|
result["flow_id"],
|
||||||
{
|
{
|
||||||
@ -160,7 +141,7 @@ async def test_user_connect_error(hass: HomeAssistant, service_failed) -> None:
|
|||||||
assert result["errors"] == {"base": "config"}
|
assert result["errors"] == {"base": "config"}
|
||||||
|
|
||||||
|
|
||||||
async def test_user_incomplete_info(hass: HomeAssistant, service_incomplete) -> None:
|
async def test_user_incomplete_info(hass: HomeAssistant, service) -> None:
|
||||||
"""Test user step with incomplete device info."""
|
"""Test user step with incomplete device info."""
|
||||||
result = await hass.config_entries.flow.async_init(
|
result = await hass.config_entries.flow.async_init(
|
||||||
DOMAIN, context={"source": SOURCE_USER}
|
DOMAIN, context={"source": SOURCE_USER}
|
||||||
@ -168,6 +149,10 @@ async def test_user_incomplete_info(hass: HomeAssistant, service_incomplete) ->
|
|||||||
assert result["type"] == data_entry_flow.FlowResultType.FORM
|
assert result["type"] == data_entry_flow.FlowResultType.FORM
|
||||||
assert result["step_id"] == "user"
|
assert result["step_id"] == "user"
|
||||||
|
|
||||||
|
router_infos = ROUTER_INFOS.copy()
|
||||||
|
router_infos.pop("DeviceName")
|
||||||
|
service.return_value.get_info = Mock(return_value=router_infos)
|
||||||
|
|
||||||
# Have to provide all config
|
# Have to provide all config
|
||||||
result = await hass.config_entries.flow.async_configure(
|
result = await hass.config_entries.flow.async_configure(
|
||||||
result["flow_id"],
|
result["flow_id"],
|
||||||
@ -313,7 +298,7 @@ async def test_ssdp(hass: HomeAssistant, service) -> None:
|
|||||||
assert result["data"][CONF_PASSWORD] == PASSWORD
|
assert result["data"][CONF_PASSWORD] == PASSWORD
|
||||||
|
|
||||||
|
|
||||||
async def test_ssdp_port_5555(hass: HomeAssistant, service_5555) -> None:
|
async def test_ssdp_port_5555(hass: HomeAssistant, service) -> None:
|
||||||
"""Test ssdp step with port 5555."""
|
"""Test ssdp step with port 5555."""
|
||||||
result = await hass.config_entries.flow.async_init(
|
result = await hass.config_entries.flow.async_init(
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
@ -332,6 +317,9 @@ async def test_ssdp_port_5555(hass: HomeAssistant, service_5555) -> None:
|
|||||||
assert result["type"] == data_entry_flow.FlowResultType.FORM
|
assert result["type"] == data_entry_flow.FlowResultType.FORM
|
||||||
assert result["step_id"] == "user"
|
assert result["step_id"] == "user"
|
||||||
|
|
||||||
|
service.return_value.port = 5555
|
||||||
|
service.return_value.ssl = True
|
||||||
|
|
||||||
result = await hass.config_entries.flow.async_configure(
|
result = await hass.config_entries.flow.async_configure(
|
||||||
result["flow_id"], {CONF_PASSWORD: PASSWORD}
|
result["flow_id"], {CONF_PASSWORD: PASSWORD}
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user