"""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.""" hass.config.components.add("cloud") 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" )