Exemple #1
0
def test_opentracing_extension_uses_global_tracer(schema, global_tracer_mock):
    graphql(
        schema,
        {"query": '{ status hello(name: "Bob") }'},
        extensions=[OpenTracingExtension],
    )
    global_tracer_mock.assert_called_once()
Exemple #2
0
def test_opentracing_extension_calls_custom_arg_filter(schema, mocker):
    arg_filter = mocker.Mock(return_value={})
    graphql(
        schema,
        {"query": '{ hello(name: "Bob") }'},
        extensions=[opentracing_extension(arg_filter=arg_filter)],
    )
    arg_filter.assert_called_once_with({"name": "Bob"}, ANY)
Exemple #3
0
def test_opentracing_extension_sets_graphql_component_tag_on_root_span(
        schema, active_span_mock):
    graphql(
        schema,
        {"query": '{ status hello(name: "Bob") }'},
        extensions=[OpenTracingExtension],
    )
    active_span_mock.span.set_tag.assert_called_once_with(
        tags.COMPONENT, "graphql")
Exemple #4
0
def test_opentracing_extension_sets_filtered_args_on_span(
        schema, active_span_mock, mocker):
    arg_filter = mocker.Mock(return_value={"name": "[filtered]"})
    graphql(
        schema,
        {"query": '{ hello(name: "Bob") }'},
        extensions=[opentracing_extension(arg_filter=arg_filter)],
    )

    span_mock = active_span_mock.__enter__.return_value.span
    span_mock.set_tag.assert_has_calls([
        call("component", "graphql"),
        call("graphql.parentType", "Query"),
        call("graphql.path", "hello"),
        call("graphql.param.name", "[filtered]"),
    ])
Exemple #5
0
def test_opentracing_extension_causes_no_errors_in_query_execution(schema):
    _, result = graphql(
        schema,
        {"query": '{ status hello(name: "Bob") }'},
        extensions=[OpenTracingExtension],
    )
    assert result == {"data": {"hello": "Hello, Bob!", "status": True}}
Exemple #6
0
async def test_apollotracing_extension_handles_exceptions_in_resolvers(
        schema,
        freeze_microtime,
        snapshot  # pylint: disable=unused-argument
):
    _, result = graphql(schema, {"query": "{ testError }"},
                        extensions=[ApolloTracingExtension])
    snapshot.assert_match(result["data"])
Exemple #7
0
async def test_apollotracing_extension_adds_tracing_data_to_result_extensions(
        schema,
        freeze_microtime,
        snapshot  # pylint: disable=unused-argument
):
    _, result = graphql(schema, {"query": "{ status }"},
                        extensions=[ApolloTracingExtension])
    snapshot.assert_match(result)
Exemple #8
0
def run():
    logging.basicConfig(level=logging.DEBUG)
    q = {"query": "{ hello { message } }"}
    atask = graphql(schema,
                    q,
                    debug=True,
                    context_value={"request": {
                        "HTTP_USER_AGENT": "World"
                    }})
    print(asyncio.run(atask, debug=True))
Exemple #9
0
def test_opentracing_extension_handles_errors_in_resolvers(schema):
    _, result = graphql(schema, {"query": "{ testError status }"},
                        extensions=[OpenTracingExtension])
    assert result["data"] == {"testError": None, "status": True}
Exemple #10
0
def test_opentracing_extension_creates_span_for_field(schema,
                                                      global_tracer_mock):
    graphql(schema, {"query": "{ status }"}, extensions=[OpenTracingExtension])
    global_tracer_mock.return_value.start_active_span.assert_any_call("status")
Exemple #11
0
def test_opentracing_extension_doesnt_break_introspection(schema):
    introspection_query = get_introspection_query(descriptions=True)
    _, result = graphql(schema, {"query": introspection_query},
                        extensions=[OpenTracingExtension])
    assert "errors" not in result
    def execute(schema, query, *args, **kwargs):
        from ariadne import graphql

        return graphql(schema, {"query": query}, *args, **kwargs)
Exemple #13
0
async def test_apollotracing_extension_causes_no_errors_in_query_execution(
        schema):
    _, result = graphql(schema, {"query": "{ status }"},
                        extensions=[ApolloTracingExtension])
    assert result["data"] == {"status": True}
Exemple #14
0
# Ariadne uses dedicated objects
query = ObjectType("Query")


# Map resolvers to fields in Query type using decorator syntax...
@query.field("hello")
def resolve_hello(_, info):
    request = info.context["request"]
    user_agent = request.get("HTTP_USER_AGENT", "guest")
    return "Hello, %s!" % user_agent


type_defs = gql("""
    type Query {
        hello: String!
    }
""")

logging.basicConfig(level=logging.DEBUG)
schema = make_executable_schema(type_defs, query)

query = {"query": "{ hello }"}
atask = graphql(schema,
                query,
                debug=True,
                context_value={"request": {
                    "HTTP_USER_AGENT": "World"
                }})
print(asyncio.run(atask, debug=True))