From 24630b1ebe2aeaf929aec32a8c656d3877e0769d Mon Sep 17 00:00:00 2001 From: Caleb Date: Fri, 10 Mar 2017 04:15:21 -0600 Subject: [PATCH] Update to Pyunifi2.0 (#6490) * Updated pyUnifi * Missing comma * Security opt-out, not opt-in * Adjust minimal values * Update to pyUnifi 2.0 --- homeassistant/components/device_tracker/unifi.py | 11 ++++++++--- requirements_all.txt | 5 +---- tests/components/device_tracker/test_unifi.py | 9 ++++++--- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/device_tracker/unifi.py b/homeassistant/components/device_tracker/unifi.py index fa6668638f5..e46abda08d0 100644 --- a/homeassistant/components/device_tracker/unifi.py +++ b/homeassistant/components/device_tracker/unifi.py @@ -13,13 +13,15 @@ import homeassistant.loader as loader from homeassistant.components.device_tracker import ( DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_USERNAME, CONF_PASSWORD +from homeassistant.const import CONF_VERIFY_SSL # Unifi package doesn't list urllib3 as a requirement -REQUIREMENTS = ['urllib3', 'pyunifi==1.3'] +REQUIREMENTS = ['pyunifi==2.0'] _LOGGER = logging.getLogger(__name__) CONF_PORT = 'port' CONF_SITE_ID = 'site_id' +DEFAULT_VERIFY_SSL = True NOTIFICATION_ID = 'unifi_notification' NOTIFICATION_TITLE = 'Unifi Device Tracker Setup' @@ -29,7 +31,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_SITE_ID, default='default'): cv.string, vol.Required(CONF_PASSWORD): cv.string, vol.Required(CONF_USERNAME): cv.string, - vol.Required(CONF_PORT, default=8443): cv.port + vol.Required(CONF_PORT, default=8443): cv.port, + vol.Optional(CONF_VERIFY_SSL, default=DEFAULT_VERIFY_SSL): cv.boolean, }) @@ -42,10 +45,12 @@ def get_scanner(hass, config): password = config[DOMAIN].get(CONF_PASSWORD) site_id = config[DOMAIN].get(CONF_SITE_ID) port = config[DOMAIN].get(CONF_PORT) + verify_ssl = config[DOMAIN].get(CONF_VERIFY_SSL) persistent_notification = loader.get_component('persistent_notification') try: - ctrl = Controller(host, username, password, port, 'v4', site_id) + ctrl = Controller(host, username, password, port, version='v4', + site_id=site_id, ssl_verify=verify_ssl) except urllib.error.HTTPError as ex: _LOGGER.error('Failed to connect to Unifi: %s', ex) persistent_notification.create( diff --git a/requirements_all.txt b/requirements_all.txt index 82d417a1e98..eca5583fad7 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -624,7 +624,7 @@ python-wink==1.1.1 pytrackr==0.0.5 # homeassistant.components.device_tracker.unifi -pyunifi==1.3 +pyunifi==2.0 # homeassistant.components.keyboard # pyuserinput==0.1.11 @@ -737,9 +737,6 @@ uber_rides==0.2.7 # homeassistant.components.sensor.ups upsmychoice==1.0.1 -# homeassistant.components.device_tracker.unifi -urllib3 - # homeassistant.components.camera.uvc uvcclient==0.10.0 diff --git a/tests/components/device_tracker/test_unifi.py b/tests/components/device_tracker/test_unifi.py index 12d296959dc..37f92e99e22 100644 --- a/tests/components/device_tracker/test_unifi.py +++ b/tests/components/device_tracker/test_unifi.py @@ -9,7 +9,7 @@ import voluptuous as vol from tests.common import get_test_home_assistant from homeassistant.components.device_tracker import DOMAIN, unifi as unifi from homeassistant.const import (CONF_HOST, CONF_USERNAME, CONF_PASSWORD, - CONF_PLATFORM) + CONF_PLATFORM, CONF_VERIFY_SSL) class TestUnifiScanner(unittest.TestCase): @@ -39,7 +39,8 @@ class TestUnifiScanner(unittest.TestCase): self.assertEqual(mock_ctrl.call_count, 1) self.assertEqual( mock_ctrl.call_args, - mock.call('localhost', 'foo', 'password', 8443, 'v4', 'default') + mock.call('localhost', 'foo', 'password', 8443, + version='v4', site_id='default', ssl_verify=True) ) self.assertEqual(mock_scanner.call_count, 1) self.assertEqual( @@ -57,6 +58,7 @@ class TestUnifiScanner(unittest.TestCase): CONF_USERNAME: 'foo', CONF_PASSWORD: 'password', CONF_HOST: 'myhost', + CONF_VERIFY_SSL: False, 'port': 123, 'site_id': 'abcdef01', }) @@ -66,7 +68,8 @@ class TestUnifiScanner(unittest.TestCase): self.assertEqual(mock_ctrl.call_count, 1) self.assertEqual( mock_ctrl.call_args, - mock.call('myhost', 'foo', 'password', 123, 'v4', 'abcdef01') + mock.call('myhost', 'foo', 'password', 123, + version='v4', site_id='abcdef01', ssl_verify=False) ) self.assertEqual(mock_scanner.call_count, 1) self.assertEqual(