public ValidateQueryMiddleware( QueryDelegate next, IDocumentValidatorFactory validatorFactory, Cache <DocumentValidatorResult> validatorCache, QueryExecutionDiagnostics diagnostics) { if (validatorFactory == null) { throw new ArgumentNullException(nameof(validatorFactory)); } _next = next ?? throw new ArgumentNullException(nameof(next)); _validator = validatorFactory.CreateValidator(); _validatorCache = validatorCache ?? new Cache <DocumentValidatorResult>(Defaults.CacheSize); _diagnostics = diagnostics ?? throw new ArgumentNullException(nameof(diagnostics)); }
public void DuplicatesWillBeIgnoredOnFieldMerging() { // arrange ISchema schema = SchemaBuilder.New() .AddStarWarsTypes() .Create(); DocumentNode document = Utf8GraphQLParser.Parse( FileResource.Open("InvalidIntrospectionQuery.graphql")); var originalOperation = ((OperationDefinitionNode)document.Definitions[0]); OperationDefinitionNode operationWithDuplicates = originalOperation.WithSelectionSet( originalOperation.SelectionSet.WithSelections( new List <ISelectionNode> { originalOperation.SelectionSet.Selections[0], originalOperation.SelectionSet.Selections[0] })); document = document.WithDefinitions( new List <IDefinitionNode>(document.Definitions.Skip(1)) { operationWithDuplicates }); ServiceProvider services = new ServiceCollection() .AddValidation() .Services .BuildServiceProvider(); IDocumentValidatorFactory factory = services.GetRequiredService <IDocumentValidatorFactory>(); IDocumentValidator validator = factory.CreateValidator(); // act DocumentValidatorResult result = validator.Validate(schema, document); // assert Assert.False(result.HasErrors); }