public async void Invoke_WithMaintenanceStateSet_NextDelegateShouldBeCalledOnlyWhenMaintenanceIsOn(bool isOn) { DefaultHttpContext httpContext = new DefaultHttpContext(); IMaintenanceControlService svc = Substitute.For <IMaintenanceControlService>(); svc.GetState().Returns(new MaintenanceState { IsMaintenanceOn = isOn }); bool isNextDelegateCalled = false; MaintenanceMiddleware middleware = new MaintenanceMiddleware( (hc) => { isNextDelegateCalled = true; return(Task.CompletedTask); }, svc, null, (options) => { }); await middleware.Invoke(httpContext); isNextDelegateCalled.ShouldBe(!isOn); }
public void Invoke_WhenMaintenanceModeIsOn_ShouldNotThrow() { DefaultHttpContext httpContext = new DefaultHttpContext(); IMaintenanceControlService svc = Substitute.For <IMaintenanceControlService>(); svc.GetState().Returns(new MaintenanceState { IsMaintenanceOn = true }); MaintenanceMiddleware middleware = new MaintenanceMiddleware( (hc) => { return(Task.CompletedTask); }, svc, null, (options) => { }); Action testAction = async() => await middleware.Invoke(httpContext); testAction.ShouldNotThrow(); }
private MiddlewareTestDesk GetTestDesk( Action <HttpContext> contextSetup, Action <IMiddlewareOptionsBuilder> optionsSetup, Action <IMiddlewareOptionsBuilder> optionsOverrideSetup = null, string tempDir = null) { DefaultHttpContext httpContext = new DefaultHttpContext(); httpContext.Response.Body = new MemoryStream(); contextSetup(httpContext); bool isNextDelegateCalled = false; RequestDelegate nextDelegate = (HttpContext hc) => { isNextDelegateCalled = true; return(Task.CompletedTask); }; if (tempDir == null) { tempDir = Path.GetTempPath(); } IDirectoryMapperService dirMapperSvc = FakeDirectoryMapperService.Create(tempDir); OptionCollection middlewareOptions = null; if (optionsOverrideSetup != null) { MiddlewareOptionsBuilder optionOverrideBuilder = new MiddlewareOptionsBuilder(dirMapperSvc); optionsOverrideSetup.Invoke(optionOverrideBuilder); middlewareOptions = optionOverrideBuilder.GetOptions(); } IMaintenanceControlService svc = Substitute.For <IMaintenanceControlService>(); svc.GetState().Returns(new MaintenanceState(null, isMaintenanceOn: true, middlewareOptions)); MaintenanceMiddleware middleware = new MaintenanceMiddleware( nextDelegate, svc, dirMapperSvc, optionsSetup); return(new MiddlewareTestDesk { CurrentHttpContext = httpContext, IsNextDelegateCalled = isNextDelegateCalled, MiddlewareInstance = middleware }); }