public void ExecuteThrowsExceptionWhenResponseStartedTest() { var mvcOptions = new MvcOptions(); var options = Substitute.For <IOptions <MvcOptions> >(); var writerFactory = Substitute.For <IHttpResponseStreamWriterFactory>(); var loggerFactory = Substitute.For <ILoggerFactory>(); options.Value.Returns(mvcOptions); var formatSelector = new DefaultOutputFormatterSelector(options, loggerFactory); var executor = new ObjectResultExecutor(formatSelector, writerFactory, loggerFactory); var result = new ObjectResult(Guid.NewGuid().ToString()); var context = Substitute.For <HttpContext>(); var response = Substitute.For <HttpResponse>(); response.HasStarted.Returns(true); context.Response.Returns(response); var sut = new ResultExecutor(executor); Func <Task> action = async() => await sut.Execute(context, result).ConfigureAwait(false); action.Should().Throw <InvalidOperationException>(); }
public ExceptionHandlingMiddleware( RequestDelegate next, IHostingEnvironment environment, ILogger <ExceptionHandlingMiddleware> logger, ObjectResultExecutor objectResultExecutor ) { _next = next; _environment = environment; _logger = logger; _objectResultExecutor = objectResultExecutor; }
public ApiErrorHandlerMiddleware( RequestDelegate next, ILogger <ApiErrorHandlerMiddleware> logger, ObjectResultExecutor objectResultExecutor, IContextProblemDetectionHandler contextProblemDetectionHandler, IExceptionProblemDetectionHandler exceptionProblemDetectionHandler) { _next = next; _logger = logger; _objectResultExecutor = objectResultExecutor; _contextProblemDetectionHandler = contextProblemDetectionHandler; _exceptionProblemDetectionHandler = exceptionProblemDetectionHandler; }
public ApiErrorHandlerMiddleware( RequestDelegate next, ILoggerFactory loggerFactory, ObjectResultExecutor objectResultExecutor) { _next = next; _logger = loggerFactory.CreateLogger <ApiErrorHandlerMiddleware>(); _objectResultExecutor = objectResultExecutor; var defaultProblemDetectionHandler = new DefaultProblemDetectionHandler(loggerFactory.CreateLogger <DefaultProblemDetectionHandler>()); _contextProblemDetectionHandler = defaultProblemDetectionHandler; _exceptionProblemDetectionHandler = defaultProblemDetectionHandler; }
private IServiceProvider CreateServices() { var services = new ServiceCollection(); services .AddEntityFramework() .AddInMemoryDatabase(); services.Add(new ServiceDescriptor( typeof(ILoggerFactory), NullLoggerFactory.Instance)); services.AddMvc(); // helper taken from // https://github.com/aspnet/Mvc/blob/514054a66db398171d25494d7c0494f134e8f80a/test/Microsoft.AspNet.Mvc.Core.Test/HttpOkObjectResultTest.cs // which contains the following setup for ObjectResult testing... services.Add(new ServiceDescriptor( typeof(ILogger <ObjectResult>), new Logger <ObjectResult>(NullLoggerFactory.Instance))); var optionsAccessor = new OptionsManager <MvcOptions>(Enumerable.Empty <IConfigureOptions <MvcOptions> >()); optionsAccessor.Value.OutputFormatters.Add(new JsonOutputFormatter()); services.Add(new ServiceDescriptor(typeof(IOptions <MvcOptions>), optionsAccessor)); var bindingContext = new ActionBindingContext { OutputFormatters = optionsAccessor.Value.OutputFormatters, }; var bindingContextAccessor = new ActionBindingContextAccessor { ActionBindingContext = bindingContext, }; services.Add(new ServiceDescriptor(typeof(IActionBindingContextAccessor), bindingContextAccessor)); var executor = new ObjectResultExecutor(optionsAccessor, bindingContextAccessor, new TestHttpResponseStreamWriterFactory(), NullLoggerFactory.Instance); services.Add(new ServiceDescriptor(typeof(ObjectResultExecutor), executor)); return(services.BuildServiceProvider()); }
public HttpProblemDetailsMiddleware(RequestDelegate next, ILoggerFactory loggerFactory, ObjectResultExecutor objectResultExecutor) { if (next == null) { throw new ArgumentNullException(nameof(next)); } if (loggerFactory == null) { throw new ArgumentNullException(nameof(loggerFactory)); } if (objectResultExecutor == null) { throw new ArgumentNullException(nameof(objectResultExecutor)); } _next = next; _logger = loggerFactory.CreateLogger <HttpProblemDetailsMiddleware>(); _objectResultExecutor = objectResultExecutor; }
public void ExecuteThrowsExceptionWithNullContextTest() { var mvcOptions = new MvcOptions(); var options = Substitute.For <IOptions <MvcOptions> >(); options.Value.Returns(mvcOptions); var writerFactory = Substitute.For <IHttpResponseStreamWriterFactory>(); var loggerFactory = Substitute.For <ILoggerFactory>(); var formatSelector = new DefaultOutputFormatterSelector(options, loggerFactory); var executor = new ObjectResultExecutor(formatSelector, writerFactory, loggerFactory); var result = new ObjectResult(Guid.NewGuid().ToString()); var sut = new ResultExecutor(executor); Func <Task> action = async() => await sut.Execute(null, result).ConfigureAwait(false); action.Should().Throw <ArgumentNullException>(); }
private static async Task WriteResponseBodyAsync(HttpContext context, Problem problem, ObjectResultExecutor objectResultExecutor) { var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var objectResult = new ObjectResult(problem); await objectResultExecutor.ExecuteAsync(actionContext, objectResult); }
public ResultExecutor(ObjectResultExecutor oex) { Ensure.Any.IsNotNull(oex, nameof(oex)); _oex = oex; }