Beispiel #1
0
 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))
Beispiel #2
0
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)
Beispiel #3
0
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()
Beispiel #4
0
    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)
Beispiel #5
0
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')
Beispiel #6
0
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')
Beispiel #7
0
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')
Beispiel #8
0
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')