Exemplo n.º 1
0
        public async Task Invoke_Should_ReturnProblemDetailsResult_ForApplicationException_WhenExceptionThrown()
        {
            _nextMock.Setup(n => n.Invoke(It.IsAny <HttpContext>())).Throws(new ApplicationException());
            ProblemDetailsResult result = null;

            _actionResultExecutorMock.Setup(e => e.ExecuteAsync(It.IsAny <ActionContext>(), It.IsAny <ObjectResult>()))
            .Callback <ActionContext, ObjectResult>((actionContext, actionResult) => result = (ProblemDetailsResult)actionResult)
            .Returns(Task.CompletedTask);

            var services = new ServiceCollection();

            services.AddTransient((_) => _actionResultExecutorMock.Object);
            var context = new DefaultHttpContext
            {
                RequestServices = services.BuildServiceProvider()
            };

            await _middleware.Invoke(context);

            result.Should().NotBeNull();
            result.StatusCode.Should().Be((int)HttpStatusCode.InternalServerError);
            result.Value.ShouldNotBeNull(HttpStatusCode.InternalServerError);
        }
        public async Task AddHttpExceptions_Should_AddAllRequiredServices()
        {
            var services = new ServiceCollection();

            services.AddHttpExceptions(options => options.IncludeExceptionDetails = (_) => true);

            var servicesProvider = services.BuildServiceProvider();

            var middleware = new HttpExceptionsMiddleware(
                new Mock <RequestDelegate>().Object,
                servicesProvider.GetRequiredService <IOptions <HttpExceptionsOptions> >(),
                new Mock <ILogger <HttpExceptionsMiddleware> >().Object);

            await middleware.Invoke(new DefaultHttpContext());
        }
        public async Task AddHttpExceptions_Should_AddAllRequiredServices_UsingIMvcCoreBuilder()
        {
            var services   = new ServiceCollection();
            var mvcBuilder = new Mock <IMvcCoreBuilder>();

            mvcBuilder.Setup(m => m.Services).Returns(services);

            mvcBuilder.Object.AddHttpExceptions(options => { });

            var servicesProvider = services.BuildServiceProvider();

            var middleware = new HttpExceptionsMiddleware(
                new Mock <RequestDelegate>().Object,
                servicesProvider.GetRequiredService <IOptions <HttpExceptionsOptions> >(),
                new Mock <ILogger <HttpExceptionsMiddleware> >().Object);

            await middleware.Invoke(new DefaultHttpContext());
        }