core/tests/components/owntracks/test_config_flow.py

62 lines
2.2 KiB
Python
Raw Normal View History

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