public void ShouldReturnGenericErrorWhenInProduction(Exception exception) { // Arrange var environment = A.Fake <IHostingEnvironment>(opts => { opts.ConfigureFake(env => env.EnvironmentName = "Production"); }); var filter = new ExceptionFilter(environment); var filterContext = FilterContextProvider.GetExceptionContext(exception); // Act filter.OnException(filterContext); // Assert filterContext.HttpContext.Response.StatusCode.ShouldBe((int)HttpStatusCode.InternalServerError); var result = filterContext.Result as JsonResult; result.ShouldNotBeNull(); result.Value.ShouldBeOfType <Error>(); var error = (Error)result.Value; error.Type.ShouldBe(ErrorType.Critical); error.Messages.ShouldNotBeEmpty(); }
public Builder(IPipeBuilder <TContext> builder, MergeFilterContextProvider <TContext, TFilter> contextProvider, FilterContextProvider <TFilter, TContext> inputContextProvider) { _builder = builder; _contextProvider = contextProvider; _inputContextProvider = inputContextProvider; }
public SplitFilterPipeSpecification(IPipeSpecification <TFilter> specification, MergeFilterContextProvider <TContext, TFilter> contextProvider, FilterContextProvider <TFilter, TContext> inputContextProvider) { _specification = specification; _contextProvider = contextProvider; _inputContextProvider = inputContextProvider; }
public void ShouldReturnBadRequestWhenThereAreModelStateErrros(Dictionary <string, string> errors) { // Arrange var context = FilterContextProvider.GetActionExecutingContext("POST"); foreach (var e in errors) { context.ModelState.AddModelError(e.Key, e.Value); } var filter = new ModelStateFilter(); // Act filter.OnActionExecuting(context); // Assert var result = context.Result.ShouldBeOfType <BadRequestObjectResult>(); var error = result.Value.ShouldBeOfType <Error>(); var expectedErrorMessages = errors .Select(e => e.Value) .ToArray(); error.Messages.ShouldAllBe(e => expectedErrorMessages.Contains(e)); }
public SplitFilter(IFilter <TSplit> split, MergeFilterContextProvider <TInput, TSplit> contextProvider, FilterContextProvider <TSplit, TInput> inputContextProvider) { _split = split; _contextProvider = contextProvider; _inputContextProvider = inputContextProvider; }
public void ShouldDoNothingWhenThereAreNoModelStateErrors() { // Arrange var context = FilterContextProvider.GetActionExecutingContext("POST"); // Purposefully not adding any errors var filter = new ModelStateFilter(); // Act filter.OnActionExecuting(context); // Assert context.Result.ShouldNotBeOfType <BadRequestObjectResult>(); }
public void ShouldReturnSerializedExceptionWhenInDevelopment(Exception exception) { // Arrange var environmentMock = new Mock <IHostingEnvironment>(); environmentMock .Setup(e => e.EnvironmentName) .Returns("Development"); var filter = new ExceptionFilter(environmentMock.Object); var filterContext = FilterContextProvider.GetExceptionContext(exception); // Act filter.OnException(filterContext); // Assert filterContext.HttpContext.Response.StatusCode.ShouldBe((int)HttpStatusCode.InternalServerError); var result = filterContext.Result as JsonResult; result.ShouldNotBeNull(); result.Value.ShouldBeOfType <Exception>(); ((Exception)result.Value).Message.ShouldBe(exception.Message); }
/// <summary> /// Adds a filter to the pipe which is of a different type than the native pipe context type /// </summary> /// <typeparam name="TContext">The context type</typeparam> /// <typeparam name="TFilter">The filter context type</typeparam> /// <param name="configurator">The pipe configurator</param> /// <param name="filter">The filter to add</param> /// <param name="contextProvider"></param> /// <param name="inputContextProvider"></param> public static void UseFilter <TContext, TFilter>(this IPipeConfigurator <TContext> configurator, IFilter <TFilter> filter, MergeFilterContextProvider <TContext, TFilter> contextProvider, FilterContextProvider <TFilter, TContext> inputContextProvider) where TContext : class, TFilter where TFilter : class, PipeContext { if (configurator == null) { throw new ArgumentNullException(nameof(configurator)); } var filterSpecification = new FilterPipeSpecification <TFilter>(filter); var pipeBuilderConfigurator = new SplitFilterPipeSpecification <TContext, TFilter>(filterSpecification, contextProvider, inputContextProvider); configurator.AddPipeSpecification(pipeBuilderConfigurator); }