public async Task Invoke_DoesNotTriggerAnarchyManager_ForAnarchyRoutes() { // Arrange var anarchyManager = Substitute.For <IAnarchyManagerNew>(); var exceptionHandler = Substitute.For <IHandleAnarchyExceptions>(); var next = Substitute.For <RequestDelegate>(); var context = Get.CustomBuilderFor.MockHttpContext.WithPath("/anarchy/foo").Build(); var logger = Substitute.For <ILogger <AnarchyMiddleware> >(); var sut = new AnarchyMiddleware(next, anarchyManager, exceptionHandler, logger); // Act await sut.Invoke(context); // Assert await anarchyManager.DidNotReceive().HandleRequest(context, next); }
public async Task Invoke_HandlesErrorFromNextRequestDelegate() { // Arrange var testException = new ApplicationException("this is a test exception"); var anarchyManager = Substitute.For <IAnarchyManagerNew>(); var exceptionHandler = Substitute.For <IHandleAnarchyExceptions>(); var next = Substitute.For <RequestDelegate>(); next.Invoke(Arg.Any <HttpContext>()).Throws(testException); var context = Get.CustomBuilderFor.MockHttpContext.WithPath("/anarchy/bob").Build(); var logger = Substitute.For <ILogger <AnarchyMiddleware> >(); var sut = new AnarchyMiddleware(next, anarchyManager, exceptionHandler, logger); // Act await sut.Invoke(context); // Assert await exceptionHandler.Received(1).HandleAsync(context.Response, testException); }
public async Task Invoke_DoesNotCallNext_ForNonAnarchyRoutes_ThatAffectResponse() { // Arrange var anarchyManager = Substitute.For <IAnarchyManagerNew>(); anarchyManager .HandleRequest(Arg.Any <HttpContext>(), Arg.Any <RequestDelegate>()) .Returns(Task.FromResult(true)); var exceptionHandler = Substitute.For <IHandleAnarchyExceptions>(); var next = Substitute.For <RequestDelegate>(); var context = Get.CustomBuilderFor.MockHttpContext.WithPath("/foo").Build(); var logger = Substitute.For <ILogger <AnarchyMiddleware> >(); var sut = new AnarchyMiddleware(next, anarchyManager, exceptionHandler, logger); // Act await sut.Invoke(context); // Assert await next.DidNotReceive().Invoke(context); }