166 lines
4.1 KiB
Python
166 lines
4.1 KiB
Python
|
"""Tests for IGD config flow."""
|
||
|
|
||
|
from homeassistant.components import igd
|
||
|
|
||
|
from tests.common import MockConfigEntry
|
||
|
|
||
|
|
||
|
async def test_flow_none_discovered(hass):
|
||
|
"""Test no device discovered flow."""
|
||
|
flow = igd.config_flow.IgdFlowHandler()
|
||
|
flow.hass = hass
|
||
|
|
||
|
result = await flow.async_step_user()
|
||
|
assert result['type'] == 'abort'
|
||
|
assert result['reason'] == 'no_devices_discovered'
|
||
|
|
||
|
|
||
|
async def test_flow_already_configured(hass):
|
||
|
"""Test device already configured flow."""
|
||
|
flow = igd.config_flow.IgdFlowHandler()
|
||
|
flow.hass = hass
|
||
|
|
||
|
# discovered device
|
||
|
udn = 'uuid:device_1'
|
||
|
hass.data[igd.DOMAIN] = {
|
||
|
'discovered': {
|
||
|
udn: {
|
||
|
'host': '192.168.1.1',
|
||
|
'udn': udn,
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
# configured entry
|
||
|
MockConfigEntry(domain=igd.DOMAIN, data={
|
||
|
'udn': udn,
|
||
|
'host': '192.168.1.1',
|
||
|
}).add_to_hass(hass)
|
||
|
|
||
|
result = await flow.async_step_user({
|
||
|
'igd_host': '192.168.1.1',
|
||
|
'sensors': True,
|
||
|
'port_forward': False,
|
||
|
})
|
||
|
assert result['type'] == 'abort'
|
||
|
assert result['reason'] == 'already_configured'
|
||
|
|
||
|
|
||
|
async def test_flow_no_sensors_no_port_forward(hass):
|
||
|
"""Test single device, no sensors, no port_forward."""
|
||
|
flow = igd.config_flow.IgdFlowHandler()
|
||
|
flow.hass = hass
|
||
|
|
||
|
# discovered device
|
||
|
udn = 'uuid:device_1'
|
||
|
hass.data[igd.DOMAIN] = {
|
||
|
'discovered': {
|
||
|
udn: {
|
||
|
'host': '192.168.1.1',
|
||
|
'udn': udn,
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
# configured entry
|
||
|
MockConfigEntry(domain=igd.DOMAIN, data={
|
||
|
'udn': udn,
|
||
|
'host': '192.168.1.1',
|
||
|
}).add_to_hass(hass)
|
||
|
|
||
|
result = await flow.async_step_user({
|
||
|
'igd_host': '192.168.1.1',
|
||
|
'sensors': False,
|
||
|
'port_forward': False,
|
||
|
})
|
||
|
assert result['type'] == 'abort'
|
||
|
assert result['reason'] == 'no_sensors_or_port_forward'
|
||
|
|
||
|
|
||
|
async def test_flow_discovered_form(hass):
|
||
|
"""Test single device discovered, show form flow."""
|
||
|
flow = igd.config_flow.IgdFlowHandler()
|
||
|
flow.hass = hass
|
||
|
|
||
|
# discovered device
|
||
|
udn = 'uuid:device_1'
|
||
|
hass.data[igd.DOMAIN] = {
|
||
|
'discovered': {
|
||
|
udn: {
|
||
|
'host': '192.168.1.1',
|
||
|
'udn': udn,
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
result = await flow.async_step_user()
|
||
|
assert result['type'] == 'form'
|
||
|
assert result['step_id'] == 'user'
|
||
|
|
||
|
|
||
|
async def test_flow_two_discovered_form(hass):
|
||
|
"""Test single device discovered, show form flow."""
|
||
|
flow = igd.config_flow.IgdFlowHandler()
|
||
|
flow.hass = hass
|
||
|
|
||
|
# discovered device
|
||
|
udn_1 = 'uuid:device_1'
|
||
|
udn_2 = 'uuid:device_2'
|
||
|
hass.data[igd.DOMAIN] = {
|
||
|
'discovered': {
|
||
|
udn_1: {
|
||
|
'host': '192.168.1.1',
|
||
|
'udn': udn_1,
|
||
|
},
|
||
|
udn_2: {
|
||
|
'host': '192.168.2.1',
|
||
|
'udn': udn_2,
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
result = await flow.async_step_user()
|
||
|
assert result['type'] == 'form'
|
||
|
assert result['step_id'] == 'user'
|
||
|
assert result['data_schema']({
|
||
|
'igd_host': '192.168.1.1',
|
||
|
'sensors': True,
|
||
|
'port_forward': False,
|
||
|
})
|
||
|
assert result['data_schema']({
|
||
|
'igd_host': '192.168.2.1',
|
||
|
'sensors': True,
|
||
|
'port_forward': False,
|
||
|
})
|
||
|
|
||
|
|
||
|
async def test_config_entry_created(hass):
|
||
|
flow = igd.config_flow.IgdFlowHandler()
|
||
|
flow.hass = hass
|
||
|
|
||
|
# discovered device
|
||
|
udn = 'uuid:device_1'
|
||
|
hass.data[igd.DOMAIN] = {
|
||
|
'discovered': {
|
||
|
udn: {
|
||
|
'name': 'Test device 1',
|
||
|
'host': '192.168.1.1',
|
||
|
'ssdp_description': 'http://192.168.1.1/desc.xml',
|
||
|
'udn': udn,
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
result = await flow.async_step_user({
|
||
|
'igd_host': '192.168.1.1',
|
||
|
'sensors': True,
|
||
|
'port_forward': False,
|
||
|
})
|
||
|
assert result['data'] == {
|
||
|
'port_forward': False,
|
||
|
'sensors': True,
|
||
|
'ssdp_description': 'http://192.168.1.1/desc.xml',
|
||
|
'udn': 'uuid:device_1',
|
||
|
}
|
||
|
assert result['title'] == 'Test device 1'
|