Add unit tests for new methods
This commit is contained in:
@@ -129,9 +129,9 @@ class LoginHandler:
|
||||
try:
|
||||
json_resp = response.json()
|
||||
blink.available = json_resp["valid"]
|
||||
except KeyError:
|
||||
return False
|
||||
except (KeyError, TypeError):
|
||||
_LOGGER.error("Did not receive valid response from server.")
|
||||
return False
|
||||
return True
|
||||
|
||||
def check_key_required(self, blink):
|
||||
|
||||
@@ -11,6 +11,7 @@ from unittest import mock
|
||||
from blinkpy import api
|
||||
from blinkpy.blinkpy import Blink
|
||||
from blinkpy.sync_module import BlinkSyncModule
|
||||
from blinkpy.login_handler import LoginHandler
|
||||
from blinkpy.helpers.util import (
|
||||
http_req,
|
||||
create_session,
|
||||
@@ -148,3 +149,23 @@ class TestBlinkSetup(unittest.TestCase):
|
||||
mock_home.return_value = {}
|
||||
result = self.blink.get_cameras()
|
||||
self.assertEqual(result, {})
|
||||
|
||||
@mock.patch.object(LoginHandler, "send_auth_key")
|
||||
@mock.patch.object(Blink, "setup_post_verify")
|
||||
def test_startup_prompt(self, mock_send_key, mock_verify, mock_sess):
|
||||
"""Test startup logic with command-line prompt."""
|
||||
mock_send_key.return_value = True
|
||||
mock_verify.return_value = True
|
||||
self.blink.no_prompt = False
|
||||
self.blink.key_required = True
|
||||
self.blink.available = True
|
||||
with mock.patch("builtins.input", return_value="1234"):
|
||||
self.blink.start()
|
||||
self.assertFalse(self.blink.key_required)
|
||||
|
||||
def test_startup_no_prompt(self, mock_sess):
|
||||
"""Test startup with no_prompt flag set."""
|
||||
self.blink.key_required = True
|
||||
self.blink.no_prompt = True
|
||||
self.blink.start()
|
||||
self.assertTrue(self.blink.key_required)
|
||||
|
||||
@@ -68,3 +68,68 @@ class TestLoginHandler(unittest.TestCase):
|
||||
"""Check good response code from server."""
|
||||
fake_resp = mresp.MockResponse(None, 200)
|
||||
self.assertTrue(self.login_handler.validate_response(None, fake_resp))
|
||||
|
||||
@mock.patch("blinkpy.login_handler.util.gen_uid")
|
||||
def test_check_keys_no_persist(self, mock_uid, mock_sess):
|
||||
"""Check key generation."""
|
||||
uid_value = "abc123"
|
||||
mock_uid.return_value = "abc123"
|
||||
self.login_handler.persist_key = None
|
||||
data = self.login_handler.check_keys()
|
||||
self.assertEqual(data["uid"], uid_value)
|
||||
self.assertEqual(data["notification_key"], uid_value)
|
||||
|
||||
@mock.patch("blinkpy.login_handler.util.gen_uid")
|
||||
@mock.patch("blinkpy.login_handler.json.load")
|
||||
@mock.patch("blinkpy.login_handler.isfile")
|
||||
def test_check_keys_persist(self, mockisfile, mockjson, mock_uid, mock_sess):
|
||||
"""Check key load from file."""
|
||||
uid_value = "abc123"
|
||||
mock_file = {"uid": "321cba", "notification_key": "foobar123"}
|
||||
mock_uid.return_value = uid_value
|
||||
mockjson.return_value = mock_file
|
||||
mockisfile.return_value = True
|
||||
self.login_handler.persist_key = True
|
||||
data = self.login_handler.check_keys()
|
||||
self.assertEqual(mock_file["uid"], data["uid"])
|
||||
self.assertEqual(mock_file["notification_key"], data["notification_key"])
|
||||
|
||||
def test_check_key_required(self, mock_sess):
|
||||
"""Check key required method."""
|
||||
response_true = {"client": {"verification_required": True}}
|
||||
response_false = {"client": {"verification_required": False}}
|
||||
response_nokey = {}
|
||||
|
||||
mock_blink = MockBlink(response_nokey)
|
||||
self.assertFalse(self.login_handler.check_key_required(mock_blink))
|
||||
|
||||
mock_blink = MockBlink(response_false)
|
||||
self.assertFalse(self.login_handler.check_key_required(mock_blink))
|
||||
|
||||
mock_blink = MockBlink(response_true)
|
||||
self.assertTrue(self.login_handler.check_key_required(mock_blink))
|
||||
|
||||
@mock.patch("blinkpy.login_handler.api.request_verify")
|
||||
def test_send_auth_key(self, mock_req, mock_sess):
|
||||
"""Check sending of auth key."""
|
||||
mock_blink = MockBlink(None)
|
||||
mock_req.return_value = mresp.MockResponse({"valid": True}, 200)
|
||||
self.assertTrue(self.login_handler.send_auth_key(mock_blink, 1234))
|
||||
self.assertTrue(mock_blink.available)
|
||||
|
||||
mock_req.return_value = mresp.MockResponse(None, 200)
|
||||
self.assertFalse(self.login_handler.send_auth_key(mock_blink, 1234))
|
||||
|
||||
mock_req.return_value = mresp.MockResponse({}, 200)
|
||||
self.assertFalse(self.login_handler.send_auth_key(mock_blink, 1234))
|
||||
|
||||
self.assertTrue(self.login_handler.send_auth_key(mock_blink, None))
|
||||
|
||||
|
||||
class MockBlink:
|
||||
"""Object to mock basic blink class."""
|
||||
|
||||
def __init__(self, login_response):
|
||||
"""Initialize mock blink class."""
|
||||
self.available = False
|
||||
self.login_response = login_response
|
||||
|
||||
Reference in New Issue
Block a user