Пример #1
0
        public void EnterMaintenance_WithNoParams_ShouldSucceed()
        {
            MaintenanceControlService svc = new MaintenanceControlService(
                _dirMapperSvc,
                FakeStateStoreService.Create());

            svc.EnterMaintanence();

            IMaintenanceState state = svc.GetState();

            state.IsMaintenanceOn.ShouldBeTrue();
            state.ExpirationDate.ShouldBeNull();
        }
Пример #2
0
        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();
        }
Пример #3
0
        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}.");
        }
Пример #4
0
        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();
        }
Пример #5
0
        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);
        }