This doc set is for users of the Gloo Mesh Gateway product to set up an Istio ingress gateway. For users of the Gloo Gateway product to set up an ingress gateway with the Kubernetes Gateway API instead, see the Gloo Gateway docs.
Mock resolvers
For testing scenarios, configure a mock resolver that immediately returns a mocked response to queries.
For testing scenarios, you can configure a mock resolver in a GraphQLResolverMap Gloo custom resource. Mock resolvers do not require resolver servers to exist, and instead can immediately return a mocked response. Then, map fields from your schema definition to resolvers in a GraphQLSchema CR.
Define your mock resolvers in a GraphQLResolverMap CR. Note that you can specify only one of asyncResponse, errorResponse, or syncResponse.
apiVersion: apimanagement.gloo.solo.io/v2
kind: GraphQLResolverMap
metadata:
name:
namespace:
spec:
# Resolver map
types:
Query:
fields:
# Replace 'nameOfField' with the name of the field that you
# previously defined for this query
<nameOfField>:
# Configuration for generating outgoing requests to a gRPC API
resolvers:
# You can specify only one type of mock resolver: asyncResponse, errorResponse, or syncResponse
- mockResolver:
# The JSON object response to immediately return to the GraphQL
# execution engine. Can be templated using variables from the # variables field
asyncResponse:
# An error response to return for this field
errorResponse:
# The JSON object response to immediately return to the GraphQL
# execution engine. Can be templated using variables from the # variables field
syncResponse:
In this example resolver map, a mock resolver is defined for the productsForHome field of the top-level query type. Two JSON objects in the syncResponse are defined in order to send example responses to test queries.
apiVersion: apimanagement.gloo.solo.io/v2
kind: GraphQLResolverMap
metadata:
name: bookinfo-mock-resolvermap
namespace: bookinfo
spec:
types:
Query:
fields:
productsForHome:
resolvers:
- mockResolver:
syncResponse:
json:
# To be properly converted from YAML to JSON, the entry content
# must be on a separate line after the hyphen (-).
-
id: 1
author: Bill
title: My Life
descriptionHtml: a book description
pages: 100
year: 1998
reviews:
-
reviewer: Sam
text: "The best!"
-
id: 2
author: George
title: Bill's Life
descriptionHtml: the real story of Bill's life
pages: 200
year: 1999
reviews:
-
reviewer: Bill
text: "Meh ... read my book instead"
Map the types and fields from your schema definition (ApiDoc) to the resolver servers (GraphQLResolverMap) in a GraphQLSchema Gloo CR. The GraphQLSchema CR ensures that the GraphQL resolver services can access the field information for each type.
apiVersion: apimanagement.gloo.solo.io/v2
kind: GraphQLSchema
metadata:
name:
namespace:
spec:
# Allow GraphQL servers that you define in GraphQLResolverMap CRs to resolve queries locally
resolved:
# Additional options on the schema
options:
# Enable introspection for the schema. Defaults to false.
enableIntrospection:
# Limit the maximum nesting on a query that runs against this schema.
# Any GraphQL operation that queries past the max depth adds an error message to the response and returns as null.
# If not configured, or the value is 0, the query depth is unbounded.
maxDepth:
# References to GraphQLResolverMap resources for resolvers.
# Resolver maps that are higher in this list have a higher priority
# over lower items when tie-breaking field resolver configurations exist.
resolverMapRefs:
- clusterName:
name:
namespace:
# Reference to ApiDoc resource for schema definitions
schemaRef:
clusterName:
name:
namespace:
In this example GraphQLSchema resource, the resolvers from bookinfo-mock-resolvermap are mapped to the schema definition from bookinfo-rest-apidoc.