From 1f2d732775883a519fca628ec538368d9785f9f6 Mon Sep 17 00:00:00 2001 From: Alexey Subbotin Date: Mon, 23 Jan 2017 16:06:36 +0100 Subject: [PATCH 1/3] Return 400 status code if result has any error All exceptions in `graphql.execution.executor.resolve_or_error` will be returned as `GraphQLLocatedError` element on `errors` attribute. --- graphene_django/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graphene_django/views.py b/graphene_django/views.py index a68fd53..0887ee7 100644 --- a/graphene_django/views.py +++ b/graphene_django/views.py @@ -154,7 +154,7 @@ class GraphQLView(View): if execution_result.errors: response['errors'] = [self.format_error(e) for e in execution_result.errors] - if execution_result.invalid: + if execution_result.invalid or execution_result.errors: status_code = 400 else: response['data'] = execution_result.data From 1c0a9bab45306456879de465e84e67c33188d7d4 Mon Sep 17 00:00:00 2001 From: Alexey Subbotin Date: Mon, 23 Jan 2017 16:12:15 +0100 Subject: [PATCH 2/3] Change status code in tests --- graphene_django/tests/test_views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graphene_django/tests/test_views.py b/graphene_django/tests/test_views.py index e7ec187..37b81c4 100644 --- a/graphene_django/tests/test_views.py +++ b/graphene_django/tests/test_views.py @@ -406,7 +406,7 @@ def test_supports_pretty_printing_by_request(client): def test_handles_field_errors_caught_by_graphql(client): response = client.get(url_string(query='{thrower}')) - assert response.status_code == 200 + assert response.status_code == 400 assert response_json(response) == { 'data': None, 'errors': [{'locations': [{'column': 2, 'line': 1}], 'message': 'Throws!'}] From 32bb8c8255f43edeee4fe7d509afbbeba24065fd Mon Sep 17 00:00:00 2001 From: Alexey Subbotin Date: Mon, 23 Jan 2017 16:19:55 +0100 Subject: [PATCH 3/3] Fix unit test --- graphene_django/tests/test_views.py | 1 - 1 file changed, 1 deletion(-) diff --git a/graphene_django/tests/test_views.py b/graphene_django/tests/test_views.py index 37b81c4..abc3cac 100644 --- a/graphene_django/tests/test_views.py +++ b/graphene_django/tests/test_views.py @@ -408,7 +408,6 @@ def test_handles_field_errors_caught_by_graphql(client): response = client.get(url_string(query='{thrower}')) assert response.status_code == 400 assert response_json(response) == { - 'data': None, 'errors': [{'locations': [{'column': 2, 'line': 1}], 'message': 'Throws!'}] }