func Graphql(p GraphqlParams, resultChannel chan *types.GraphQLResult) { source := source.NewSource(&source.Source{ Body: p.RequestString, Name: "GraphQL request", }) AST, err := parser.Parse(parser.ParseParams{Source: source}) if err != nil { result := types.GraphQLResult{ Errors: graphqlerrors.FormatErrors(err), } resultChannel <- &result return } validationResult := validator.ValidateDocument(p.Schema, AST) if !validationResult.IsValid { result := types.GraphQLResult{ Errors: validationResult.Errors, } resultChannel <- &result return } else { ep := executor.ExecuteParams{ Schema: p.Schema, Root: p.RootObject, AST: AST, Ctx: p.Ctx, OperationName: p.OperationName, Args: p.VariableValues, } executor.Execute(ep, resultChannel) return } }
func parse(t *testing.T, query string) *ast.Document { astDoc, err := parser.Parse(parser.ParseParams{ Source: query, Options: parser.ParseOptions{ NoLocation: true, }, }) if err != nil { t.Fatalf("Parse failed: %v", err) } return astDoc }
func Parse(t *testing.T, query string) *ast.Document { astDoc, err := parser.Parse(parser.ParseParams{ Source: query, Options: parser.ParseOptions{ // include source, for error reporting NoSource: false, }, }) if err != nil { t.Fatalf("Parse failed: %v", err) } return astDoc }
func TestSchemaParser_SimpleInputObjectWithArgsShouldFail(t *testing.T) { body := ` input Hello { world(foo: Int): String }` _, err := parser.Parse(parser.ParseParams{ Source: body, Options: parser.ParseOptions{ NoLocation: false, NoSource: true, }, }) expectedError := &graphqlerrors.GraphQLError{ Message: `Syntax Error GraphQL (3:8) Expected :, found ( 2: input Hello { 3: world(foo: Int): String ^ 4: } `, Stack: `Syntax Error GraphQL (3:8) Expected :, found ( 2: input Hello { 3: world(foo: Int): String ^ 4: } `, Nodes: []ast.Node{}, Source: &source.Source{ Body: ` input Hello { world(foo: Int): String }`, Name: "GraphQL", }, Positions: []int{22}, Locations: []location.SourceLocation{ {Line: 3, Column: 8}, }, } if err == nil { t.Fatalf("expected error, expected: %v, got: %v", expectedError, nil) } if !reflect.DeepEqual(expectedError, err) { t.Fatalf("unexpected document, expected: %v, got: %v", expectedError, err) } }