async def test_abort_if_no_configuration(hass):
    """Check flow abort when no configuration."""
    flow = config_flow.SomfyFlowHandler()
    flow.hass = hass
    result = await flow.async_step_user()
    assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT
    assert result["reason"] == "missing_configuration"
Пример #2
0
async def test_full_flow(hass):
    """Check classic use case."""
    hass.data[DOMAIN] = {}
    register_flow_implementation(hass, CLIENT_ID_VALUE, CLIENT_SECRET_VALUE)
    flow = config_flow.SomfyFlowHandler()
    flow.hass = hass
    hass.config.api = Mock(base_url="https://example.com")
    flow._get_authorization_url = Mock(return_value=mock_coro((AUTH_URL,
                                                               "state")))
    result = await flow.async_step_import()
    assert result["type"] == data_entry_flow.RESULT_TYPE_EXTERNAL_STEP
    assert result["url"] == AUTH_URL
    result = await flow.async_step_auth("my_super_code")
    assert result["type"] == data_entry_flow.RESULT_TYPE_EXTERNAL_STEP_DONE
    assert result["step_id"] == "creation"
    assert flow.code == "my_super_code"
    with patch.object(SomfyApi,
                      "request_token",
                      return_value={"access_token": "super_token"}):
        result = await flow.async_step_creation()
    assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY
    assert result["data"]["refresh_args"] == {
        "client_id": CLIENT_ID_VALUE,
        "client_secret": CLIENT_SECRET_VALUE,
    }
    assert result["title"] == "Somfy"
    assert result["data"]["token"] == {"access_token": "super_token"}
Пример #3
0
async def test_full_flow(hass):
    """Check classic use case."""
    hass.data[DOMAIN] = {}
    register_flow_implementation(hass, CLIENT_ID_VALUE, CLIENT_SECRET_VALUE)
    flow = config_flow.SomfyFlowHandler()
    flow.hass = hass
    hass.config.api = Mock(base_url='https://example.com')
    flow._get_authorization_url = Mock(return_value=mock_coro((AUTH_URL,
                                                               'state')))
    result = await flow.async_step_import()
    assert result['type'] == data_entry_flow.RESULT_TYPE_EXTERNAL_STEP
    assert result['url'] == AUTH_URL
    result = await flow.async_step_auth("my_super_code")
    assert result['type'] == data_entry_flow.RESULT_TYPE_EXTERNAL_STEP_DONE
    assert result['step_id'] == 'creation'
    assert flow.code == 'my_super_code'
    with patch.object(SomfyApi,
                      'request_token',
                      return_value={"access_token": "super_token"}):
        result = await flow.async_step_creation()
    assert result['type'] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY
    assert result['data']['refresh_args'] == {
        'client_id': CLIENT_ID_VALUE,
        'client_secret': CLIENT_SECRET_VALUE
    }
    assert result['title'] == 'Somfy'
    assert result['data']['token'] == {"access_token": "super_token"}
Пример #4
0
async def test_abort_if_authorization_timeout(hass):
    """Check Somfy authorization timeout."""
    flow = config_flow.SomfyFlowHandler()
    flow.hass = hass
    flow._get_authorization_url = Mock(side_effect=asyncio.TimeoutError)
    result = await flow.async_step_auth()
    assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT
    assert result["reason"] == "authorize_url_timeout"
async def test_abort_if_existing_entry(hass):
    """Check flow abort when an entry already exist."""
    flow = config_flow.SomfyFlowHandler()
    flow.hass = hass
    MockConfigEntry(domain=DOMAIN).add_to_hass(hass)

    result = await flow.async_step_user()
    assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT
    assert result["reason"] == "single_instance_allowed"
Пример #6
0
async def test_abort_if_existing_entry(hass):
    """Check flow abort when an entry already exist."""
    flow = config_flow.SomfyFlowHandler()
    flow.hass = hass
    MockConfigEntry(domain=DOMAIN).add_to_hass(hass)
    result = await flow.async_step_import()
    assert result['type'] == data_entry_flow.RESULT_TYPE_ABORT
    assert result['reason'] == 'already_setup'
    result = await flow.async_step_user()
    assert result['type'] == data_entry_flow.RESULT_TYPE_ABORT
    assert result['reason'] == 'already_setup'
async def test_abort_if_authorization_timeout(hass, mock_impl):
    """Check Somfy authorization timeout."""
    flow = config_flow.SomfyFlowHandler()
    flow.hass = hass

    with patch.object(
        mock_impl, "async_generate_authorize_url", side_effect=asyncio.TimeoutError
    ):
        result = await flow.async_step_user()

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