Refactored unit tests for special functions
This commit is contained in:
+83
-104
@@ -2,9 +2,8 @@
|
||||
|
||||
import unittest
|
||||
from unittest import mock
|
||||
import random
|
||||
import pytest
|
||||
from blinkpy import blinkpy as blinkpy
|
||||
from blinkpy import blinkpy
|
||||
from blinkpy.helpers.constants import BLINK_URL
|
||||
import tests.mock_responses as mresp
|
||||
|
||||
USERNAME = 'foobar'
|
||||
@@ -18,8 +17,12 @@ class TestBlinkFunctions(unittest.TestCase):
|
||||
"""Set up Blink module."""
|
||||
self.blink = blinkpy.Blink(username=USERNAME,
|
||||
password=PASSWORD)
|
||||
self.blink.get_auth_token()
|
||||
self.urls = blinkpy.BlinkURLHandler('test')
|
||||
# pylint: disable=protected-access
|
||||
self.blink._auth_header = {
|
||||
'Host': 'test.url.tld',
|
||||
'TOKEN_AUTH': 'foobar123'
|
||||
}
|
||||
self.blink.urls = blinkpy.BlinkURLHandler('test')
|
||||
self.config = {
|
||||
'device_id': 1111,
|
||||
'name': 'foobar',
|
||||
@@ -29,116 +32,92 @@ class TestBlinkFunctions(unittest.TestCase):
|
||||
'temp': 80,
|
||||
'battery': 3,
|
||||
'notifications': 2,
|
||||
'region_id': 'test'
|
||||
'region_id': 'test',
|
||||
'device_type': 'camera'
|
||||
}
|
||||
self.camera = blinkpy.BlinkCamera(self.config, self.blink)
|
||||
|
||||
def tearDown(self):
|
||||
"""Clean up after test."""
|
||||
self.blink = None
|
||||
self.urls = None
|
||||
self.config = {}
|
||||
self.camera = 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)
|
||||
@pytest.mark.skip(reason="Need to simplify")
|
||||
def test_take_new_picture(self, mock_get, mock_post):
|
||||
"""Checks if we can take a new picture and retrieve the thumbnail."""
|
||||
self.blink.setup_system()
|
||||
test_cameras = {} # mresp.get_test_cameras(self.test_urls.base_url)
|
||||
test_thumbnail = ''
|
||||
# self.test_urls.base_url + mresp.NEW_THUMBNAIL + '.jpg'
|
||||
# Snap picture for each camera and check new thumb
|
||||
for camera_name in test_cameras:
|
||||
camera = self.blink.cameras[camera_name]
|
||||
camera.snap_picture()
|
||||
camera.image_refresh()
|
||||
self.assertEqual(camera.thumbnail, test_thumbnail)
|
||||
@mock.patch('blinkpy.blinkpy._request')
|
||||
def test_get_videos(self, req):
|
||||
"""Test video access."""
|
||||
req.return_value = [
|
||||
{
|
||||
'camera_name': 'foobar',
|
||||
'address': '/new/test.mp4',
|
||||
'thumbnail': '/test/thumb'
|
||||
}
|
||||
]
|
||||
self.blink.get_videos()
|
||||
self.assertEqual(self.blink.videos['foobar'][0]['clip'],
|
||||
'/new/test.mp4')
|
||||
self.assertEqual(self.blink.videos['foobar'][0]['thumb'],
|
||||
'/test/thumb')
|
||||
|
||||
# Manually set thumbnail, and then globally refresh and check
|
||||
for camera_name in test_cameras:
|
||||
camera = self.blink.cameras[camera_name]
|
||||
camera.thumbnail = 'Testing'
|
||||
self.assertEqual(camera.thumbnail, 'Testing')
|
||||
@mock.patch('blinkpy.blinkpy._request')
|
||||
def test_get_cameras(self, req):
|
||||
"""Test camera extraction."""
|
||||
req.return_value = {'devices': [self.config]}
|
||||
self.blink.get_cameras()
|
||||
self.assertTrue('foobar' in self.blink.cameras)
|
||||
|
||||
@mock.patch('blinkpy.blinkpy._request')
|
||||
def test_image_refresh(self, req):
|
||||
"""Test image refresh function."""
|
||||
req.return_value = {'devices': [self.config]}
|
||||
image = self.camera.image_refresh()
|
||||
self.assertEqual(image,
|
||||
'https://rest.test.{}/test.jpg'.format(BLINK_URL))
|
||||
|
||||
@mock.patch('blinkpy.blinkpy._request')
|
||||
def test_video_count(self, req):
|
||||
"""Test video count function."""
|
||||
req.return_value = {'count': 1}
|
||||
self.assertEqual(self.blink.video_count, 1)
|
||||
|
||||
@mock.patch('blinkpy.blinkpy._request')
|
||||
@mock.patch('blinkpy.blinkpy.Blink._video_request')
|
||||
def test_refresh(self, vid_req, req):
|
||||
"""Test blinkpy refresh function."""
|
||||
self.blink.cameras = {'foobar': self.camera}
|
||||
req.return_value = {'devices': [self.config]}
|
||||
vid_req.return_value = [
|
||||
{
|
||||
'camera_name': 'foobar',
|
||||
'address': '/new.mp4',
|
||||
'thumbnail': '/new'
|
||||
}
|
||||
]
|
||||
self.blink.refresh()
|
||||
for camera_name in test_cameras:
|
||||
camera = self.blink.cameras[camera_name]
|
||||
self.assertEqual(camera.thumbnail, test_thumbnail)
|
||||
test_camera = self.blink.cameras['foobar']
|
||||
self.assertEqual(test_camera.clip,
|
||||
'https://rest.test.{}/new.mp4'.format(BLINK_URL))
|
||||
self.assertEqual(test_camera.thumbnail,
|
||||
'https://rest.test.{}/new.jpg'.format(BLINK_URL))
|
||||
|
||||
@mock.patch('blinkpy.blinkpy.requests.post',
|
||||
side_effect=mresp.mocked_requests_post)
|
||||
@mock.patch('blinkpy.blinkpy.requests.get',
|
||||
side_effect=mresp.mocked_requests_get)
|
||||
@pytest.mark.skip(reason="Need to simplify")
|
||||
def test_image_with_bad_data(self, mock_get, mock_post):
|
||||
"""Checks for handling of bad keys."""
|
||||
self.blink.setup_system()
|
||||
for camera_name in self.blink.cameras:
|
||||
camera = self.blink.cameras[camera_name]
|
||||
camera.snap_picture()
|
||||
camera.urls.home_url = "use_bad_response"
|
||||
self.assertEqual(camera.image_refresh(), None)
|
||||
def test_set_links(self):
|
||||
"""Test the link set method."""
|
||||
self.blink.cameras = {'foobar': self.camera}
|
||||
self.blink.network_id = 9999
|
||||
self.blink.set_links()
|
||||
net_url = "{}/{}".format(self.blink.urls.network_url, 9999)
|
||||
self.assertEqual(self.camera.image_link,
|
||||
"{}/camera/1111/thumbnail".format(net_url))
|
||||
self.assertEqual(self.camera.arm_link,
|
||||
"{}/camera/1111/".format(net_url))
|
||||
|
||||
@mock.patch('blinkpy.blinkpy.requests.post',
|
||||
side_effect=mresp.mocked_requests_post)
|
||||
@mock.patch('blinkpy.blinkpy.requests.get',
|
||||
side_effect=mresp.mocked_requests_get)
|
||||
@pytest.mark.skip(reason="Need to simplify")
|
||||
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)
|
||||
|
||||
@mock.patch('blinkpy.blinkpy.requests.post',
|
||||
side_effect=mresp.mocked_requests_post)
|
||||
@mock.patch('blinkpy.blinkpy.requests.get',
|
||||
side_effect=mresp.mocked_requests_get)
|
||||
@pytest.mark.skip(reason="Need to simplify")
|
||||
def test_camera_thumbs(self, mock_get, mock_post):
|
||||
"""Checks to see if we can retrieve camera thumbs."""
|
||||
test_cameras = {} # mresp.get_test_cameras(self.test_urls.base_url)
|
||||
self.blink.setup_system()
|
||||
for name in self.blink.cameras:
|
||||
thumb = self.blink.camera_thumbs[name]
|
||||
self.assertEqual(test_cameras[name]['thumbnail'], thumb)
|
||||
|
||||
|
||||
# pylint: disable=pointless-string-statement
|
||||
'''
|
||||
@mock.patch('blinkpy.blinkpy.copyfileobj',
|
||||
side_effect=mresp.mocked_copyfileobj)
|
||||
@mock.patch('blinkpy.blinkpy.requests.post',
|
||||
side_effect=mresp.mocked_requests_post)
|
||||
@mock.patch('blinkpy.blinkpy.requests.get',
|
||||
side_effect=mresp.mocked_requests_get)
|
||||
@pytest.mark.skip(reason="Need to simplify")
|
||||
def test_image_to_file(self, mock_get, mock_post, mock_copyfileobj):
|
||||
"""Checks that we can write an image to file."""
|
||||
self.blink.setup_system()
|
||||
cameras = self.blink.cameras
|
||||
filename = '/tmp/test.jpg'
|
||||
test_files = list()
|
||||
for camera_name in cameras:
|
||||
camera = cameras[camera_name]
|
||||
test_files.append(mresp.MOCK_BYTES)
|
||||
mock_fh = mock.mock_open()
|
||||
with mock.patch('builtins.open', mock_fh, create=True):
|
||||
camera.image_to_file(camera_name + filename)
|
||||
mock_fh.assert_called_once_with(camera_name + filename, 'wb')
|
||||
self.assertEqual(test_files, mresp.FAKE_FILES)
|
||||
'''
|
||||
@mock.patch('blinkpy.blinkpy._request')
|
||||
def test_backup_url(self, req):
|
||||
"""Test backup login method."""
|
||||
req.side_effect = [
|
||||
mresp.mocked_requests_post(None),
|
||||
{'authtoken': {'authtoken': 'foobar123'}}
|
||||
]
|
||||
self.blink.get_auth_token()
|
||||
self.assertEqual(self.blink.region_id, 'piri')
|
||||
self.assertEqual(self.blink.region, 'UNKNOWN')
|
||||
|
||||
Reference in New Issue
Block a user