More test coverage
This commit is contained in:
@@ -132,3 +132,59 @@ class TestBlinkSetup(unittest.TestCase):
|
||||
mock_networks.return_value = {}
|
||||
with self.assertRaises(BlinkSetupError):
|
||||
self.blink.setup_networks()
|
||||
|
||||
@mock.patch("blinkpy.blinkpy.Auth.send_auth_key")
|
||||
def test_setup_prompt_2fa(self, mock_key):
|
||||
"""Test setup with 2fa prompt."""
|
||||
self.blink.auth.data["username"] = "foobar"
|
||||
self.blink.key_required = True
|
||||
mock_key.return_value = True
|
||||
with mock.patch("builtins.input", return_value="foo"):
|
||||
self.blink.setup_prompt_2fa()
|
||||
self.assertFalse(self.blink.key_required)
|
||||
mock_key.return_value = False
|
||||
with mock.patch("builtins.input", return_value="foo"):
|
||||
self.blink.setup_prompt_2fa()
|
||||
self.assertTrue(self.blink.key_required)
|
||||
|
||||
@mock.patch("blinkpy.blinkpy.Blink.setup_camera_list")
|
||||
@mock.patch("blinkpy.api.request_networks")
|
||||
def test_setup_post_verify(self, mock_networks, mock_camera):
|
||||
"""Test setup after verification."""
|
||||
self.blink.available = False
|
||||
self.blink.key_required = True
|
||||
mock_networks.return_value = {
|
||||
"summary": {"foo": {"onboarded": False, "name": "bar"}}
|
||||
}
|
||||
mock_camera.return_value = []
|
||||
self.assertTrue(self.blink.setup_post_verify())
|
||||
self.assertTrue(self.blink.available)
|
||||
self.assertFalse(self.blink.key_required)
|
||||
|
||||
@mock.patch("blinkpy.api.request_networks")
|
||||
def test_setup_post_verify_failure(self, mock_networks):
|
||||
"""Test failed setup after verification."""
|
||||
self.blink.available = False
|
||||
mock_networks.return_value = {}
|
||||
self.assertFalse(self.blink.setup_post_verify())
|
||||
self.assertFalse(self.blink.available)
|
||||
|
||||
def test_merge_cameras(self):
|
||||
"""Test merging of cameras."""
|
||||
self.blink.sync = {
|
||||
"foo": MockSync({"test": 123, "foo": "bar"}),
|
||||
"bar": MockSync({"fizz": "buzz", "bar": "foo"}),
|
||||
}
|
||||
combined = self.blink.merge_cameras()
|
||||
self.assertEqual(combined["test"], 123)
|
||||
self.assertEqual(combined["foo"], "bar")
|
||||
self.assertEqual(combined["fizz"], "buzz")
|
||||
self.assertEqual(combined["bar"], "foo")
|
||||
|
||||
|
||||
class MockSync:
|
||||
"""Mock sync module class."""
|
||||
|
||||
def __init__(self, cameras):
|
||||
"""Initialize fake class."""
|
||||
self.cameras = cameras
|
||||
|
||||
@@ -143,3 +143,12 @@ class TestBlinkCameraSetup(unittest.TestCase):
|
||||
self.camera.update(config, force_cache=True)
|
||||
self.assertEqual(self.camera.clip, None)
|
||||
self.assertEqual(self.camera.video_from_cache, None)
|
||||
|
||||
@mock.patch("blinkpy.camera.api.request_motion_detection_enable")
|
||||
@mock.patch("blinkpy.camera.api.request_motion_detection_disable")
|
||||
def test_motion_detection_enable_disable(self, mock_dis, mock_en, mock_rep):
|
||||
"""Test setting motion detection enable properly."""
|
||||
mock_dis.return_value = "disable"
|
||||
mock_en.return_value = "enable"
|
||||
self.assertEqual(self.camera.set_motion_detect(True), "enable")
|
||||
self.assertEqual(self.camera.set_motion_detect(False), "disable")
|
||||
|
||||
@@ -65,11 +65,27 @@ class TestBlinkSyncModule(unittest.TestCase):
|
||||
mock_resp.return_value = {"event": True}
|
||||
self.assertEqual(self.blink.sync["test"].get_events(), True)
|
||||
|
||||
def test_get_events_fail(self, mock_resp):
|
||||
"""Test handling of failed get events function."""
|
||||
mock_resp.return_value = None
|
||||
self.assertFalse(self.blink.sync["test"].get_events())
|
||||
mock_resp.return_value = {}
|
||||
self.assertFalse(self.blink.sync["test"].get_events())
|
||||
|
||||
def test_get_camera_info(self, mock_resp):
|
||||
"""Test get camera info function."""
|
||||
mock_resp.return_value = {"camera": ["foobar"]}
|
||||
self.assertEqual(self.blink.sync["test"].get_camera_info("1234"), "foobar")
|
||||
|
||||
def test_get_camera_info_fail(self, mock_resp):
|
||||
"""Test hadnling of failed get camera info function."""
|
||||
mock_resp.return_value = None
|
||||
self.assertEqual(self.blink.sync["test"].get_camera_info("1"), [])
|
||||
mock_resp.return_value = {}
|
||||
self.assertEqual(self.blink.sync["test"].get_camera_info("1"), [])
|
||||
mock_resp.return_value = {"camera": None}
|
||||
self.assertEqual(self.blink.sync["test"].get_camera_info("1"), [])
|
||||
|
||||
def test_check_new_videos_startup(self, mock_resp):
|
||||
"""Test that check_new_videos does not block startup."""
|
||||
sync_module = self.blink.sync["test"]
|
||||
@@ -236,3 +252,8 @@ class TestBlinkSyncModule(unittest.TestCase):
|
||||
self.mock_start[5] = {}
|
||||
self.blink.sync["test"].start()
|
||||
self.assertEqual(self.blink.sync["test"].cameras, {"foo": None})
|
||||
|
||||
def test_sync_attributes(self, mock_resp):
|
||||
"""Test sync attributes."""
|
||||
self.assertEqual(self.blink.sync["test"].attributes["name"], "test")
|
||||
self.assertEqual(self.blink.sync["test"].attributes["network_id"], "1234")
|
||||
|
||||
+7
-1
@@ -3,7 +3,7 @@
|
||||
import unittest
|
||||
from unittest import mock
|
||||
import time
|
||||
from blinkpy.helpers.util import Throttle, time_to_seconds
|
||||
from blinkpy.helpers.util import json_load, Throttle, time_to_seconds
|
||||
|
||||
|
||||
class TestUtil(unittest.TestCase):
|
||||
@@ -107,3 +107,9 @@ class TestUtil(unittest.TestCase):
|
||||
wrong_time = "1/1/1970 00:00:03"
|
||||
self.assertEqual(time_to_seconds(correct_time), 5)
|
||||
self.assertFalse(time_to_seconds(wrong_time))
|
||||
|
||||
def test_json_load_bad_data(self):
|
||||
"""Check that bad file is handled."""
|
||||
self.assertEqual(json_load("fake.file"), None)
|
||||
with mock.patch("builtins.open", mock.mock_open(read_data="")):
|
||||
self.assertEqual(json_load("fake.file"), None)
|
||||
|
||||
Reference in New Issue
Block a user