2018-11-28 21:20:13 +00:00
|
|
|
"""Tests for OwnTracks config flow."""
|
2019-05-14 09:59:11 +00:00
|
|
|
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'
|