Automatically generate config flow list (#23802)
* Add config flow to manifest.json * Still load config flows via config flow platform * Fix typo * Lint * Update config_flows.py" * Catch import error when setting up entry * Lint * Fix tests * Fix imports * Lint * Fix Unifi tests * Fix translation test * Add homekit_controller config flow
This commit is contained in:
parent
b8cbd39985
commit
1e22c8daca
106 changed files with 742 additions and 440 deletions
|
@ -2,7 +2,12 @@
|
|||
from unittest.mock import Mock, patch
|
||||
|
||||
from homeassistant.components import unifi
|
||||
from homeassistant.components.unifi import config_flow
|
||||
from homeassistant.setup import async_setup_component
|
||||
from homeassistant.components.unifi.const import (
|
||||
CONF_POE_CONTROL, CONF_CONTROLLER, CONF_SITE_ID)
|
||||
from homeassistant.const import (
|
||||
CONF_HOST, CONF_PASSWORD, CONF_PORT, CONF_USERNAME, CONF_VERIFY_SSL)
|
||||
|
||||
from tests.common import mock_coro, MockConfigEntry
|
||||
|
||||
|
@ -137,7 +142,7 @@ async def test_unload_entry(hass):
|
|||
|
||||
async def test_flow_works(hass, aioclient_mock):
|
||||
"""Test config flow."""
|
||||
flow = unifi.UnifiFlowHandler()
|
||||
flow = config_flow.UnifiFlowHandler()
|
||||
flow.hass = hass
|
||||
|
||||
with patch('aiounifi.Controller') as mock_controller:
|
||||
|
@ -157,11 +162,11 @@ async def test_flow_works(hass, aioclient_mock):
|
|||
})
|
||||
|
||||
await flow.async_step_user(user_input={
|
||||
unifi.CONF_HOST: '1.2.3.4',
|
||||
unifi.CONF_USERNAME: 'username',
|
||||
unifi.CONF_PASSWORD: 'password',
|
||||
unifi.CONF_PORT: 1234,
|
||||
unifi.CONF_VERIFY_SSL: True
|
||||
CONF_HOST: '1.2.3.4',
|
||||
CONF_USERNAME: 'username',
|
||||
CONF_PASSWORD: 'password',
|
||||
CONF_PORT: 1234,
|
||||
CONF_VERIFY_SSL: True
|
||||
})
|
||||
|
||||
result = await flow.async_step_site(user_input={})
|
||||
|
@ -173,27 +178,27 @@ async def test_flow_works(hass, aioclient_mock):
|
|||
assert result['type'] == 'create_entry'
|
||||
assert result['title'] == 'site name'
|
||||
assert result['data'] == {
|
||||
unifi.CONF_CONTROLLER: {
|
||||
unifi.CONF_HOST: '1.2.3.4',
|
||||
unifi.CONF_USERNAME: 'username',
|
||||
unifi.CONF_PASSWORD: 'password',
|
||||
unifi.CONF_PORT: 1234,
|
||||
unifi.CONF_SITE_ID: 'default',
|
||||
unifi.CONF_VERIFY_SSL: True
|
||||
CONF_CONTROLLER: {
|
||||
CONF_HOST: '1.2.3.4',
|
||||
CONF_USERNAME: 'username',
|
||||
CONF_PASSWORD: 'password',
|
||||
CONF_PORT: 1234,
|
||||
CONF_SITE_ID: 'default',
|
||||
CONF_VERIFY_SSL: True
|
||||
},
|
||||
unifi.CONF_POE_CONTROL: True
|
||||
CONF_POE_CONTROL: True
|
||||
}
|
||||
|
||||
|
||||
async def test_controller_multiple_sites(hass):
|
||||
"""Test config flow."""
|
||||
flow = unifi.UnifiFlowHandler()
|
||||
flow = config_flow.UnifiFlowHandler()
|
||||
flow.hass = hass
|
||||
|
||||
flow.config = {
|
||||
unifi.CONF_HOST: '1.2.3.4',
|
||||
unifi.CONF_USERNAME: 'username',
|
||||
unifi.CONF_PASSWORD: 'password',
|
||||
CONF_HOST: '1.2.3.4',
|
||||
CONF_USERNAME: 'username',
|
||||
CONF_PASSWORD: 'password',
|
||||
}
|
||||
flow.sites = {
|
||||
'site1': {
|
||||
|
@ -215,7 +220,7 @@ async def test_controller_multiple_sites(hass):
|
|||
|
||||
async def test_controller_site_already_configured(hass):
|
||||
"""Test config flow."""
|
||||
flow = unifi.UnifiFlowHandler()
|
||||
flow = config_flow.UnifiFlowHandler()
|
||||
flow.hass = hass
|
||||
|
||||
entry = MockConfigEntry(domain=unifi.DOMAIN, data={
|
||||
|
@ -227,9 +232,9 @@ async def test_controller_site_already_configured(hass):
|
|||
entry.add_to_hass(hass)
|
||||
|
||||
flow.config = {
|
||||
unifi.CONF_HOST: '1.2.3.4',
|
||||
unifi.CONF_USERNAME: 'username',
|
||||
unifi.CONF_PASSWORD: 'password',
|
||||
CONF_HOST: '1.2.3.4',
|
||||
CONF_USERNAME: 'username',
|
||||
CONF_PASSWORD: 'password',
|
||||
}
|
||||
flow.desc = 'site name'
|
||||
flow.sites = {
|
||||
|
@ -245,7 +250,7 @@ async def test_controller_site_already_configured(hass):
|
|||
|
||||
async def test_user_permissions_low(hass, aioclient_mock):
|
||||
"""Test config flow."""
|
||||
flow = unifi.UnifiFlowHandler()
|
||||
flow = config_flow.UnifiFlowHandler()
|
||||
flow.hass = hass
|
||||
|
||||
with patch('aiounifi.Controller') as mock_controller:
|
||||
|
@ -265,11 +270,11 @@ async def test_user_permissions_low(hass, aioclient_mock):
|
|||
})
|
||||
|
||||
await flow.async_step_user(user_input={
|
||||
unifi.CONF_HOST: '1.2.3.4',
|
||||
unifi.CONF_USERNAME: 'username',
|
||||
unifi.CONF_PASSWORD: 'password',
|
||||
unifi.CONF_PORT: 1234,
|
||||
unifi.CONF_VERIFY_SSL: True
|
||||
CONF_HOST: '1.2.3.4',
|
||||
CONF_USERNAME: 'username',
|
||||
CONF_PASSWORD: 'password',
|
||||
CONF_PORT: 1234,
|
||||
CONF_VERIFY_SSL: True
|
||||
})
|
||||
|
||||
result = await flow.async_step_site(user_input={})
|
||||
|
@ -279,16 +284,16 @@ async def test_user_permissions_low(hass, aioclient_mock):
|
|||
|
||||
async def test_user_credentials_faulty(hass, aioclient_mock):
|
||||
"""Test config flow."""
|
||||
flow = unifi.UnifiFlowHandler()
|
||||
flow = config_flow.UnifiFlowHandler()
|
||||
flow.hass = hass
|
||||
|
||||
with patch.object(unifi, 'get_controller',
|
||||
with patch.object(config_flow, 'get_controller',
|
||||
side_effect=unifi.errors.AuthenticationRequired):
|
||||
result = await flow.async_step_user({
|
||||
unifi.CONF_HOST: '1.2.3.4',
|
||||
unifi.CONF_USERNAME: 'username',
|
||||
unifi.CONF_PASSWORD: 'password',
|
||||
unifi.CONF_SITE_ID: 'default',
|
||||
CONF_HOST: '1.2.3.4',
|
||||
CONF_USERNAME: 'username',
|
||||
CONF_PASSWORD: 'password',
|
||||
CONF_SITE_ID: 'default',
|
||||
})
|
||||
|
||||
assert result['type'] == 'form'
|
||||
|
@ -297,16 +302,16 @@ async def test_user_credentials_faulty(hass, aioclient_mock):
|
|||
|
||||
async def test_controller_is_unavailable(hass, aioclient_mock):
|
||||
"""Test config flow."""
|
||||
flow = unifi.UnifiFlowHandler()
|
||||
flow = config_flow.UnifiFlowHandler()
|
||||
flow.hass = hass
|
||||
|
||||
with patch.object(unifi, 'get_controller',
|
||||
with patch.object(config_flow, 'get_controller',
|
||||
side_effect=unifi.errors.CannotConnect):
|
||||
result = await flow.async_step_user({
|
||||
unifi.CONF_HOST: '1.2.3.4',
|
||||
unifi.CONF_USERNAME: 'username',
|
||||
unifi.CONF_PASSWORD: 'password',
|
||||
unifi.CONF_SITE_ID: 'default',
|
||||
CONF_HOST: '1.2.3.4',
|
||||
CONF_USERNAME: 'username',
|
||||
CONF_PASSWORD: 'password',
|
||||
CONF_SITE_ID: 'default',
|
||||
})
|
||||
|
||||
assert result['type'] == 'form'
|
||||
|
@ -315,16 +320,16 @@ async def test_controller_is_unavailable(hass, aioclient_mock):
|
|||
|
||||
async def test_controller_unkown_problem(hass, aioclient_mock):
|
||||
"""Test config flow."""
|
||||
flow = unifi.UnifiFlowHandler()
|
||||
flow = config_flow.UnifiFlowHandler()
|
||||
flow.hass = hass
|
||||
|
||||
with patch.object(unifi, 'get_controller',
|
||||
with patch.object(config_flow, 'get_controller',
|
||||
side_effect=Exception):
|
||||
result = await flow.async_step_user({
|
||||
unifi.CONF_HOST: '1.2.3.4',
|
||||
unifi.CONF_USERNAME: 'username',
|
||||
unifi.CONF_PASSWORD: 'password',
|
||||
unifi.CONF_SITE_ID: 'default',
|
||||
CONF_HOST: '1.2.3.4',
|
||||
CONF_USERNAME: 'username',
|
||||
CONF_PASSWORD: 'password',
|
||||
CONF_SITE_ID: 'default',
|
||||
})
|
||||
|
||||
assert result['type'] == 'abort'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue