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)
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)
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)
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)
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)
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)
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
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)
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
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)
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)
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)
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
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
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", )
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(): 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_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)
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)
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)
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)
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')
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)