Skip to content

graphql_sync success return value is wrong #1240

Open
@mRcSchwering

Description

@mRcSchwering

graphql_sync first return value is a boolean. The docs say

True when no errors occurred, False otherwise.

I noticed that with ariadne==0.26.1 sometimes this boolean is wrong. Here is an example with wrong input types being used. The response data contains error messages, but the success boolean stays True. Not sure if this is by design or a bug:

from ariadne import MutationType, QueryType, graphql_sync, make_executable_schema

query = QueryType()
mutation = MutationType()


@query.field("dummy")
def resolve_dummy(*_, **kwargs):
    return True


@mutation.field("myTestMutation")
def resolve_my_test_mutation(*_, **kwargs) -> dict:
    inputs = kwargs["input"]
    print(inputs)
    return {"success": True}


SCHEMA = """
type Query {
    dummy: Boolean!
}
type Mutation {
    myTestMutation(input: MyTestMutationInput!): MyTestMutationResult!
}

input MyTestMutationInput {
    name: String!
}

type MyTestMutationResult {
    success: Boolean!
}
"""

def test_wrong_inputs():
    querystr = """
    mutation MyTestMutation($input: MyTestMutationInput!) {
        myTestMutation(input: $input) {
            success
        }
    }
    """
    variables = {"input": {"namee": 12}}
    payload = {"query": querystr, "variables": variables}

    schema = make_executable_schema(
        SCHEMA,
        query,
        mutation,
        convert_names_case=True,
    )
    success, result = graphql_sync(schema=schema, data=payload, debug=True)

    assert success

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions