def test_graphql_execution_exception(monkeypatch, api_client): def mocked_execute(*args, **kwargs): raise IOError("Spanish inquisition") monkeypatch.setattr("graphql.backend.core.execute_and_validate", mocked_execute) response = api_client.post_graphql("{ shop { name }}") assert response.status_code == 400 content = _get_graphql_content_from_response(response) assert content["errors"][0]["message"] == "Spanish inquisition"
def test_invalid_request_body_with_debug(client): data = "invalid-data" response = client.post(API_PATH, data, content_type="application/json") assert response.status_code == 400 content = _get_graphql_content_from_response(response) errors = content.get("errors") assert errors == [{ "extensions": { "exception": { "code": "str", "stacktrace": [] } }, "message": "Unable to parse query.", }]
def test_require_pagination(api_client): query = """ query { products { edges { node { name } } } } """ response = api_client.post_graphql(query) content = _get_graphql_content_from_response(response) assert "errors" in content assert content["errors"][0]["message"] == ( "You must provide a `first` or `last` value to properly paginate the " "`products` connection.")
def test_invalid_request_body_non_debug(client): data = "invalid-data" response = client.post(API_PATH, data, content_type="application/json") assert response.status_code == 400 content = _get_graphql_content_from_response(response) assert "errors" in content
def test_query_is_dict(client): data = {"query": {"type": "dict"}} response = client.post(API_PATH, data, content_type="application/json") assert response.status_code == 400 content = _get_graphql_content_from_response(response) assert content["errors"][0]["message"] == "Must provide a query string."
def test_no_query(client): response = client.post(API_PATH, "", content_type="application/json") assert response.status_code == 400 content = _get_graphql_content_from_response(response) assert content["errors"][0]["message"] == "Must provide a query string."
def test_invalid_query(api_client): query = "query { invalid }" response = api_client.post_graphql(query, check_no_permissions=False) assert response.status_code == 400 content = _get_graphql_content_from_response(response) assert "errors" in content