[device_traker/upc] New UPC connect box platform (#5100)
This commit is contained in:
parent
3ed7c1c6ad
commit
bb02fc707c
4 changed files with 467 additions and 7 deletions
|
@ -14,6 +14,7 @@ class AiohttpClientMocker:
|
|||
def __init__(self):
|
||||
"""Initialize the request mocker."""
|
||||
self._mocks = []
|
||||
self._cookies = {}
|
||||
self.mock_calls = []
|
||||
|
||||
def request(self, method, url, *,
|
||||
|
@ -25,7 +26,8 @@ class AiohttpClientMocker:
|
|||
json=None,
|
||||
params=None,
|
||||
headers=None,
|
||||
exc=None):
|
||||
exc=None,
|
||||
cookies=None):
|
||||
"""Mock a request."""
|
||||
if json:
|
||||
text = _json.dumps(json)
|
||||
|
@ -35,11 +37,11 @@ class AiohttpClientMocker:
|
|||
content = b''
|
||||
if params:
|
||||
url = str(yarl.URL(url).with_query(params))
|
||||
|
||||
self.exc = exc
|
||||
if cookies:
|
||||
self._cookies.update(cookies)
|
||||
|
||||
self._mocks.append(AiohttpClientMockResponse(
|
||||
method, url, status, content))
|
||||
method, url, status, content, exc))
|
||||
|
||||
def get(self, *args, **kwargs):
|
||||
"""Register a mock get request."""
|
||||
|
@ -66,6 +68,16 @@ class AiohttpClientMocker:
|
|||
"""Number of requests made."""
|
||||
return len(self.mock_calls)
|
||||
|
||||
def filter_cookies(self, host):
|
||||
"""Return hosts cookies."""
|
||||
return self._cookies
|
||||
|
||||
def clear_requests(self):
|
||||
"""Reset mock calls."""
|
||||
self._mocks.clear()
|
||||
self._cookies.clear()
|
||||
self.mock_calls.clear()
|
||||
|
||||
@asyncio.coroutine
|
||||
def match_request(self, method, url, *, data=None, auth=None, params=None,
|
||||
headers=None): # pylint: disable=unused-variable
|
||||
|
@ -74,8 +86,8 @@ class AiohttpClientMocker:
|
|||
if response.match_request(method, url, params):
|
||||
self.mock_calls.append((method, url, data))
|
||||
|
||||
if self.exc:
|
||||
raise self.exc
|
||||
if response.exc:
|
||||
raise response.exc
|
||||
return response
|
||||
|
||||
assert False, "No mock registered for {} {} {}".format(method.upper(),
|
||||
|
@ -85,7 +97,7 @@ class AiohttpClientMocker:
|
|||
class AiohttpClientMockResponse:
|
||||
"""Mock Aiohttp client response."""
|
||||
|
||||
def __init__(self, method, url, status, response):
|
||||
def __init__(self, method, url, status, response, exc=None):
|
||||
"""Initialize a fake response."""
|
||||
self.method = method
|
||||
self._url = url
|
||||
|
@ -93,6 +105,7 @@ class AiohttpClientMockResponse:
|
|||
else urlparse(url.lower()))
|
||||
self.status = status
|
||||
self.response = response
|
||||
self.exc = exc
|
||||
|
||||
def match_request(self, method, url, params=None):
|
||||
"""Test if response answers request."""
|
||||
|
@ -155,4 +168,6 @@ def mock_aiohttp_client():
|
|||
setattr(instance, method,
|
||||
functools.partial(mocker.match_request, method))
|
||||
|
||||
instance.cookie_jar.filter_cookies = mocker.filter_cookies
|
||||
|
||||
yield mocker
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue