Пример #1
0
        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;
 }
Пример #4
0
        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));
        }
Пример #5
0
 public SplitFilter(IFilter <TSplit> split, MergeFilterContextProvider <TInput, TSplit> contextProvider,
                    FilterContextProvider <TSplit, TInput> inputContextProvider)
 {
     _split                = split;
     _contextProvider      = contextProvider;
     _inputContextProvider = inputContextProvider;
 }
Пример #6
0
        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>();
        }
Пример #7
0
        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);
        }