def start_app(self): self.loop.create_task( self.loop.create_server( lambda: Server(app, self.bot.loop, create_serving_logger(), '%(h)s %(r)s %(s)s %(b)s %(D)s', keep_alive_timeout=5), host='0.0.0.0', port=6142, ssl=None))
def test_server() -> None: h2_ssl_mock = Mock() h2_ssl_mock.selected_alpn_protocol.return_value = 'h2' transport = Mock() transport.get_extra_info.return_value = h2_ssl_mock server = Server(Mock(), Mock(), Mock(), '', 5) server.connection_made(transport) assert isinstance(server._server, H2Server) transport.get_extra_info.return_value = None server.connection_made(transport) assert isinstance(server._server, H11Server)
async def test_h2c_upgrade( serving_app: Quart, event_loop: asyncio.AbstractEventLoop, monkeypatch: MonkeyPatch, ) -> None: monkeypatch.setattr(quart.serving._base, 'time', lambda: 1512229395) server = Server(serving_app, event_loop, None, '', 5) # type: ignore transport = MockTransport() server.connection_made(transport) # type: ignore server.data_received( b'GET / HTTP/1.1\r\n' b'Host: localhost\r\n' b'Upgrade: h2c\r\n' b'\r\n', ) await transport.updated.wait() assert transport.data.startswith( b'HTTP/1.1 101 \r\nupgrade: h2c\r\n' b'date: Sat, 02 Dec 2017 15:43:15 GMT\r\nserver: quart-h11\r\n\r\n') server.connection_lost(Exception()) await transport.closed.wait()
def __init__(self, parent=None): super().__init__(parent) self._camera = None self._converter = None self._latestImage = None self.app = Quart(__name__) self.app.add_url_rule('/camera.mjpeg', 'camerastream', self.getCameraStream) loop = asyncio.get_event_loop() create_server = loop.create_server( lambda: Server(self.app, loop, logger, "%(h)s %(r)s %(s)s %(b)s %(D)s", 5), '0.0.0.0', '9000', ssl=None, ) server = loop.create_task(create_server)
async def test_invalid_upgrade( serving_app: Quart, event_loop: asyncio.AbstractEventLoop, ) -> None: server = Server(serving_app, event_loop, None, '', 5) # type: ignore transport = MockTransport() server.connection_made(transport) # type: ignore server.data_received( b'GET / HTTP/1.1\r\n' b'Host: localhost\r\n' b'Upgrade: pigeon\r\n' b'Connection: close\r\n' b'\r\n', ) await transport.closed.wait() assert transport.data.startswith(b'HTTP/1.1 200')
async def test_invalid_upgrade( event_loop: asyncio.AbstractEventLoop, monkeypatch: MonkeyPatch, ) -> None: monkeypatch.setattr(quart.serving._base, 'time', lambda: 1512229395) server = Server(Mock(), event_loop, None, '', 5) # type: ignore transport = MockTransport() server.connection_made(transport) # type: ignore server.data_received( b'GET / HTTP/1.1\r\n' b'Host: localhost\r\n' b'Upgrade: pigeon\r\n' b'\r\n', ) await transport.closed.wait() assert transport.data == ( b'HTTP/1.1 400 \r\ncontent-length: 0\r\nconnection: close\r\n' b'date: Sat, 02 Dec 2017 15:43:15 GMT\r\nserver: quart-h11\r\n\r\n')
async def test_h2c_upgrade_with_body( serving_app: Quart, event_loop: asyncio.AbstractEventLoop, monkeypatch: MonkeyPatch, ) -> None: monkeypatch.setattr(quart.serving._base, 'time', lambda: 1512229395) server = Server(serving_app, event_loop, None, '', 5) # type: ignore transport = MockTransport() server.connection_made(transport) # type: ignore server.data_received( b'POST / HTTP/1.1\r\n' b'Host: localhost\r\n' b'Upgrade: h2c\r\n' b'Content-Length: 7\r\n' b'Content-Type: application/x-www-form-urlencoded\r\n' b'\r\n' b'foo=bar', ) await transport.updated.wait() assert transport.data.startswith(b'HTTP/1.1 200')
async def test_websocket_upgrade( serving_app: Quart, event_loop: asyncio.AbstractEventLoop, monkeypatch: MonkeyPatch, ) -> None: monkeypatch.setattr(quart.serving._base, 'time', lambda: 1512229395) server = Server(serving_app, event_loop, None, '', 5) # type: ignore transport = MockTransport() server.connection_made(transport) # type: ignore server.data_received( b'GET /ws HTTP/1.1\r\n' b'Host: localhost\r\n' b'Upgrade: websocket\r\n' b'Connection: Upgrade\r\n' b'Sec-WebSocket-Key: NA63HJnrvVYlgKt6wI58Yw==\r\n' b'Sec-WebSocket-Version: 13\r\n' b'\r\n', ) await transport.updated.wait() assert transport.data == ( b'HTTP/1.1 101 \r\nupgrade: WebSocket\r\nconnection: Upgrade\r\n' b'sec-websocket-accept: 3jdXMDZiy2+b842JYmwUB4ilUxc=\r\n\r\n')