コード例 #1
0
    def maker(method, path, headers=CIMultiDict(), *,
              version=HttpVersion(1, 1), closing=False,
              sslcontext=None,
              secure_proxy_ssl_header=None):
        if version < HttpVersion(1, 1):
            closing = True
        app = mock.Mock()
        app._debug = False
        app.on_response_prepare = Signal(app)
        message = RawRequestMessage(method, path, version, headers,
                                    [(k.encode('utf-8'), v.encode('utf-8'))
                                     for k, v in headers.items()],
                                    closing, False)
        payload = mock.Mock()
        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
        writer = mock.Mock()
        reader = mock.Mock()
        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
コード例 #2
0
    def make_request(self,
                     method,
                     path,
                     headers=CIMultiDict(),
                     *,
                     version=HttpVersion(1, 1),
                     closing=False,
                     sslcontext=None,
                     secure_proxy_ssl_header=None):
        if version < HttpVersion(1, 1):
            closing = True
        self.app = mock.Mock()
        message = RawRequestMessage(method, path, version, headers, closing,
                                    False)
        self.payload = mock.Mock()
        self.transport = mock.Mock()

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

        self.transport.get_extra_info.side_effect = get_extra_info
        self.writer = mock.Mock()
        self.reader = mock.Mock()
        req = Request(self.app,
                      message,
                      self.payload,
                      self.transport,
                      self.reader,
                      self.writer,
                      secure_proxy_ssl_header=secure_proxy_ssl_header)
        return req
コード例 #3
0
def test_ctor(make_request):
    req = make_request('GET', '/path/to?a=1&b=2')

    assert 'GET' == req.method
    assert HttpVersion(1, 1) == req.version
    assert req.host is None
    assert '/path/to?a=1&b=2' == req.path_qs
    assert '/path/to' == req.path
    assert 'a=1&b=2' == req.query_string
    assert CIMultiDict() == req.headers
    assert () == req.raw_headers

    get = req.GET
    assert MultiDict([('a', '1'), ('b', '2')]) == get
    # second call should return the same object
    assert get is req.GET

    assert req.keep_alive

    # just make sure that all lines of make_mocked_request covered
    headers = CIMultiDict(FOO='bar')
    payload = mock.Mock()
    protocol = mock.Mock()
    app = mock.Mock()
    req = make_request('GET', '/path/to?a=1&b=2', headers=headers,
                       protocol=protocol, payload=payload, app=app)
    assert req.app is app
    assert req.content is payload
    assert req.protocol is protocol
    assert req.transport is protocol.transport
    assert req.headers == headers
    assert req.raw_headers == ((b'Foo', b'bar'),)
コード例 #4
0
 def go():
     headers = {'Connection': 'keep-alive'}  # should be ignored
     _, _, url = yield from self.create_server('GET', '/', handler)
     resp = yield from request('GET', url, loop=self.loop,
                               headers=headers,
                               version=HttpVersion(0, 9))
     self.assertNotIn('CONNECTION', resp.headers)
     resp.close()
コード例 #5
0
def test_http09_keep_alive_default(loop, test_client):
    @asyncio.coroutine
    def handler(request):
        yield from request.read()
        return web.Response()

    app = web.Application(loop=loop)
    app.router.add_get('/', handler)
    client = yield from test_client(app)

    headers = {'Connection': 'keep-alive'}  # should be ignored
    resp = yield from client.get('/',
                                 version=HttpVersion(0, 9),
                                 headers=headers)
    assert 200 == resp.status
    assert resp.version == HttpVersion(0, 9)
    assert 'Connection' not in resp.headers
コード例 #6
0
def test_keep_alive_http09():
    headers = CIMultiDict(Connection='keep-alive')
    message = RawRequestMessage('GET', '/', HttpVersion(0, 9), headers,
                                [(b'Connection', b'keep-alive')], False, False)
    req = request_from_message(message)
    resp = StreamResponse()
    yield from resp.prepare(req)
    assert not resp.keep_alive
コード例 #7
0
ファイル: test_web_response.py プロジェクト: vshulyak/aiohttp
 def test_keep_alive_http09(self):
     headers = CIMultiDict(Connection='keep-alive')
     message = RawRequestMessage('GET', '/', HttpVersion(0, 9), headers,
                                 False, False)
     req = self.request_from_message(message)
     resp = StreamResponse()
     resp.start(req)
     self.assertFalse(resp.keep_alive)
コード例 #8
0
 def make_request(self, method, path):
     self.app = mock.Mock()
     message = RawRequestMessage(method, path, HttpVersion(1, 1),
                                 MultiDict(), False, False)
     self.payload = mock.Mock()
     self.transport = mock.Mock()
     self.writer = mock.Mock()
     req = Request(self.app, message, self.payload,
                   self.transport, self.writer, 15)
     return req
コード例 #9
0
ファイル: test_web_request.py プロジェクト: jmcarp/aiohttp
 def make_request(self, method, path, headers=MultiDict(), *,
                  version=HttpVersion(1, 1), closing=False,
                  keep_alive_timeout=15):
     self.app = mock.Mock()
     message = RawRequestMessage(method, path, version, headers, closing,
                                 False)
     self.payload = mock.Mock()
     self.transport = mock.Mock()
     self.writer = mock.Mock()
     req = Request(self.app, message, self.payload,
                   self.transport, self.writer, keep_alive_timeout)
     return req
コード例 #10
0
ファイル: test_web_request.py プロジェクト: wking/aiohttp
    def test_ctor(self):
        req = self.make_request('GET', '/path/to?a=1&b=2')

        self.assertIs(self.app, req.app)
        self.assertEqual('GET', req.method)
        self.assertEqual(HttpVersion(1, 1), req.version)
        self.assertEqual(None, req.host)
        self.assertEqual('/path/to?a=1&b=2', req.path_qs)
        self.assertEqual('/path/to', req.path)
        self.assertEqual('a=1&b=2', req.query_string)
        self.assertEqual(MultiDict([('a', '1'), ('b', '2')]), req.GET)
        self.assertIs(self.payload, req.payload)
        self.assertTrue(req.keep_alive)
コード例 #11
0
ファイル: test_web_request.py プロジェクト: wking/aiohttp
 def make_request(self,
                  method,
                  path,
                  headers=MultiDict(),
                  *,
                  version=HttpVersion(1, 1),
                  closing=False):
     self.app = mock.Mock()
     message = RawRequestMessage(method, path, version, headers, closing,
                                 False)
     self.payload = mock.Mock()
     self.writer = mock.Mock()
     req = Request(self.app, message, self.payload, self.writer)
     return req
コード例 #12
0
 def setUp(self):
     self.meta = {}
     run_args = argparse.ArgumentParser()
     run_args.add_argument("--tanner")
     run_args.add_argument("--page-dir")
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     self.page_dir = self.main_page_path.rsplit('/')[-1]
     self.args = run_args.parse_args(['--page-dir', self.page_dir])
     snare.snare_uuid = (
         '9c10172f-7ce2-4fb4-b1c6-abc70141db56').encode('utf-8')
     self.handler = HttpRequestHandler(self.meta, self.args)
     self.headers = {
         'Host': 'test_host',
         'status': 200,
         'Cookie': 'sess_uuid=prev_test_uuid; test_cookie=test'
     }
     self.request = aiohttp.protocol.RawRequestMessage(
         method='POST',
         path='/',
         version=HttpVersion(major=1, minor=1),
         headers=self.headers,
         raw_headers=None,
         should_close=None,
         compression=None)
     self.response_status = "test_status"
     self.expected_data = {
         'method': 'POST',
         'path': '/',
         'headers': {
             'Host': 'test_host',
             'status': 200,
             'Cookie': 'sess_uuid=prev_test_uuid; test_cookie=test'
         },
         'uuid': '9c10172f-7ce2-4fb4-b1c6-abc70141db56',
         'peer': {
             'ip': 'test_ip',
             'port': 'test_port'
         },
         'status': 'test_status',
         'cookies': {
             'sess_uuid': 'prev_test_uuid',
             ' test_cookie': 'test'
         }
     }
     asyncio.BaseTransport = Mock()
     self.handler.transport = asyncio.BaseTransport()
     self.handler.transport.get_extra_info = Mock(
         return_value=['test_ip', 'test_port'])
コード例 #13
0
ファイル: test_web_request.py プロジェクト: jmcarp/aiohttp
    def test_ctor(self):
        req = self.make_request('GET', '/path/to?a=1&b=2')

        self.assertIs(self.app, req.app)
        self.assertEqual('GET', req.method)
        self.assertEqual(HttpVersion(1, 1), req.version)
        self.assertEqual(None, req.host)
        self.assertEqual('/path/to?a=1&b=2', req.path_qs)
        self.assertEqual('/path/to', req.path)
        self.assertEqual('a=1&b=2', req.query_string)

        get = req.GET
        self.assertEqual(MultiDict([('a', '1'), ('b', '2')]), get)
        # second call should return the same object
        self.assertIs(get, req.GET)

        self.assertIs(self.payload, req.payload)
        self.assertIs(self.transport, req.transport)
        self.assertTrue(req.keep_alive)
コード例 #14
0
def test_ctor(make_request, warning):
    req = make_request('GET', '/path/to?a=1&b=2')

    assert 'GET' == req.method
    assert HttpVersion(1, 1) == req.version
    assert req.host is None
    assert '/path/to?a=1&b=2' == req.path_qs
    assert '/path/to' == req.path
    assert 'a=1&b=2' == req.query_string

    get = req.GET
    assert MultiDict([('a', '1'), ('b', '2')]) == get
    # second call should return the same object
    assert get is req.GET

    with warning(DeprecationWarning):
        req.payload

    assert req.keep_alive
コード例 #15
0
 def setUp(self):
     self.meta = {}
     run_args = argparse.ArgumentParser()
     run_args.add_argument("--tanner")
     run_args.add_argument("--page-dir")
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     self.page_dir = self.main_page_path.rsplit('/')[-1]
     self.args = run_args.parse_args(['--page-dir', self.page_dir])
     self.loop = asyncio.new_event_loop()
     self.handler = HttpRequestHandler(self.meta, self.args)
     self.handler.run_args.server_header = "test_server"
     self.handler.run_args.slurp_enabled = True
     self.data = {
         'method': 'GET', 'path': '/',
         'headers': {
             'Host': 'test_host', 'status': 200
         },
         'cookies': {
             'sess_uuid': 'prev_test_uuid'
         }
     }
     self.content = '<html><body></body></html>'
     self.content_type = 'test_type'
     self.event_result = dict(response=dict(message=dict(detection={'type': 1}, sess_uuid="test_uuid")))
     self.request = aiohttp.protocol.RawRequestMessage(
         method='POST', path='/', version=HttpVersion(major=1, minor=1), headers=self.data['headers'],
         raw_headers=None, should_close=None, compression=None)
     self.handler.create_data = Mock(return_value=self.data)
     self.handler.submit_data = AsyncMock(return_value=self.event_result)
     self.handler.submit_slurp = AsyncMock()
     self.payload = aiohttp.streams.EmptyStreamReader()
     aiohttp.Response.add_header = Mock()
     aiohttp.Response.write = Mock()
     aiohttp.Response.send_headers = Mock()
     aiohttp.Response.write_eof = AsyncMock()
     aiohttp.streams.EmptyStreamReader.read = AsyncMock(return_value=b'con1=test1&con2=test2')
     self.handler.parse_tanner_response = AsyncMock(
         return_value=(self.content, self.content_type, self.data['headers'], self.data['headers']['status']))
コード例 #16
0
ファイル: test_web_request.py プロジェクト: tumb1er/aiohttp
def test_non_keepalive_on_http10(make_request):
    req = make_request('GET', '/', version=HttpVersion(1, 0))
    assert not req.keep_alive
コード例 #17
0
def test_keep_alive_http09():
    headers = CIMultiDict(Connection='keep-alive')
    req = make_request('GET', '/', version=HttpVersion(0, 9), headers=headers)
    resp = StreamResponse()
    yield from resp.prepare(req)
    assert not resp.keep_alive
コード例 #18
0
 def test_non_keepalive_on_http10(self):
     req = self.make_request('GET', '/', version=HttpVersion(1, 0))
     self.assertFalse(req.keep_alive)