def test_handle_request_keep_alive(self): def wsgi_app(env, start): start('200 OK', [('Content-Type', 'text/plain')]) return [b'data'] stream = asyncio.StreamReader(loop=self.loop) stream.feed_data(b'data') stream.feed_eof() self.message = protocol.RawRequestMessage('GET', '/path', (1, 1), self.headers, False, 'deflate') srv = wsgi.WSGIServerHttpProtocol(wsgi_app, readpayload=True, loop=self.loop) srv.stream = self.stream srv.transport = self.transport self.loop.run_until_complete( srv.handle_request(self.message, self.payload)) content = b''.join([c[1][0] for c in self.transport.write.mock_calls]) self.assertTrue(content.startswith(b'HTTP/1.1 200 OK')) self.assertTrue(content.endswith(b'data\r\n0\r\n\r\n')) self.assertTrue(srv._keep_alive)
def test_wsgi_response(self): srv = wsgi.WSGIServerHttpProtocol(self.wsgi, loop=self.loop) srv.stream = self.stream srv.transport = self.transport resp = srv.create_wsgi_response(self.message) self.assertIsInstance(resp, wsgi.WsgiResponse)
def _make_srv(self, app=None, **kw): if app is None: app = self.wsgi srv = wsgi.WSGIServerHttpProtocol(app, loop=self.loop, **kw) srv.reader = self.reader srv.writer = self.writer srv.transport = self.transport return srv
def test_wsgi_response_start_response(self): srv = wsgi.WSGIServerHttpProtocol(self.wsgi, loop=self.loop) srv.stream = self.stream srv.transport = self.transport resp = srv.create_wsgi_response(self.message) resp.start_response('200 OK', [('CONTENT-TYPE', 'text/plain')]) self.assertEqual(resp.status, '200 OK') self.assertIsInstance(resp.response, protocol.Response)
def test_wsgi_response_101_upgrade_to_websocket(self, m_asyncio): srv = wsgi.WSGIServerHttpProtocol(self.wsgi, loop=self.loop) srv.stream = self.stream srv.transport = self.transport resp = srv.create_wsgi_response(self.message) resp.start_response('101 Switching Protocols', (('UPGRADE', 'websocket'), ('CONNECTION', 'upgrade'))) self.assertEqual(resp.status, '101 Switching Protocols') self.assertTrue(m_asyncio.Response.return_value.send_headers.called)
def test_wsgi_response_start_response_exc_status(self): srv = wsgi.WSGIServerHttpProtocol(self.wsgi, loop=self.loop) srv.stream = self.stream srv.transport = self.transport resp = srv.create_wsgi_response(self.message) resp.start_response('200 OK', [('CONTENT-TYPE', 'text/plain')]) self.assertRaises(ValueError, resp.start_response, '500 Err', [('CONTENT-TYPE', 'text/plain')], ['', ValueError()])
def test_handle_request_io(self): def wsgi_app(env, start): start('200 OK', [('Content-Type', 'text/plain')]) return io.BytesIO(b'data') srv = wsgi.WSGIServerHttpProtocol(wsgi_app, loop=self.loop) srv.stream = self.stream srv.transport = self.transport self.loop.run_until_complete( srv.handle_request(self.message, self.payload)) content = b''.join([c[1][0] for c in self.transport.write.mock_calls]) self.assertTrue(content.startswith(b'HTTP/1.0 200 OK')) self.assertTrue(content.endswith(b'data'))
def on_start(self): super().on_start() self.app = flask.Flask(__name__) self.app.manager = self self.route("/store.json", views.store_query) self.route("/", views.index) logger.info("Started manager.") green.await_coro( self.loop.create_server( lambda: wsgi.WSGIServerHttpProtocol(self.app), self.config.bind_host, self.config.bind_port))
def _make_one(self, **kw): srv = wsgi.WSGIServerHttpProtocol(self.wsgi, loop=self.loop, **kw) srv.stream = self.stream srv.transport = self.transport return srv.create_wsgi_environ(self.message, self.payload)
def test_ctor(self): srv = wsgi.WSGIServerHttpProtocol(self.wsgi, loop=self.loop) self.assertIs(srv.wsgi, self.wsgi) self.assertFalse(srv.readpayload)
def __init__(self, bot): self.bot = bot loop = asyncio.get_event_loop() server = lambda: wsgi.WSGIServerHttpProtocol(self.wsgi) self.bot.log.info('Starting webapp') asyncio.Task(loop.create_server(server, '127.0.0.1', 5000))
def server(): return wsgi.WSGIServerHttpProtocol(self.wsgi)