public void EnterMaintenance_WithNoParams_ShouldSucceed() { MaintenanceControlService svc = new MaintenanceControlService( _dirMapperSvc, FakeStateStoreService.Create()); svc.EnterMaintanence(); IMaintenanceState state = svc.GetState(); state.IsMaintenanceOn.ShouldBeTrue(); state.ExpirationDate.ShouldBeNull(); }
public void EnterMaintenance_WithExpirationDate_ShouldSucceed() { MaintenanceControlService svc = new MaintenanceControlService( _dirMapperSvc, FakeStateStoreService.Create()); svc.EnterMaintanence(DateTime.Now.AddSeconds(5)); IMaintenanceState state = svc.GetState() .ShouldNotBeNull(); state.IsMaintenanceOn.ShouldBeTrue(); state.ExpirationDate.ShouldNotBeNull(); }
public void EnterMaintenance_WithExpirationDate_ShouldEndMaintenanceAutomatically() { MaintenanceControlService svc = new MaintenanceControlService( _dirMapperSvc, FakeStateStoreService.Create()); svc.EnterMaintanence(DateTime.Now.AddSeconds(5)); IMaintenanceState state = svc.GetState(); TimeSpan delay = state.ExpirationDate.Value - DateTime.Now; Thread.Sleep((int)delay.TotalMilliseconds + 1000); svc.GetState().IsMaintenanceOn .ShouldBeFalse($"The maintenance mode didn't automatically end after the set {nameof(state.ExpirationDate)} date: {state.ExpirationDate}."); }
public void EnterMaintenance_WithNoMiddlewareOptions_GetOptionsToOverrideShouldReturnNull() { MaintenanceControlService svc = new MaintenanceControlService( _dirMapperSvc, FakeStateStoreService.Create()); svc.EnterMaintanence(); IMaintenanceState state = svc.GetState(); IMiddlewareOptionsContainer optionsContainer = (IMiddlewareOptionsContainer)state; optionsContainer ?.MiddlewareOptions .ShouldBeNull(); }
private bool ShouldAllowRequest(HttpContext context) { IMaintenanceState maintenanceState = _maintenanceCtrlSvc .GetState(); if (maintenanceState.IsMaintenanceOn) { OptionCollection options = GetLatestOptions(); return(options .GetAll <IAllowedRequestMatcher>() .Any(matcher => matcher.IsMatch(context))); } return(true); }