Beispiel #1
0
async def async_get_mac_address(hass, ip_address, port):
    """Connect to a screenlogic gateway and return the mac address."""
    connected_socket = await hass.async_add_executor_job(
        login.create_socket,
        ip_address,
        port,
    )
    if not connected_socket:
        raise ScreenLogicError("Unknown socket error")
    return await hass.async_add_executor_job(login.gateway_connect,
                                             connected_socket)
async def test_flow_discover_error(hass):
    """Test when discovery errors."""
    await setup.async_setup_component(hass, "persistent_notification", {})
    with patch(
            "homeassistant.components.screenlogic.config_flow.discover",
            side_effect=ScreenLogicError("Fake error"),
    ):
        result = await hass.config_entries.flow.async_init(
            DOMAIN, context={"source": config_entries.SOURCE_USER})

    assert result["type"] == "form"
    assert result["errors"] == {}
    assert result["step_id"] == "gateway_entry"

    with patch(
            "homeassistant.components.screenlogic.async_setup",
            return_value=True
    ) as mock_setup, patch(
            "homeassistant.components.screenlogic.async_setup_entry",
            return_value=True,
    ) as mock_setup_entry, patch(
            "homeassistant.components.screenlogic.config_flow.login.create_socket",
            return_value=True,
    ), patch(
            "homeassistant.components.screenlogic.config_flow.login.gateway_connect",
            return_value="00-C0-33-01-01-01",
    ):
        result3 = await hass.config_entries.flow.async_configure(
            result["flow_id"],
            {
                CONF_IP_ADDRESS: "1.1.1.1",
                CONF_PORT: 80,
            },
        )
        await hass.async_block_till_done()

    assert result3["type"] == "create_entry"
    assert result3["title"] == "Pentair: 01-01-01"
    assert result3["data"] == {
        CONF_IP_ADDRESS: "1.1.1.1",
        CONF_PORT: 80,
    }
    assert len(mock_setup.mock_calls) == 1
    assert len(mock_setup_entry.mock_calls) == 1
async def test_form_cannot_connect(hass):
    """Test we handle cannot connect error."""
    with patch(
        "homeassistant.components.screenlogic.config_flow.discovery.async_discover",
        return_value=[],
    ):
        result = await hass.config_entries.flow.async_init(
            DOMAIN, context={"source": config_entries.SOURCE_USER}
        )

    with patch(
        "homeassistant.components.screenlogic.config_flow.login.async_get_mac_address",
        side_effect=ScreenLogicError("Failed to connect to host at 1.1.1.1:80"),
    ):
        result2 = await hass.config_entries.flow.async_configure(
            result["flow_id"],
            {
                CONF_IP_ADDRESS: "1.1.1.1",
                CONF_PORT: 80,
            },
        )

    assert result2["type"] == "form"
    assert result2["errors"] == {CONF_IP_ADDRESS: "cannot_connect"}