Exemple #1
0
def test_delete_content_length_if_compression_enabled():
    req = make_request('GET', '/')
    resp = Response(body=b'answer')
    resp.enable_compression(ContentCoding.gzip)

    yield from resp.prepare(req)
    assert resp.content_length is None
def test_delete_content_length_if_compression_enabled():
    req = make_request('GET', '/')
    resp = Response(body=b'answer')
    resp.enable_compression(ContentCoding.gzip)

    yield from resp.prepare(req)
    assert resp.content_length is None
def test_send_set_cookie_header():
    resp = Response()
    resp.cookies['name'] = 'value'

    writer = mock.Mock()
    req = make_request('GET', '/', writer=writer)
    writer.drain.return_value = ()
    buf = b''

    def append(data):
        nonlocal buf
        buf += data

    writer.write.side_effect = append

    yield from resp.prepare(req)
    yield from resp.write_eof()
    txt = buf.decode('utf8')
    assert re.match(
        'HTTP/1.1 200 OK\r\n'
        'Content-Type: application/octet-stream\r\n'
        'Content-Length: 0\r\n'
        'Set-Cookie: name=value\r\n'
        'Date: .+\r\n'
        'Server: .+\r\n\r\n', txt)
Exemple #4
0
def test_content_length_on_chunked():
    req = make_request('GET', '/')
    resp = Response(body=b'answer')
    assert resp.content_length == 6
    resp.enable_chunked_encoding()
    assert resp.content_length is None
    yield from resp.prepare(req)
Exemple #5
0
def test_content_length_on_chunked():
    req = make_request('GET', '/')
    resp = Response(body=b'answer')
    assert resp.content_length == 6
    resp.enable_chunked_encoding()
    assert resp.content_length is None
    yield from resp.prepare(req)
    def test_delete_content_length_if_compression_enabled(self, ResponseImpl):
        req = self.make_request("GET", "/")
        resp = Response(body=b"answer")
        self.assertEqual(6, resp.content_length)

        resp.enable_compression(ContentCoding.gzip)

        self.loop.run_until_complete(resp.prepare(req))
        self.assertIsNone(resp.content_length)
Exemple #7
0
def test_delete_content_length_if_compression_enabled():
    req = make_request('GET', '/')
    resp = Response(body=b'answer')
    resp.enable_compression(ContentCoding.gzip)

    with mock.patch('aiohttp.web_reqrep.PayloadWriter'):
        yield from resp.prepare(req)

    assert resp.content_length is None
def test_delete_content_length_if_compression_enabled():
    req = make_request('GET', '/')
    resp = Response(body=b'answer')
    resp.enable_compression(ContentCoding.gzip)

    with mock.patch('aiohttp.web_response.PayloadWriter'):
        yield from resp.prepare(req)

    assert resp.content_length is None
    def test_delete_content_length_if_compression_enabled(self, ResponseImpl):
        req = self.make_request('GET', '/')
        resp = Response(body=b'answer')
        self.assertEqual(6, resp.content_length)

        resp.enable_compression(ContentCoding.gzip)

        self.loop.run_until_complete(resp.prepare(req))
        self.assertIsNone(resp.content_length)
Exemple #10
0
def test_consecutive_write_eof():
    req = make_request('GET', '/')
    data = b'data'
    resp = Response(body=data)

    yield from resp.prepare(req)
    with mock.patch('aiohttp.web.StreamResponse.write_eof') as super_write_eof:
        yield from resp.write_eof()
        resp._eof_sent = True
        yield from resp.write_eof()
        super_write_eof.assert_called_once_with(data)
Exemple #11
0
def test_consecutive_write_eof():
    req = make_request('GET', '/')
    data = b'data'
    resp = Response(body=data)

    yield from resp.prepare(req)
    with mock.patch('aiohttp.web.StreamResponse.write_eof') as super_write_eof:
        yield from resp.write_eof()
        resp._eof_sent = True
        yield from resp.write_eof()
        super_write_eof.assert_called_once_with(data)
Exemple #12
0
def function1158(function1121):
    function382 = mock.Mock()

    @asyncio.coroutine
    def function2829(*args, **kwargs):
        function382(*args, None=kwargs)

    function1121.on_response_prepare.append(function2829)
    var732 = function1846(function1121, 'GET', '/')
    var3974 = Response(body=b'')
    yield from var3974.prepare(var732)
    function382.assert_called_once_with(var732, var3974)
Exemple #13
0
def test_send_headers_for_empty_body(buf, writer):
    req = make_request('GET', '/', payload_writer=writer)
    resp = Response()

    yield from resp.prepare(req)
    yield from resp.write_eof()
    txt = buf.decode('utf8')
    assert re.match('HTTP/1.1 200 OK\r\n'
                    'Content-Length: 0\r\n'
                    'Content-Type: application/octet-stream\r\n'
                    'Date: .+\r\n'
                    'Server: .+\r\n\r\n', txt)
Exemple #14
0
def test_send_headers_for_empty_body(buf, writer):
    req = make_request('GET', '/', payload_writer=writer)
    resp = Response()

    yield from resp.prepare(req)
    yield from resp.write_eof()
    txt = buf.decode('utf8')
    assert re.match('HTTP/1.1 200 OK\r\n'
                    'Content-Length: 0\r\n'
                    'Content-Type: application/octet-stream\r\n'
                    'Date: .+\r\n'
                    'Server: .+\r\n\r\n', txt)
Exemple #15
0
def test_force_compression_identity_response():
    writer = mock.Mock()

    def write_headers(status_line, headers):
        assert headers[hdrs.CONTENT_LENGTH] == "6"
        assert hdrs.TRANSFER_ENCODING not in headers

    writer.write_headers.side_effect = write_headers
    req = make_request('GET', '/', payload_writer=writer)
    resp = Response(body=b'answer')
    resp.enable_compression(ContentCoding.identity)
    yield from resp.prepare(req)
    assert resp.content_length == 6
Exemple #16
0
def test_response_prepare(loop, app):
    callback = mock.Mock()

    @asyncio.coroutine
    def cb(*args, **kwargs):
        callback(*args, **kwargs)

    app.on_response_prepare.append(cb)

    request = make_request(app, "GET", "/")
    response = Response(body=b"")
    loop.run_until_complete(response.prepare(request))

    callback.assert_called_once_with(request, response)
Exemple #17
0
def test_remove_content_length_if_compression_enabled_on_payload_http10():
    writer = mock.Mock()

    def write_headers(status_line, headers):
        assert hdrs.CONTENT_LENGTH not in headers
        assert hdrs.TRANSFER_ENCODING not in headers

    writer.write_headers.side_effect = write_headers
    req = make_request('GET', '/', version=HttpVersion10,
                       payload_writer=writer)
    resp = Response(body=BytesPayload(b'answer'))
    resp.enable_compression(ContentCoding.gzip)
    yield from resp.prepare(req)
    assert resp.content_length is None
Exemple #18
0
def test_remove_content_length_if_compression_enabled_on_payload_http10():
    writer = mock.Mock()

    def write_headers(status_line, headers):
        assert hdrs.CONTENT_LENGTH not in headers
        assert hdrs.TRANSFER_ENCODING not in headers

    writer.write_headers.side_effect = write_headers
    req = make_request('GET', '/', version=HttpVersion10,
                       payload_writer=writer)
    resp = Response(body=BytesPayload(b'answer'))
    resp.enable_compression(ContentCoding.gzip)
    yield from resp.prepare(req)
    assert resp.content_length is None
Exemple #19
0
def test_force_compression_identity_response():
    writer = mock.Mock()

    def write_headers(status_line, headers):
        assert headers[hdrs.CONTENT_LENGTH] == "6"
        assert hdrs.TRANSFER_ENCODING not in headers

    writer.write_headers.side_effect = write_headers
    req = make_request('GET', '/',
                       payload_writer=writer)
    resp = Response(body=b'answer')
    resp.enable_compression(ContentCoding.identity)
    yield from resp.prepare(req)
    assert resp.content_length == 6
Exemple #20
0
def test_response_prepare(app):
    callback = mock.Mock()

    @asyncio.coroutine
    def cb(*args, **kwargs):
        callback(*args, **kwargs)

    app.on_response_prepare.append(cb)

    request = make_request(app, 'GET', '/')
    response = Response(body=b'')
    yield from response.prepare(request)

    callback.assert_called_once_with(request, response)
Exemple #21
0
def test_render_with_body(transport):
    writer, buf = transport
    req = make_request('GET', '/', writer=writer)
    resp = Response(body=b'data')

    yield from resp.prepare(req)
    yield from resp.write_eof()

    txt = buf.decode('utf8')
    assert re.match('HTTP/1.1 200 OK\r\n'
                    'Content-Length: 4\r\n'
                    'Content-Type: application/octet-stream\r\n'
                    'Date: .+\r\n'
                    'Server: .+\r\n\r\n'
                    'data', txt)
Exemple #22
0
def test_send_set_cookie_header(buf, writer):
    resp = Response()
    resp.cookies['name'] = 'value'
    req = make_request('GET', '/', payload_writer=writer)

    yield from resp.prepare(req)
    yield from resp.write_eof()

    txt = buf.decode('utf8')
    assert re.match('HTTP/1.1 200 OK\r\n'
                    'Content-Length: 0\r\n'
                    'Set-Cookie: name=value\r\n'
                    'Content-Type: application/octet-stream\r\n'
                    'Date: .+\r\n'
                    'Server: .+\r\n\r\n', txt)
Exemple #23
0
def test_send_set_cookie_header(buf, writer):
    resp = Response()
    resp.cookies['name'] = 'value'
    req = make_request('GET', '/', payload_writer=writer)

    yield from resp.prepare(req)
    yield from resp.write_eof()

    txt = buf.decode('utf8')
    assert re.match('HTTP/1.1 200 OK\r\n'
                    'Content-Length: 0\r\n'
                    'Set-Cookie: name=value\r\n'
                    'Content-Type: application/octet-stream\r\n'
                    'Date: .+\r\n'
                    'Server: .+\r\n\r\n', txt)
Exemple #24
0
def test_remove_content_length_if_compression_enabled_on_payload_http11():
    writer = mock.Mock()

    def write_headers(status_line, headers):
        assert hdrs.CONTENT_LENGTH not in headers
        assert headers.get(hdrs.TRANSFER_ENCODING, '') == 'chunked'

    writer.write_headers.side_effect = write_headers
    req = make_request('GET', '/', payload_writer=writer)
    payload = BytesPayload(b'answer', headers={"X-Test-Header": "test"})
    resp = Response(body=payload)
    assert resp.content_length == 6
    resp.body = payload
    resp.enable_compression(ContentCoding.gzip)
    yield from resp.prepare(req)
    assert resp.content_length is None
Exemple #25
0
def test_remove_content_length_if_compression_enabled_on_payload_http11():
    writer = mock.Mock()

    def write_headers(status_line, headers):
        assert hdrs.CONTENT_LENGTH not in headers
        assert headers.get(hdrs.TRANSFER_ENCODING, '') == 'chunked'

    writer.write_headers.side_effect = write_headers
    req = make_request('GET', '/', payload_writer=writer)
    payload = BytesPayload(b'answer', headers={"X-Test-Header": "test"})
    resp = Response(body=payload)
    assert resp.content_length == 6
    resp.body = payload
    resp.enable_compression(ContentCoding.gzip)
    yield from resp.prepare(req)
    assert resp.content_length is None
Exemple #26
0
def test_set_content_length_if_compression_enabled():
    writer = mock.Mock()

    def write_headers(status_line, headers):
        assert hdrs.CONTENT_LENGTH in headers
        assert headers[hdrs.CONTENT_LENGTH] == '26'
        assert hdrs.TRANSFER_ENCODING not in headers

    writer.write_headers.side_effect = write_headers
    req = make_request('GET', '/', payload_writer=writer)
    resp = Response(body=b'answer')
    resp.enable_compression(ContentCoding.gzip)

    yield from resp.prepare(req)
    assert resp.content_length == 26
    del resp.headers[hdrs.CONTENT_LENGTH]
    assert resp.content_length == 26
Exemple #27
0
def test_set_content_length_if_compression_enabled():
    writer = mock.Mock()

    def write_headers(status_line, headers):
        assert hdrs.CONTENT_LENGTH in headers
        assert headers[hdrs.CONTENT_LENGTH] == '26'
        assert hdrs.TRANSFER_ENCODING not in headers

    writer.write_headers.side_effect = write_headers
    req = make_request('GET', '/', payload_writer=writer)
    resp = Response(body=b'answer')
    resp.enable_compression(ContentCoding.gzip)

    yield from resp.prepare(req)
    assert resp.content_length == 26
    del resp.headers[hdrs.CONTENT_LENGTH]
    assert resp.content_length == 26
Exemple #28
0
def test_render_with_body():
    writer = mock.Mock()
    req = make_request('GET', '/', writer=writer)
    resp = Response(body=b'data')

    writer.drain.return_value = ()
    buf = b''

    def append(data):
        nonlocal buf
        buf += data

    writer.write.side_effect = append

    yield from resp.prepare(req)
    yield from resp.write_eof()
    txt = buf.decode('utf8')
    assert re.match('HTTP/1.1 200 OK\r\nContent-Length: 4\r\n'
                    'Date: .+\r\nServer: .+\r\n\r\ndata', txt)
def test_send_headers_for_empty_body():
    writer = mock.Mock()
    req = make_request('GET', '/', writer=writer)
    resp = Response()

    writer.drain.return_value = ()
    buf = b''

    def append(data):
        nonlocal buf
        buf += data

    writer.write.side_effect = append

    yield from resp.prepare(req)
    yield from resp.write_eof()
    txt = buf.decode('utf8')
    assert re.match('HTTP/1.1 200 OK\r\nCONTENT-LENGTH: 0\r\n'
                    'DATE: .+\r\nSERVER: .+\r\n\r\n', txt)
    def test_render_with_body(self):
        req = self.make_request('GET', '/')
        resp = Response(body=b'data')

        self.writer.drain.return_value = ()
        buf = b''

        def append(data):
            nonlocal buf
            buf += data

        self.writer.write.side_effect = append

        self.loop.run_until_complete(resp.prepare(req))
        self.loop.run_until_complete(resp.write_eof())
        txt = buf.decode('utf8')
        self.assertRegex(
            txt, 'HTTP/1.1 200 OK\r\nCONTENT-LENGTH: 4\r\n'
            'CONNECTION: keep-alive\r\n'
            'DATE: .+\r\nSERVER: .+\r\n\r\ndata')
    def test_send_headers_for_empty_body(self):
        req = self.make_request("GET", "/")
        resp = Response()

        self.writer.drain.return_value = ()
        buf = b""

        def append(data):
            nonlocal buf
            buf += data

        self.writer.write.side_effect = append

        self.loop.run_until_complete(resp.prepare(req))
        self.loop.run_until_complete(resp.write_eof())
        txt = buf.decode("utf8")
        self.assertRegex(
            txt,
            "HTTP/1.1 200 OK\r\nCONTENT-LENGTH: 0\r\n" "CONNECTION: keep-alive\r\n" "DATE: .+\r\nSERVER: .+\r\n\r\n",
        )
Exemple #32
0
def test_send_headers_for_empty_body():
    writer = mock.Mock()
    req = make_request('GET', '/', writer=writer)
    resp = Response()

    writer.drain.return_value = ()
    buf = b''

    def append(data):
        nonlocal buf
        buf += data

    writer.write.side_effect = append

    yield from resp.prepare(req)
    yield from resp.write_eof()
    txt = buf.decode('utf8')
    assert re.match(
        'HTTP/1.1 200 OK\r\nCONTENT-LENGTH: 0\r\n'
        'DATE: .+\r\nSERVER: .+\r\n\r\n', txt)
Exemple #33
0
def test_render_with_body():
    writer = mock.Mock()
    req = make_request('GET', '/', writer=writer)
    resp = Response(body=b'data')

    writer.drain.return_value = ()
    buf = b''

    def append(data):
        nonlocal buf
        buf += data

    writer.write.side_effect = append

    yield from resp.prepare(req)
    yield from resp.write_eof()
    txt = buf.decode('utf8')
    assert re.match(
        'HTTP/1.1 200 OK\r\nContent-Length: 4\r\n'
        'Date: .+\r\nServer: .+\r\n\r\ndata', txt)
Exemple #34
0
def test_render_with_body():
    writer = mock.Mock()
    req = make_request('GET', '/', writer=writer)
    resp = Response(body=b'data')

    writer.drain.return_value = ()
    buf = b''

    def append(data):
        nonlocal buf
        buf += data

    writer.write.side_effect = append

    yield from resp.prepare(req)
    yield from resp.write_eof()
    txt = buf.decode('utf8')
    assert re.match('HTTP/1.1 200 OK\r\nCONTENT-LENGTH: 4\r\n'
                    'CONNECTION: keep-alive\r\n'
                    'DATE: .+\r\nSERVER: .+\r\n\r\ndata', txt)
Exemple #35
0
def test_render_with_body():
    writer = mock.Mock()
    req = make_request('GET', '/', writer=writer)
    resp = Response(body=b'data')

    writer.drain.return_value = ()
    buf = b''

    def append(data):
        nonlocal buf
        buf += data

    writer.write.side_effect = append

    yield from resp.prepare(req)
    yield from resp.write_eof()
    txt = buf.decode('utf8')
    assert re.match(
        'HTTP/1.1 200 OK\r\nCONTENT-LENGTH: 4\r\n'
        'CONNECTION: keep-alive\r\n'
        'DATE: .+\r\nSERVER: .+\r\n\r\ndata', txt)
Exemple #36
0
def test_send_set_cookie_header():
    resp = Response()
    resp.cookies['name'] = 'value'

    writer = mock.Mock()
    req = make_request('GET', '/', writer=writer)
    writer.drain.return_value = ()
    buf = b''

    def append(data):
        nonlocal buf
        buf += data

    writer.write.side_effect = append

    yield from resp.prepare(req)
    yield from resp.write_eof()
    txt = buf.decode('utf8')
    assert re.match('HTTP/1.1 200 OK\r\nContent-Length: 0\r\n'
                    'Set-Cookie: name=value\r\n'
                    'Date: .+\r\nServer: .+\r\n\r\n', txt)
Exemple #37
0
def test_send_set_cookie_header():
    resp = Response()
    resp.cookies['name'] = 'value'

    writer = mock.Mock()
    req = make_request('GET', '/', writer=writer)
    writer.drain.return_value = ()
    buf = b''

    def append(data):
        nonlocal buf
        buf += data

    writer.write.side_effect = append

    yield from resp.prepare(req)
    yield from resp.write_eof()
    txt = buf.decode('utf8')
    assert re.match('HTTP/1.1 200 OK\r\nCONTENT-LENGTH: 0\r\n'
                    'SET-COOKIE: name=value\r\n'
                    'CONNECTION: keep-alive\r\n'
                    'DATE: .+\r\nSERVER: .+\r\n\r\n', txt)
Exemple #38
0
def test_send_headers_for_empty_body():
    writer = mock.Mock()
    req = make_request('GET', '/', writer=writer)
    resp = Response()

    writer.drain.return_value = ()
    buf = b''

    def append(data):
        nonlocal buf
        buf += data

    writer.write.side_effect = append

    yield from resp.prepare(req)
    yield from resp.write_eof()
    txt = buf.decode('utf8')
    assert re.match('HTTP/1.1 200 OK\r\n'
                    'Content-Type: application/octet-stream\r\n'
                    'Content-Length: 0\r\n'
                    'Date: .+\r\n'
                    'Server: .+\r\n\r\n', txt)
    def test_send_set_cookie_header(self):
        resp = Response()
        resp.cookies['name'] = 'value'

        req = self.make_request('GET', '/')
        self.writer.drain.return_value = ()
        buf = b''

        def append(data):
            nonlocal buf
            buf += data

        self.writer.write.side_effect = append

        self.loop.run_until_complete(resp.prepare(req))
        self.loop.run_until_complete(resp.write_eof())
        txt = buf.decode('utf8')
        self.assertRegex(
            txt, 'HTTP/1.1 200 OK\r\nCONTENT-LENGTH: 0\r\n'
            'SET-COOKIE: name=value\r\n'
            'CONNECTION: keep-alive\r\n'
            'DATE: .+\r\nSERVER: .+\r\n\r\n')
Exemple #40
0
def test_send_set_cookie_header():
    resp = Response()
    resp.cookies['name'] = 'value'

    writer = mock.Mock()
    req = make_request('GET', '/', writer=writer)
    writer.drain.return_value = ()
    buf = b''

    def append(data):
        nonlocal buf
        buf += data

    writer.write.side_effect = append

    yield from resp.prepare(req)
    yield from resp.write_eof()
    txt = buf.decode('utf8')
    assert re.match(
        'HTTP/1.1 200 OK\r\nCONTENT-LENGTH: 0\r\n'
        'SET-COOKIE: name=value\r\n'
        'DATE: .+\r\nSERVER: .+\r\n\r\n', txt)