"""Tests for OwnTracks config flow.""" from unittest.mock import patch from homeassistant.setup import async_setup_component from tests.common import mock_coro async def test_config_flow_import(hass): """Test that we automatically create a config flow.""" assert not hass.config_entries.async_entries('owntracks') assert await async_setup_component(hass, 'owntracks', { 'owntracks': { } }) await hass.async_block_till_done() assert hass.config_entries.async_entries('owntracks') async def test_config_flow_unload(hass): """Test unloading a config flow.""" with patch('homeassistant.config_entries.ConfigEntries' '.async_forward_entry_setup') as mock_forward: result = await hass.config_entries.flow.async_init( 'owntracks', context={'source': 'import'}, data={} ) assert len(mock_forward.mock_calls) == 1 entry = result['result'] assert mock_forward.mock_calls[0][1][0] is entry assert mock_forward.mock_calls[0][1][1] == 'device_tracker' assert entry.data['webhook_id'] in hass.data['webhook'] with patch('homeassistant.config_entries.ConfigEntries' '.async_forward_entry_unload', return_value=mock_coro() ) as mock_unload: assert await hass.config_entries.async_unload(entry.entry_id) assert len(mock_unload.mock_calls) == 1 assert mock_forward.mock_calls[0][1][0] is entry assert mock_forward.mock_calls[0][1][1] == 'device_tracker' assert entry.data['webhook_id'] not in hass.data['webhook'] async def test_with_cloud_sub(hass): """Test creating a config flow while subscribed.""" with patch('homeassistant.components.cloud.async_active_subscription', return_value=True), \ patch('homeassistant.components.cloud.async_create_cloudhook', return_value=mock_coro('https://hooks.nabu.casa/ABCD')): result = await hass.config_entries.flow.async_init( 'owntracks', context={'source': 'user'}, data={} ) entry = result['result'] assert entry.data['cloudhook'] assert result['description_placeholders']['webhook_url'] == \ 'https://hooks.nabu.casa/ABCD'