mirror of https://github.com/home-assistant/core
70 lines
2.4 KiB
Python
70 lines
2.4 KiB
Python
"""Test the Livisi Home Assistant config flow."""
|
|
|
|
from unittest.mock import patch
|
|
|
|
from aiolivisi import errors as livisi_errors
|
|
import pytest
|
|
|
|
from homeassistant.components.livisi.const import DOMAIN
|
|
from homeassistant.config_entries import SOURCE_USER
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.data_entry_flow import FlowResultType
|
|
|
|
from . import (
|
|
VALID_CONFIG,
|
|
mocked_livisi_controller,
|
|
mocked_livisi_login,
|
|
mocked_livisi_setup_entry,
|
|
)
|
|
|
|
|
|
async def test_create_entry(hass: HomeAssistant) -> None:
|
|
"""Test create LIVISI entity."""
|
|
result = await hass.config_entries.flow.async_init(
|
|
DOMAIN, context={"source": SOURCE_USER}
|
|
)
|
|
|
|
with mocked_livisi_login(), mocked_livisi_controller(), mocked_livisi_setup_entry():
|
|
result = await hass.config_entries.flow.async_configure(
|
|
result["flow_id"],
|
|
VALID_CONFIG,
|
|
)
|
|
|
|
assert result["type"] is FlowResultType.CREATE_ENTRY
|
|
assert result["title"] == "SHC Classic"
|
|
assert result["data"]["host"] == "1.1.1.1"
|
|
assert result["data"]["password"] == "test"
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
("exception", "expected_reason"),
|
|
[
|
|
(livisi_errors.ShcUnreachableException(), "cannot_connect"),
|
|
(livisi_errors.IncorrectIpAddressException(), "wrong_ip_address"),
|
|
(livisi_errors.WrongCredentialException(), "wrong_password"),
|
|
],
|
|
)
|
|
async def test_create_entity_after_login_error(
|
|
hass: HomeAssistant, exception: livisi_errors.LivisiException, expected_reason: str
|
|
) -> None:
|
|
"""Test the LIVISI integration can create an entity after the user had login errors."""
|
|
with patch(
|
|
"homeassistant.components.livisi.config_flow.AioLivisi.async_set_token",
|
|
side_effect=exception,
|
|
):
|
|
result = await hass.config_entries.flow.async_init(
|
|
DOMAIN,
|
|
context={"source": SOURCE_USER},
|
|
)
|
|
result = await hass.config_entries.flow.async_configure(
|
|
result["flow_id"], VALID_CONFIG
|
|
)
|
|
assert result["type"] is FlowResultType.FORM
|
|
assert result["errors"]["base"] == expected_reason
|
|
with mocked_livisi_login(), mocked_livisi_controller(), mocked_livisi_setup_entry():
|
|
result = await hass.config_entries.flow.async_configure(
|
|
result["flow_id"],
|
|
user_input=VALID_CONFIG,
|
|
)
|
|
assert result["type"] is FlowResultType.CREATE_ENTRY
|