mirror of
https://github.com/home-assistant/core.git
synced 2025-08-13 17:45:19 +02:00
First tests for homematicip_cloud setup
This commit is contained in:
0
tests/components/homematicip_cloud/__init__.py
Normal file
0
tests/components/homematicip_cloud/__init__.py
Normal file
17
tests/components/homematicip_cloud/test_config_flow.py
Normal file
17
tests/components/homematicip_cloud/test_config_flow.py
Normal file
@@ -0,0 +1,17 @@
|
||||
"""Tests for HomematicIP Cloud config flow."""
|
||||
import asyncio
|
||||
from unittest.mock import Mock, patch
|
||||
|
||||
import aiohue
|
||||
import pytest
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.homematicip_cloud import config_flow, const
|
||||
|
||||
from tests.common import MockConfigEntry, mock_coro
|
||||
|
||||
async def test_flow_works(hass, aioclient_mock):
|
||||
"""Test config flow ."""
|
||||
flow = config_flow.HomematicipCloudFlowHandler()
|
||||
flow.hass = hass
|
||||
await flow.async_step_init()
|
104
tests/components/homematicip_cloud/test_init.py
Normal file
104
tests/components/homematicip_cloud/test_init.py
Normal file
@@ -0,0 +1,104 @@
|
||||
"""Test HomematicIP Cloud setup process."""
|
||||
|
||||
from unittest.mock import patch
|
||||
|
||||
from homeassistant.setup import async_setup_component
|
||||
from homeassistant.components import homematicip_cloud as hmipc
|
||||
|
||||
from tests.common import mock_coro, MockConfigEntry
|
||||
|
||||
|
||||
async def test_config_with_accesspoint_passed_to_config_entry(hass):
|
||||
"""Test that configured options for a host are loaded via config entry."""
|
||||
with patch.object(hass, 'config_entries') as mock_config_entries, \
|
||||
patch.object(hmipc, 'configured_haps', return_value=[]):
|
||||
assert await async_setup_component(hass, hmipc.DOMAIN, {
|
||||
hmipc.DOMAIN: {
|
||||
hmipc.CONF_ACCESSPOINT: 'ABC123',
|
||||
hmipc.CONF_AUTHTOKEN: '123',
|
||||
hmipc.CONF_NAME: 'name',
|
||||
}
|
||||
}) is True
|
||||
|
||||
# Flow started for discovered bridge
|
||||
assert len(mock_config_entries.flow.mock_calls) == 2
|
||||
|
||||
|
||||
async def test_config_already_registered_not_passed_to_config_entry(hass):
|
||||
"""Test that an already registered host does not initiate an import."""
|
||||
with patch.object(hass, 'config_entries') as mock_config_entries, \
|
||||
patch.object(hmipc, 'configured_haps', return_value=['ABC123']):
|
||||
assert await async_setup_component(hass, hmipc.DOMAIN, {
|
||||
hmipc.DOMAIN: {
|
||||
hmipc.CONF_ACCESSPOINT: 'ABC123',
|
||||
hmipc.CONF_AUTHTOKEN: '123',
|
||||
hmipc.CONF_NAME: 'name',
|
||||
}
|
||||
}) is True
|
||||
|
||||
# No flow started
|
||||
assert len(mock_config_entries.flow.mock_calls) == 0
|
||||
|
||||
|
||||
async def test_setup_entry_successful(hass):
|
||||
"""Test setup entry is successful."""
|
||||
entry = MockConfigEntry(domain=hmipc.DOMAIN, data={
|
||||
hmipc.HMIPC_HAPID: 'ABC123',
|
||||
hmipc.HMIPC_AUTHTOKEN: '123',
|
||||
hmipc.HMIPC_NAME: 'hmip',
|
||||
})
|
||||
entry.add_to_hass(hass)
|
||||
with patch.object(hmipc, 'HomematicipHAP') as mock_hap:
|
||||
mock_hap.return_value.async_setup.return_value = mock_coro(True)
|
||||
assert await async_setup_component(hass, hmipc.DOMAIN, {
|
||||
hmipc.DOMAIN: {
|
||||
hmipc.CONF_ACCESSPOINT: 'ABC123',
|
||||
hmipc.CONF_AUTHTOKEN: '123',
|
||||
hmipc.CONF_NAME: 'hmip',
|
||||
}
|
||||
}) is True
|
||||
|
||||
assert len(mock_hap.mock_calls) == 2
|
||||
|
||||
|
||||
async def test_setup_defined_hosts_no_known_auth(hass):
|
||||
"""Test we initiate config entry if config bridge is not known."""
|
||||
with patch.object(hass, 'config_entries') as mock_config_entries, \
|
||||
patch.object(hmipc, 'configured_haps', return_value=[]):
|
||||
mock_config_entries.flow.async_init.return_value = mock_coro()
|
||||
assert await async_setup_component(hass, hmipc.DOMAIN, {
|
||||
hmipc.DOMAIN: {
|
||||
hmipc.CONF_ACCESSPOINT: 'ABC123',
|
||||
hmipc.CONF_AUTHTOKEN: '123',
|
||||
hmipc.CONF_NAME: 'hmip',
|
||||
}
|
||||
}) is True
|
||||
|
||||
# Flow started for discovered bridge
|
||||
assert len(mock_config_entries.flow.mock_calls) == 1
|
||||
assert mock_config_entries.flow.mock_calls[0][2]['data'] == {
|
||||
hmipc.HMIPC_HAPID: 'ABC123',
|
||||
hmipc.HMIPC_AUTHTOKEN: '123',
|
||||
hmipc.HMIPC_NAME: 'hmip',
|
||||
}
|
||||
|
||||
|
||||
async def test_unload_entry(hass):
|
||||
"""Test being able to unload an entry."""
|
||||
entry = MockConfigEntry(domain=hmipc.DOMAIN, data={
|
||||
hmipc.HMIPC_HAPID: 'ABC123',
|
||||
hmipc.HMIPC_AUTHTOKEN: '123',
|
||||
hmipc.HMIPC_NAME: 'hmip',
|
||||
})
|
||||
entry.add_to_hass(hass)
|
||||
|
||||
with patch.object(hmipc, 'HomematicipHAP') as mock_hap:
|
||||
mock_hap.return_value.async_setup.return_value = mock_coro(True)
|
||||
assert await async_setup_component(hass, hmipc.DOMAIN, {}) is True
|
||||
|
||||
assert len(mock_hap.return_value.mock_calls) == 1
|
||||
|
||||
mock_hap.return_value.async_reset.return_value = mock_coro(True)
|
||||
assert await hmipc.async_unload_entry(hass, entry)
|
||||
assert len(mock_hap.return_value.async_reset.mock_calls) == 1
|
||||
assert hass.data[hmipc.DOMAIN] == {}
|
Reference in New Issue
Block a user