public void InvokeThrowsExceptionWithNullContextTest() { RequestDelegate next = delegate { return(Task.CompletedTask); }; var logger = _output.BuildLoggerFor <OversizeDataExceptionMiddleware>(); var executor = Substitute.For <IResultExecutor>(); var config = Model.Create <PhotoConfig>(); var sut = new OversizeDataExceptionMiddleware(next, logger, executor, config); Func <Task> action = async() => await sut.Invoke(null).ConfigureAwait(false); action.Should().Throw <ArgumentNullException>(); }
public async Task InvokeDoesNotRunExecutorWhenDelegateIsSuccessfulTest() { RequestDelegate next = delegate { return(Task.CompletedTask); }; var logger = _output.BuildLoggerFor <OversizeDataExceptionMiddleware>(); var executor = Substitute.For <IResultExecutor>(); var context = Substitute.For <HttpContext>(); var config = Model.Create <PhotoConfig>(); var sut = new OversizeDataExceptionMiddleware(next, logger, executor, config); await sut.Invoke(context).ConfigureAwait(false); await executor.DidNotReceive().Execute(Arg.Any <HttpContext>(), Arg.Any <ObjectResult>()) .ConfigureAwait(false); }
public void InvokeThrowsExceptionWhenDelegateThrowsOtherExceptionTest() { RequestDelegate next = delegate { throw new InvalidOperationException(); }; var logger = _output.BuildLoggerFor <OversizeDataExceptionMiddleware>(); var executor = Substitute.For <IResultExecutor>(); var context = Substitute.For <HttpContext>(); var config = Model.Create <PhotoConfig>(); var response = Substitute.For <HttpResponse>(); context.Response.Returns(response); response.HasStarted.Returns(true); var sut = new OversizeDataExceptionMiddleware(next, logger, executor, config); Func <Task> action = async() => await sut.Invoke(context).ConfigureAwait(false); action.Should().Throw <InvalidOperationException>(); }
public async Task InvokeSendsBadRequestToExecutorWhenDelegateThrowsInvalidDataExceptionTest() { var config = Model.Create <PhotoConfig>(); var expectedMessage = string.Format(CultureInfo.InvariantCulture, "Multipart body length limit {0} exceeded", config.MaxLength); RequestDelegate next = delegate { throw new InvalidDataException(expectedMessage); }; var logger = _output.BuildLoggerFor <OversizeDataExceptionMiddleware>(); var executor = Substitute.For <IResultExecutor>(); var context = Substitute.For <HttpContext>(); var sut = new OversizeDataExceptionMiddleware(next, logger, executor, config); await sut.Invoke(context).ConfigureAwait(false); await executor.Received().Execute( context, Arg.Is <ObjectResult>(x => x.StatusCode == (int)HttpStatusCode.BadRequest)) .ConfigureAwait(false); }