public void Can_Create_Wrapper_With_DataLoaderContextProvider_Support() { var wrapper = UserContextWrapper.Create(new UserContextWithDataLoaderContextProvider(), new DependencyInjector()); Assert.IsNotNull(wrapper); Assert.IsInstanceOfType(wrapper, typeof(IDataLoaderContextProvider)); }
public void Can_Create_Wrapper_Without_DataLoaderContextProvider_Support() { var wrapper = UserContextWrapper.Create(new UserContext(), new DependencyInjector()); Assert.IsNotNull(wrapper); Assert.IsFalse(wrapper is IDataLoaderContextProvider); }
public async Task <ExecutionResult> ExecuteAsync(ExecutionContext context) { var outerUserContextWrapper = context.UserContext; var userContext = (context.UserContext as IUserContextAccessor)?.UserContext; try { context.UserContext = UserContextWrapper.Create(userContext, _injector); return(await _innerStrategy.ExecuteAsync(context)); } finally { context.UserContext = outerUserContextWrapper; } }
internal async Task <ExecutionResult> Execute( object rootObject, string query, string operationName, Inputs inputs, IUserContext userContext, IDependencyInjector dependencyInjector, ComplexityConfiguration complexityConfiguration, bool enableValidation = true, bool enableProfiling = false, IEnumerable <IValidationRule> rules = null, CancellationToken cancellationToken = default, IEnumerable <IDocumentExecutionListener> listeners = null) { if (!enableValidation) { rules = new[] { new NoopValidationRule() }; } var configuration = new ExecutionOptions { Schema = _schema, Root = rootObject, Query = query, OperationName = operationName, Inputs = inputs, UserContext = UserContextWrapper.Create(userContext, dependencyInjector ?? new WrappedDependencyInjector(_constructor.TypeResolutionDelegate)), ValidationRules = rules != null && rules.Any() ? rules : null, ComplexityConfiguration = complexityConfiguration, CancellationToken = cancellationToken, ExposeExceptions = _exposeExceptions }; if (listeners != null && listeners.Any()) { foreach (var listener in listeners) { configuration.Listeners.Add(listener); } } if (userContext is IDataLoaderContextProvider) { configuration.Listeners.Add(new DataLoaderListener()); } if (enableProfiling) { configuration.FieldMiddleware.Use <InstrumentFieldsMiddleware>(); } foreach (var middleware in _middleware) { configuration.FieldMiddleware.Use(middleware); } var result = await _documentExecutor.ExecuteAsync(configuration).ConfigureAwait(false); if (result.Errors != null && _errorTransformation != null) { result.Errors = _errorTransformation.Transform(result.Errors); } return(result); }
public void Should_Forward_DataLoaderContextProvider_FetchData_Call() { var wrapper = UserContextWrapper.Create(new UserContextWithDataLoaderContextProvider(), new DependencyInjector()); Assert.ThrowsException <FetchDataCalledException>(() => (wrapper as IDataLoaderContextProvider).FetchData(CancellationToken.None)); }
internal async Task <ExecutionResult> Execute( object rootObject, string query, string operationName, Inputs inputs, IUserContext userContext, IDependencyInjector dependencyInjector, ComplexityConfiguration complexityConfiguration, bool enableValidation = true, bool enableProfiling = false, IEnumerable <IValidationRule> rules = null, CancellationToken cancellationToken = default(CancellationToken)) { if (!enableValidation) { rules = new[] { new NoopValidationRule() }; } var configuration = new ExecutionOptions { Schema = _schema, Root = rootObject, Query = query, OperationName = operationName, Inputs = inputs, UserContext = UserContextWrapper.Create(userContext, dependencyInjector ?? new WrappedDependencyInjector(_constructor.TypeResolutionDelegate)), ValidationRules = rules != null && rules.Any() ? rules : null, ComplexityConfiguration = complexityConfiguration, CancellationToken = cancellationToken, }; if (userContext is IDataLoaderContextProvider) { configuration.Listeners.Add(new DataLoaderListener()); } if (enableProfiling) { configuration.FieldMiddleware.Use <InstrumentFieldsMiddleware>(); } foreach (var middleware in _middleware) { configuration.FieldMiddleware.Use(middleware); } var result = await _documentExecutor.ExecuteAsync(configuration).ConfigureAwait(false); if (result.Errors != null) { var errors = new ExecutionErrors(); foreach (var executionError in result.Errors) { var exception = new FieldResolutionException(executionError); var error = new ExecutionError(exception.Message, exception); foreach (var location in executionError.Locations ?? new ErrorLocation[0]) { error.AddLocation(location.Line, location.Column); } error.Path.AddRange(executionError.Path); errors.Add(error); } result.Errors = errors; } return(result); }