Merge UniFi device tracker to config entry (#24367)

* Move device tracker to use config entry

* Remove monitored conditions attributes based on ADR0003

* Add support for import of device tracker config to be backwards compatible

* Remove unnecessary configuration options from device tracker

* Add component configuration support
This commit is contained in:
Robert Svensson
2019-07-14 21:57:09 +02:00
committed by GitHub
parent 3480e6229a
commit 01b890f426
11 changed files with 493 additions and 449 deletions

View File

@@ -4,13 +4,22 @@ from unittest.mock import Mock, patch
import pytest
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.components.unifi.const import CONF_CONTROLLER, CONF_SITE_ID
from homeassistant.components.unifi.const import (
CONF_CONTROLLER, CONF_SITE_ID, UNIFI_CONFIG)
from homeassistant.const import (
CONF_HOST, CONF_PASSWORD, CONF_PORT, CONF_USERNAME, CONF_VERIFY_SSL)
from homeassistant.components.unifi import controller, errors
from tests.common import mock_coro
CONTROLLER_SITES = {
'site1': {
'desc': 'nice name',
'name': 'site',
'role': 'admin'
}
}
CONTROLLER_DATA = {
CONF_HOST: '1.2.3.4',
CONF_USERNAME: 'username',
@@ -28,10 +37,12 @@ ENTRY_CONFIG = {
async def test_controller_setup():
"""Successful setup."""
hass = Mock()
hass.data = {UNIFI_CONFIG: {}}
entry = Mock()
entry.data = ENTRY_CONFIG
api = Mock()
api.initialize.return_value = mock_coro(True)
api.sites.return_value = mock_coro(CONTROLLER_SITES)
unifi_controller = controller.UniFiController(hass, entry)
@@ -40,8 +51,10 @@ async def test_controller_setup():
assert await unifi_controller.async_setup() is True
assert unifi_controller.api is api
assert len(hass.config_entries.async_forward_entry_setup.mock_calls) == 1
assert len(hass.config_entries.async_forward_entry_setup.mock_calls) == 2
assert hass.config_entries.async_forward_entry_setup.mock_calls[0][1] == \
(entry, 'device_tracker')
assert hass.config_entries.async_forward_entry_setup.mock_calls[1][1] == \
(entry, 'switch')
@@ -53,12 +66,24 @@ async def test_controller_host():
unifi_controller = controller.UniFiController(hass, entry)
assert unifi_controller.host == '1.2.3.4'
assert unifi_controller.host == CONTROLLER_DATA[CONF_HOST]
async def test_controller_site():
"""Config entry site and controller site are the same."""
hass = Mock()
entry = Mock()
entry.data = ENTRY_CONFIG
unifi_controller = controller.UniFiController(hass, entry)
assert unifi_controller.site == CONTROLLER_DATA[CONF_SITE_ID]
async def test_controller_mac():
"""Test that it is possible to identify controller mac."""
hass = Mock()
hass.data = {UNIFI_CONFIG: {}}
entry = Mock()
entry.data = ENTRY_CONFIG
client = Mock()
@@ -67,6 +92,7 @@ async def test_controller_mac():
api = Mock()
api.initialize.return_value = mock_coro(True)
api.clients = {'client1': client}
api.sites.return_value = mock_coro(CONTROLLER_SITES)
unifi_controller = controller.UniFiController(hass, entry)
@@ -80,6 +106,7 @@ async def test_controller_mac():
async def test_controller_no_mac():
"""Test that it works to not find the controllers mac."""
hass = Mock()
hass.data = {UNIFI_CONFIG: {}}
entry = Mock()
entry.data = ENTRY_CONFIG
client = Mock()
@@ -87,6 +114,7 @@ async def test_controller_no_mac():
api = Mock()
api.initialize.return_value = mock_coro(True)
api.clients = {'client1': client}
api.sites.return_value = mock_coro(CONTROLLER_SITES)
unifi_controller = controller.UniFiController(hass, entry)
@@ -149,10 +177,12 @@ async def test_reset_if_entry_had_wrong_auth():
async def test_reset_unloads_entry_if_setup():
"""Calling reset when the entry has been setup."""
hass = Mock()
hass.data = {UNIFI_CONFIG: {}}
entry = Mock()
entry.data = ENTRY_CONFIG
api = Mock()
api.initialize.return_value = mock_coro(True)
api.sites.return_value = mock_coro(CONTROLLER_SITES)
unifi_controller = controller.UniFiController(hass, entry)
@@ -160,13 +190,13 @@ async def test_reset_unloads_entry_if_setup():
return_value=mock_coro(api)):
assert await unifi_controller.async_setup() is True
assert len(hass.config_entries.async_forward_entry_setup.mock_calls) == 1
assert len(hass.config_entries.async_forward_entry_setup.mock_calls) == 2
hass.config_entries.async_forward_entry_unload.return_value = \
mock_coro(True)
assert await unifi_controller.async_reset()
assert len(hass.config_entries.async_forward_entry_unload.mock_calls) == 1
assert len(hass.config_entries.async_forward_entry_unload.mock_calls) == 2
async def test_get_controller(hass):