def test_init():
    schema = 'schema'
    pubsub = 'pubsub'
    setup_functions = {}
    namespace = '/foo'
    on_subscribe = 'on_subscribe'
    on_unsubscribe = 'on_unsubscribe'
    on_connect = 'on_connect'
    on_disconnect = 'on_disconnect'
    parse_context = 'parse_context'
    sub_manager = SubscriptionManager(
        schema,
        pubsub,
        setup_functions,
    )
    app = create_app()
    ss = SubscriptionServer(app, sub_manager, namespace, on_subscribe,
                            on_unsubscribe, on_connect, on_disconnect,
                            parse_context)
    assert ss.subscription_manager == sub_manager
    assert ss.namespace == namespace
    assert ss.on_subscribe == on_subscribe
    assert ss.on_unsubscribe == on_unsubscribe
    assert ss.on_connect == on_connect
    assert ss.on_disconnect == on_disconnect
    assert ss.parse_context == parse_context
Exemple #2
0
def basic_ss():
    schema = Schema
    pubsub = PubSub()
    setup_functions = {}
    namespace='/foo'
    on_subscribe=lambda parsed_message, base_params: base_params
    on_unsubscribe=lambda *args, **kwargs: True
    on_connect=lambda *args, **kwargs: True
    on_disconnect=lambda *args, **kwargs: True
    parse_context=lambda *args, **kwargs: True
    sub_manager = SubscriptionManager(
        schema,
        pubsub,
        setup_functions,
    )
    app = create_app()
    ss = SubscriptionServer(app,
                            sub_manager,
                            namespace,
                            on_subscribe,
                            on_unsubscribe,
                            on_connect,
                            on_disconnect,
                            parse_context)
    return (app, ss)
Exemple #3
0
def app(request):
    flask_app = create_app()
    ctx = flask_app.app_context()
    ctx.push()

    def teardown():
        ctx.pop()

    request.addfinalizer(teardown)
    return flask_app
class TestJinjaEnv:
    @pytest.mark.asyncio
    @pytest.mark.parametrize(
        "app", [create_app(graphiql=True, jinja_env=Environment(enable_async=True))]
    )
    async def test_graphiql_jinja_renderer_async(self, app, client, pretty_response):
        response = await client.get(
            url_string(query="{test}"), headers={"Accept": "text/html"},
        )
        assert response.status == 200
        assert pretty_response in await response.text()
def test_default_namespace():
    schema = 'schema'
    pubsub = 'pubsub'
    setup_functions = {}
    sub_manager = SubscriptionManager(
        schema,
        pubsub,
        setup_functions,
    )
    app = create_app()
    ss = SubscriptionServer(app, sub_manager)
    assert ss.namespace == '/ws'
Exemple #6
0
async def app() -> Quart:
    app = create_app(graphiql=True)
    ctx = app.app_context()
    await ctx.push()
    return app
Exemple #7
0
        response = await client.get(url_for("graphql", query="{test}"),
                                    headers={"Accept": "text/html"})
        assert response.status_code == 200
        pretty_response = ('{\n'
                           '  "data": {\n'
                           '    "test": "Hello World"\n'
                           '  }\n'
                           '}').replace("\"", "\\\"").replace("\n", "\\n")
        assert pretty_response in str(await response.get_data(), 'utf-8')


@pytest.mark.asyncio
async def test_graphiql_default_title(app: Quart,
                                      client: QuartClient) -> typing.NoReturn:
    async with app.test_request_context("/"):
        response = await client.get(url_for("graphql"),
                                    headers={"Accept": "text/html"})
        assert "<title>GraphiQL</title>" in str(await response.get_data())


@pytest.mark.parametrize(
    "app", [create_app(graphiql=True, graphiql_html_title="Awesome")])
@pytest.mark.asyncio
async def test_graphiql_custom_title(app: Quart,
                                     client: QuartClient) -> typing.NoReturn:
    async with app.test_request_context("/"):
        response = await client.get(url_for("graphql"),
                                    headers={"Accept": "text/html"})
        data = str(await response.get_data())
        assert "<title>Awesome</title>" in data
def app():
    app = create_app()
    return app
    }


@pytest.fixture
def pretty_response():
    return (
        "{\n"
        '  "data": {\n'
        '    "test": "Hello World"\n'
        "  }\n"
        "}".replace('"', '\\"').replace("\n", "\\n")
    )


@pytest.mark.asyncio
@pytest.mark.parametrize("app", [create_app(graphiql=True)])
async def test_graphiql_is_enabled(app, client):
    response = await client.get(
        url_string(query="{test}"), headers={"Accept": "text/html"}
    )
    assert response.status == 200


@pytest.mark.asyncio
@pytest.mark.parametrize("app", [create_app(graphiql=True)])
async def test_graphiql_simple_renderer(app, client, pretty_response):
    response = await client.get(
        url_string(query="{test}"), headers={"Accept": "text/html"},
    )
    assert response.status == 200
    assert pretty_response in await response.text()
async def app(request) -> Quart:
    app = create_app()
    ctx = app.app_context()
    await ctx.push()
    return app
              shared: test(who: "Everyone")
            }
            """,
            headers={"Content-Type": "application/graphql"},
        )

        assert response.status_code == 200
        assert (await response_json(response)) == {
            "data": {
                "test": "Hello World",
                "shared": "Hello Everyone"
            }
        }


@pytest.mark.parametrize('app', [create_app(pretty=True)])
@pytest.mark.asyncio
async def test_supports_pretty_printing(
        app: Quart, client: QuartClient) -> typing.NoReturn:
    async with app.test_request_context("/"):
        response = await client.get(await url_string(app, {'query': '{test}'}))
        assert str(await response.get_data(),
                   'utf-8') == ('{\n'
                                '  "data": {\n'
                                '    "test": "Hello World"\n'
                                '  }\n'
                                '}')


@pytest.mark.parametrize('app', [create_app(pretty=False)])
@pytest.mark.asyncio