Exemple #1
0
    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)
Exemple #2
0
    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)
Exemple #3
0
 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
Exemple #4
0
    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)
Exemple #5
0
    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)
Exemple #6
0
    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()])
Exemple #7
0
    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'))
Exemple #8
0
    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))
Exemple #9
0
 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)
Exemple #10
0
 def test_ctor(self):
     srv = wsgi.WSGIServerHttpProtocol(self.wsgi, loop=self.loop)
     self.assertIs(srv.wsgi, self.wsgi)
     self.assertFalse(srv.readpayload)
Exemple #11
0
 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))
Exemple #12
0
 def server():
     return wsgi.WSGIServerHttpProtocol(self.wsgi)