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"
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"}
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"}
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"
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"