Beispiel #1
0
    def test_POST_StreamReader(self):
        with run_server(self.loop, router=Functional) as httpd:
            url = httpd.url('method', 'post')

            here = os.path.dirname(__file__)
            fname = os.path.join(here, 'sample.key')

            with open(fname, 'rb') as f:
                data = f.read()

            stream = aiohttp.StreamReader(loop=self.loop)
            stream.feed_data(data)
            stream.feed_eof()

            r = self.loop.run_until_complete(
                client.request('post',
                               url,
                               data=stream,
                               headers={'Content-Length': str(len(data))},
                               loop=self.loop))
            content = self.loop.run_until_complete(r.json())
            r.close()

            self.assertEqual(str(len(data)),
                             content['headers']['Content-Length'])
def test_POST_StreamReader(fname, loop, test_client):
    @asyncio.coroutine
    def handler(request):
        assert request.content_type == 'application/octet-stream'
        content = yield from request.read()
        with fname.open('rb') as f:
            expected = f.read()
        assert request.content_length == str(len(expected))
        assert content == expected

        return web.HTTPOk()

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

    with fname.open() as f:
        data = f.read()

    stream = aiohttp.StreamReader(loop=loop)
    stream.feed_data(data)
    stream.feed_eof()

    resp = yield from client.post('/',
                                  data=stream,
                                  headers={'Content-Length': str(len(data))})
    assert 200 == resp.status
    resp.close()
Beispiel #3
0
    def handle(environ, start_response):

        req = webob.Request(environ)
        vers = aiohttp.HttpVersion10 if req.http_version == 'HTTP/1.0' else aiohttp.HttpVersion11
        message = aiohttp.RawRequestMessage(req.method, req.path_qs, vers,
                                            aiohttp.CIMultiDict(req.headers),
                                            req.headers, False, False)
        payload = aiohttp.StreamReader(loop=loop_)
        payload.feed_data(req.body)
        payload.feed_eof()
        factory = aiohttp.web.RequestHandlerFactory(app_,
                                                    app_.router,
                                                    loop=loop_,
                                                    keep_alive_on=False)
        handler = factory()
        handler.transport = io.BytesIO()
        handler.transport.is_closing = lambda: False
        handler.transport._conn_lost = 0
        handler.transport.get_extra_info = lambda s: ('127.0.0.1', 80)
        handler.writer = aiohttp.parsers.StreamWriter(handler.transport,
                                                      handler, handler.reader,
                                                      handler._loop)
        coro = handler.handle_request(message, payload)
        if loop_.is_running():
            raise RuntimeError(
                'Client cannot start durring another coroutine is running.')

        loop_.run_until_complete(coro)
        handler.transport.seek(9)
        res = webob.Response.from_file(handler.transport)
        start_response(res.status, res.headerlist)
        return res.app_iter
    async def test_parse_chunked_payload_split_end2(self, protocol) -> None:
        out = aiohttp.StreamReader(protocol, 2**16, loop=None)
        p = HttpPayloadParser(out, chunked=True)
        p.feed_data(b'4\r\nasdf\r\n0\r\n\r')
        p.feed_data(b'\n')

        assert out.is_eof()
        assert b'asdf' == b''.join(out._buffer)
Beispiel #5
0
    async def test_parse_chunked_payload_split_end(self, protocol) -> None:
        out = aiohttp.StreamReader(protocol, 2**16, loop=None)
        p = HttpPayloadParser(out, chunked=True)
        p.feed_data(b"4\r\nasdf\r\n0\r\n")
        p.feed_data(b"\r\n")

        assert out.is_eof()
        assert b"asdf" == b"".join(out._buffer)
Beispiel #6
0
    async def test_parse_chunked_payload_split_end_trailers4(
            self, protocol: Any) -> None:
        out = aiohttp.StreamReader(protocol, 2**16, loop=None)
        p = HttpPayloadParser(out, chunked=True)
        p.feed_data(b"4\r\nasdf\r\n0\r\n" b"C")
        p.feed_data(b"ontent-MD5: 912ec803b2ce49e4a541068d495ab570\r\n\r\n")

        assert out.is_eof()
        assert b"asdf" == b"".join(out._buffer)
    async def test_parse_chunked_payload_split_end_trailers3(self,
                                                             protocol) -> None:
        out = aiohttp.StreamReader(protocol, 2**16, loop=None)
        p = HttpPayloadParser(out, chunked=True)
        p.feed_data(b'4\r\nasdf\r\n0\r\nContent-MD5: ')
        p.feed_data(b'912ec803b2ce49e4a541068d495ab570\r\n\r\n')

        assert out.is_eof()
        assert b'asdf' == b''.join(out._buffer)
def TestOneInput(data):
    loop = asyncio.get_event_loop()
    pr = BaseProtocol(loop)
    out = aiohttp.StreamReader(pr, 2**16, loop=None)
    h_p = aiohttp.http_parser.HttpPayloadParser(out, loop, 32768)
    try:
        h_p.feed_data(data)
    except aiohttp.http_exceptions.HttpProcessingError:
        None
 def function125(self):
     with function147(self.attribute2267, router=Class273) as var4426:
         var1019 = var4426.var1019('method', 'post')
         var1508 = os.path.dirname(__file__)
         var2235 = os.path.join(var1508, 'sample.key')
         with open(var2235, 'rb') as var122:
             var2880 = var122.read()
         var1769 = aiohttp.StreamReader(loop=self.attribute2267)
         var1769.feed_data(var2880)
         var1769.feed_eof()
         var610 = client.ClientSession(loop=self.attribute2267)
         var2959 = self.attribute2267.run_until_complete(var610.request('post', var1019, data=var1769, headers={'Content-Length': str(len(var2880)), }))
         var3252 = self.attribute2267.run_until_complete(var2959.json())
         var2959.close()
         var610.close()
         self.assertEqual(str(len(var2880)), var3252['headers']['Content-Length'])
Beispiel #10
0
 def __init__(self, status):
     self.status = status
     self.content = aiohttp.StreamReader(
         protocol=asynctest.Mock(),
         limit=2**16
     )