From be68c0d714aa79618c3aa09f70588b0d02a621cd Mon Sep 17 00:00:00 2001 From: Kevin Fronczak Date: Sun, 18 Jun 2017 18:37:19 -0400 Subject: [PATCH] Added case handling on camera dict --- CHANGES.rst | 1 + blinkpy.py | 3 ++- helpers/__init__.py | 2 +- tests/test_blink_functions.py | 21 +++++++++++++++++++++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 3452982..97a1dfb 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -6,6 +6,7 @@ A list of changes between each release 0.7.0.dev (development version) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Fixed style errors for bumped pydocstring and pylint versions +- Changed Blink.cameras dictionary to be case-insensitive (fixes #35) 0.6.0 (2017-05-12) ^^^^^^^^^^^^^^^^^^ diff --git a/blinkpy.py b/blinkpy.py index 12cdd67..2ce09da 100644 --- a/blinkpy.py +++ b/blinkpy.py @@ -16,6 +16,7 @@ import json import getpass from shutil import copyfileobj import requests +from requests.structures import CaseInsensitiveDict import helpers.errors as ERROR from helpers.constants import (BLINK_URL, LOGIN_URL, LOGIN_BACKUP_URL, @@ -186,7 +187,7 @@ class Blink(object): self.region_id = None self._host = None self._events = [] - self.cameras = {} + self.cameras = CaseInsensitiveDict({}) self._idlookup = {} self.urls = None diff --git a/helpers/__init__.py b/helpers/__init__.py index 0a53750..e74901c 100644 --- a/helpers/__init__.py +++ b/helpers/__init__.py @@ -1,3 +1,3 @@ """Init file for blinkpy helper functions.""" from helpers import constants -from helpers import errors \ No newline at end of file +from helpers import errors diff --git a/tests/test_blink_functions.py b/tests/test_blink_functions.py index cb2ba8b..be4c49f 100644 --- a/tests/test_blink_functions.py +++ b/tests/test_blink_functions.py @@ -2,6 +2,7 @@ import unittest from unittest import mock +import random import blinkpy import tests.mock_responses as mresp @@ -120,6 +121,26 @@ class TestBlinkFunctions(unittest.TestCase): camera.urls.home_url = "use_bad_response" self.assertEqual(camera.image_refresh(), None) + @mock.patch('blinkpy.blinkpy.requests.post', + side_effect=mresp.mocked_requests_post) + @mock.patch('blinkpy.blinkpy.requests.get', + side_effect=mresp.mocked_requests_get) + def test_camera_random_case(self, mock_get, mock_post): + """Checks for case of camera name.""" + self.blink.setup_system() + for camera_name in self.blink.cameras: + + rand_name = camera_name + # Make sure we never pass this test if rand_name = camera_name + while rand_name == camera_name: + rand_name = ''.join( + random.choice( + (str.upper, str.lower) + )(x) for x in camera_name) + + self.assertEqual(self.blink.cameras[camera_name].name, + self.blink.cameras[rand_name].name) + def test_camera_update(self): """Checks that the update function is doing the right thing.""" self.test_urls = blinkpy.BlinkURLHandler('test')