Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
114 changes: 45 additions & 69 deletions tests/components/ipp/test_config_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@
import aiohttp
from pyipp import IPPConnectionUpgradeRequired

from homeassistant import data_entry_flow
from homeassistant.components.ipp import config_flow
from homeassistant.components.ipp.const import CONF_BASE_PATH, CONF_UUID
from homeassistant.components.ipp.const import CONF_BASE_PATH, CONF_UUID, DOMAIN
from homeassistant.config_entries import SOURCE_USER, SOURCE_ZEROCONF
from homeassistant.const import CONF_HOST, CONF_NAME, CONF_SSL
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import (
RESULT_TYPE_ABORT,
RESULT_TYPE_CREATE_ENTRY,
RESULT_TYPE_FORM,
)

from . import (
MOCK_USER_INPUT,
Expand All @@ -23,25 +26,11 @@
async def test_show_user_form(hass: HomeAssistant) -> None:
"""Test that the user set up form is served."""
result = await hass.config_entries.flow.async_init(
config_flow.DOMAIN, context={"source": SOURCE_USER},
DOMAIN, context={"source": SOURCE_USER},
)

assert result["step_id"] == "user"
assert result["type"] == data_entry_flow.RESULT_TYPE_FORM


async def test_show_zeroconf_confirm_form(hass: HomeAssistant) -> None:
"""Test that the zeroconf confirmation form is served."""
flow = config_flow.IPPFlowHandler()
flow.hass = hass
flow.context = {"source": SOURCE_ZEROCONF}
flow.discovery_info = {CONF_NAME: "EPSON123456"}

result = await flow.async_step_zeroconf_confirm()

assert result["step_id"] == "zeroconf_confirm"
assert result["type"] == data_entry_flow.RESULT_TYPE_FORM
assert result["description_placeholders"] == {CONF_NAME: "EPSON123456"}
assert result["type"] == RESULT_TYPE_FORM


async def test_show_zeroconf_form(
Expand All @@ -54,18 +43,13 @@ async def test_show_zeroconf_form(
headers={"Content-Type": "application/ipp"},
)

flow = config_flow.IPPFlowHandler()
flow.hass = hass
flow.context = {"source": SOURCE_ZEROCONF}

discovery_info = MOCK_ZEROCONF_IPP_SERVICE_INFO.copy()
result = await flow.async_step_zeroconf(discovery_info)

assert flow.discovery_info[CONF_HOST] == "EPSON123456.local"
assert flow.discovery_info[CONF_NAME] == "EPSON123456"
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_ZEROCONF}, data=discovery_info,
)

assert result["step_id"] == "zeroconf_confirm"
assert result["type"] == data_entry_flow.RESULT_TYPE_FORM
assert result["type"] == RESULT_TYPE_FORM
assert result["description_placeholders"] == {CONF_NAME: "EPSON123456"}


Expand All @@ -79,11 +63,11 @@ async def test_connection_error(

user_input = MOCK_USER_INPUT.copy()
result = await hass.config_entries.flow.async_init(
config_flow.DOMAIN, context={"source": SOURCE_USER}, data=user_input,
DOMAIN, context={"source": SOURCE_USER}, data=user_input,
)

assert result["step_id"] == "user"
assert result["type"] == data_entry_flow.RESULT_TYPE_FORM
assert result["type"] == RESULT_TYPE_FORM
assert result["errors"] == {"base": "connection_error"}


Expand All @@ -95,10 +79,10 @@ async def test_zeroconf_connection_error(

discovery_info = MOCK_ZEROCONF_IPP_SERVICE_INFO.copy()
result = await hass.config_entries.flow.async_init(
config_flow.DOMAIN, context={"source": SOURCE_ZEROCONF}, data=discovery_info,
DOMAIN, context={"source": SOURCE_ZEROCONF}, data=discovery_info,
)

assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT
assert result["type"] == RESULT_TYPE_ABORT
assert result["reason"] == "connection_error"


Expand All @@ -110,7 +94,7 @@ async def test_zeroconf_confirm_connection_error(

discovery_info = MOCK_ZEROCONF_IPP_SERVICE_INFO.copy()
result = await hass.config_entries.flow.async_init(
config_flow.DOMAIN,
DOMAIN,
context={
"source": SOURCE_ZEROCONF,
CONF_HOST: "EPSON123456.local",
Expand All @@ -119,7 +103,7 @@ async def test_zeroconf_confirm_connection_error(
data=discovery_info,
)

assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT
assert result["type"] == RESULT_TYPE_ABORT
assert result["reason"] == "connection_error"


Expand All @@ -133,11 +117,11 @@ async def test_user_connection_upgrade_required(

user_input = MOCK_USER_INPUT.copy()
result = await hass.config_entries.flow.async_init(
config_flow.DOMAIN, context={"source": SOURCE_USER}, data=user_input,
DOMAIN, context={"source": SOURCE_USER}, data=user_input,
)

assert result["step_id"] == "user"
assert result["type"] == data_entry_flow.RESULT_TYPE_FORM
assert result["type"] == RESULT_TYPE_FORM
assert result["errors"] == {"base": "connection_upgrade"}


Expand All @@ -151,10 +135,10 @@ async def test_zeroconf_connection_upgrade_required(

discovery_info = MOCK_ZEROCONF_IPP_SERVICE_INFO.copy()
result = await hass.config_entries.flow.async_init(
config_flow.DOMAIN, context={"source": SOURCE_ZEROCONF}, data=discovery_info,
DOMAIN, context={"source": SOURCE_ZEROCONF}, data=discovery_info,
)

assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT
assert result["type"] == RESULT_TYPE_ABORT
assert result["reason"] == "connection_upgrade"


Expand All @@ -166,10 +150,10 @@ async def test_user_device_exists_abort(

user_input = MOCK_USER_INPUT.copy()
result = await hass.config_entries.flow.async_init(
config_flow.DOMAIN, context={"source": SOURCE_USER}, data=user_input,
DOMAIN, context={"source": SOURCE_USER}, data=user_input,
)

assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT
assert result["type"] == RESULT_TYPE_ABORT
assert result["reason"] == "already_configured"


Expand All @@ -181,10 +165,10 @@ async def test_zeroconf_device_exists_abort(

discovery_info = MOCK_ZEROCONF_IPP_SERVICE_INFO.copy()
result = await hass.config_entries.flow.async_init(
config_flow.DOMAIN, context={"source": SOURCE_ZEROCONF}, data=discovery_info,
DOMAIN, context={"source": SOURCE_ZEROCONF}, data=discovery_info,
)

assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT
assert result["type"] == RESULT_TYPE_ABORT
assert result["reason"] == "already_configured"


Expand All @@ -197,10 +181,10 @@ async def test_zeroconf_with_uuid_device_exists_abort(
discovery_info = MOCK_ZEROCONF_IPP_SERVICE_INFO.copy()
discovery_info["properties"]["UUID"] = "cfe92100-67c4-11d4-a45f-f8d027761251"
result = await hass.config_entries.flow.async_init(
config_flow.DOMAIN, context={"source": SOURCE_ZEROCONF}, data=discovery_info,
DOMAIN, context={"source": SOURCE_ZEROCONF}, data=discovery_info,
)

assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT
assert result["type"] == RESULT_TYPE_ABORT
assert result["reason"] == "already_configured"


Expand All @@ -215,18 +199,18 @@ async def test_full_user_flow_implementation(
)

result = await hass.config_entries.flow.async_init(
config_flow.DOMAIN, context={"source": SOURCE_USER},
DOMAIN, context={"source": SOURCE_USER},
)

assert result["step_id"] == "user"
assert result["type"] == data_entry_flow.RESULT_TYPE_FORM
assert result["type"] == RESULT_TYPE_FORM

result = await hass.config_entries.flow.async_configure(
result["flow_id"],
user_input={CONF_HOST: "EPSON123456.local", CONF_BASE_PATH: "/ipp/print"},
)

assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY
assert result["type"] == RESULT_TYPE_CREATE_ENTRY
assert result["title"] == "EPSON123456.local"

assert result["data"]
Expand All @@ -244,25 +228,19 @@ async def test_full_zeroconf_flow_implementation(
headers={"Content-Type": "application/ipp"},
)

flow = config_flow.IPPFlowHandler()
flow.hass = hass
flow.context = {"source": SOURCE_ZEROCONF}

discovery_info = MOCK_ZEROCONF_IPP_SERVICE_INFO.copy()
result = await flow.async_step_zeroconf(discovery_info)

assert flow.discovery_info
assert flow.discovery_info[CONF_HOST] == "EPSON123456.local"
assert flow.discovery_info[CONF_NAME] == "EPSON123456"
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_ZEROCONF}, data=discovery_info,
)

assert result["step_id"] == "zeroconf_confirm"
assert result["type"] == data_entry_flow.RESULT_TYPE_FORM
assert result["type"] == RESULT_TYPE_FORM

result = await flow.async_step_zeroconf_confirm(
user_input={CONF_HOST: "EPSON123456.local"}
result = await hass.config_entries.flow.async_configure(
result["flow_id"], user_input={}
)

assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY
assert result["type"] == RESULT_TYPE_CREATE_ENTRY
assert result["title"] == "EPSON123456"

assert result["data"]
Expand All @@ -281,22 +259,20 @@ async def test_full_zeroconf_tls_flow_implementation(
headers={"Content-Type": "application/ipp"},
)

flow = config_flow.IPPFlowHandler()
flow.hass = hass
flow.context = {"source": SOURCE_ZEROCONF}

discovery_info = MOCK_ZEROCONF_IPPS_SERVICE_INFO.copy()
result = await flow.async_step_zeroconf(discovery_info)
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_ZEROCONF}, data=discovery_info,
)

assert result["step_id"] == "zeroconf_confirm"
assert result["type"] == data_entry_flow.RESULT_TYPE_FORM
assert result["type"] == RESULT_TYPE_FORM
assert result["description_placeholders"] == {CONF_NAME: "EPSON123456"}

result = await flow.async_step_zeroconf_confirm(
user_input={CONF_HOST: "EPSON123456.local"}
result = await hass.config_entries.flow.async_configure(
result["flow_id"], user_input={}
)

assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY
assert result["type"] == RESULT_TYPE_CREATE_ENTRY
assert result["title"] == "EPSON123456"

assert result["data"]
Expand Down