Skip to content

Commit

Permalink
add make_mocked_request to test_utils
Browse files Browse the repository at this point in the history
  • Loading branch information
nickolai-dr committed Jun 2, 2016
1 parent c059e0b commit 1215f5d
Showing 1 changed file with 73 additions and 0 deletions.
73 changes: 73 additions & 0 deletions aiohttp/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,15 @@

import asyncio
import aiohttp

from aiohttp import server
from aiohttp import helpers
from multidict import CIMultiDict
from unittest import mock

from aiohttp.protocol import HttpVersion
from aiohttp.protocol import RawRequestMessage
from aiohttp.signals import Signal


def run_briefly(loop):
Expand Down Expand Up @@ -304,3 +311,69 @@ def _response(self, response, body=None,
# keep-alive
if response.keep_alive():
self._srv.keep_alive(True)


def _create_app_mock():
app = mock.Mock()
app._debug = False
app.on_response_prepare = Signal(app)
return app


def _create_transport(sslcontext=None):
transport = mock.Mock()

def get_extra_info(key):
if key == 'sslcontext':
return sslcontext
else:
return None

transport.get_extra_info.side_effect = get_extra_info
return transport


_not_set = object()


def make_mocked_request(method, path, headers=CIMultiDict(), *,
version=HttpVersion(1, 1), closing=False,
app=None,
reader=_not_set,
writer=_not_set,
transport=_not_set,
payload=_not_set,
sslcontext=None,
secure_proxy_ssl_header=None):

if version < HttpVersion(1, 1):
closing = True
message = RawRequestMessage(method, path, version, headers,
[(k.encode('utf-8'), v.encode('utf-8'))
for k, v in headers.items()],
closing, False)
if app is None:
app = _create_app_mock()

if reader is _not_set:
reader = mock.Mock()

if writer is _not_set:
writer = mock.Mock()

if transport is _not_set:
transport = _create_transport(sslcontext)

if payload is _not_set:
payload = mock.Mock()

from .web import Request
req = Request(app, message, payload,
transport, reader, writer,
secure_proxy_ssl_header=secure_proxy_ssl_header)

assert req.app is app
assert req.content is payload
assert req.transport is transport

return req

0 comments on commit 1215f5d

Please sign in to comment.