70 lines
2.0 KiB
Python
70 lines
2.0 KiB
Python
"""Simple mock responses definitions."""
|
|
|
|
from blinkpy.helpers.util import BlinkURLHandler
|
|
import blinkpy.helpers.constants as const
|
|
|
|
LOGIN_RESPONSE = {
|
|
'region': {'mock': 'Test'},
|
|
'networks': {
|
|
'1234': {'name': 'test', 'onboarded': True}
|
|
},
|
|
'authtoken': {'authtoken': 'foobar123', 'message': 'auth'}
|
|
}
|
|
|
|
|
|
class MockResponse:
|
|
"""Class for mock request response."""
|
|
|
|
def __init__(self, json_data, status_code, raw_data=None):
|
|
"""Initialize mock get response."""
|
|
self.json_data = json_data
|
|
self.status_code = status_code
|
|
self.raw_data = raw_data
|
|
|
|
def json(self):
|
|
"""Return json data from get_request."""
|
|
return self.json_data
|
|
|
|
@property
|
|
def raw(self):
|
|
"""Return raw data from get request."""
|
|
return self.raw_data
|
|
|
|
|
|
def mocked_session_send(*args, **kwargs):
|
|
"""Mock session."""
|
|
prepped = args[0]
|
|
url = prepped.url
|
|
header = prepped.headers
|
|
method = prepped.method
|
|
if method == 'GET':
|
|
expected_token = LOGIN_RESPONSE['authtoken']['authtoken']
|
|
if header['TOKEN_AUTH'] != expected_token:
|
|
response = {'message': 'Not Authorized', 'code': 400}
|
|
status = 400
|
|
elif url == 'use_bad_response':
|
|
response = {'foo': 'bar'}
|
|
status = 200
|
|
elif url == 'reauth':
|
|
response = {'message': 'REAUTH', 'code': 777}
|
|
status = 777
|
|
else:
|
|
response = {'test': 'foo'}
|
|
status = 200
|
|
elif method == 'POST':
|
|
if url in (const.LOGIN_URL, const.LOGIN_BACKUP_URL):
|
|
response = LOGIN_RESPONSE
|
|
status = 200
|
|
elif url == 'http://wrong.url/' or url is None:
|
|
response = {'message': 'Error', 'code': 404}
|
|
status = 404
|
|
else:
|
|
response = {'message': 'foo', 'code': 200}
|
|
status = 200
|
|
|
|
return MockResponse(response, status)
|
|
|
|
|
|
class MockURLHandler(BlinkURLHandler):
|
|
"""Mocks URL Handler in blinkpy module."""
|