Пример #1
0
		public LoadBalancerBodyView(IApplicationInstanceContext context, IResourceFileLocator fileLocator, ITokenReplacer replacer, IAdministratorSecurityChecker securityChecker)
		{
			_context = context;
			_fileLocator = fileLocator;
			_replacer = replacer;
			_securityChecker = securityChecker;
		}
        public void Should_disable_load_balancing_when_requested()
        {
            ApplicationInstance instance = new ApplicationInstance();

            instance.AvailableForLoadBalancing = false;

            MockRepository mocks = new MockRepository();
            IApplicationInstanceContext instanceContext = mocks.CreateMock <IApplicationInstanceContext>();
            IWebContext context = mocks.CreateMock <IWebContext>();
            ISecureAvailabilityStatusUpdater updater = mocks.CreateMock <ISecureAvailabilityStatusUpdater>();

            using (mocks.Record())
            {
                Expect.Call(instanceContext.GetCurrent()).Return(instance);
                Expect.Call(context.GetRequestItem(LoadBalanceStatusManager.ENABLED_PARAM)).Return("FALSE");
                Expect.Call(updater.SetStatus(false)).Return(string.Empty);
            }

            using (mocks.Playback())
            {
                ILoadBalanceStatusManager manager = new LoadBalanceStatusManager(instanceContext, context, updater);
                string errorMessage = manager.HandleLoadBalanceRequest();

                Assert.That(errorMessage, Is.Empty);
            }
        }
		public MaintenanceRedirectionChecker(IFileExtensionChecker extensionChecker, IExternalUrlChecker urlChecker, IApplicationInstanceContext 
		context)
		{
			_extensionChecker = extensionChecker;
			_urlChecker = urlChecker;
			_context = context;
		}
        public void Return_status_400_message_if_instance_should_be_offline_and_status_not_being_changed()
        {
            ApplicationInstance instance = new ApplicationInstance();

            instance.AvailableForLoadBalancing = false;

            MockRepository mocks = new MockRepository();
            IApplicationInstanceContext instanceContext = mocks.CreateMock <IApplicationInstanceContext>();
            IWebContext context = mocks.CreateMock <IWebContext>();

            using (mocks.Record())
            {
                Expect.Call(instanceContext.GetCurrent()).Return(instance);
                Expect.Call(context.GetRequestItem(LoadBalanceStatusManager.ENABLED_PARAM)).Return(null);
                context.SetHttpResponseStatus(400, "This application has been turned off");
            }

            using (mocks.Playback())
            {
                ILoadBalanceStatusManager manager = new LoadBalanceStatusManager(instanceContext, context, null);
                string errorMessage = manager.HandleLoadBalanceRequest();

                Assert.That(errorMessage, Is.Empty);
            }
        }
Пример #5
0
 public MaintenanceRedirectionChecker(IFileExtensionChecker extensionChecker, IExternalUrlChecker urlChecker, IApplicationInstanceContext
                                      context)
 {
     _extensionChecker = extensionChecker;
     _urlChecker       = urlChecker;
     _context          = context;
 }
Пример #6
0
 public LoadBalancerBodyView(IApplicationInstanceContext context, IResourceFileLocator fileLocator, ITokenReplacer replacer, IAdministratorSecurityChecker securityChecker)
 {
     _context         = context;
     _fileLocator     = fileLocator;
     _replacer        = replacer;
     _securityChecker = securityChecker;
 }
        public void Correctly_returns_html_for_error_authenticated_page_with_disabled_instance()
        {
            string errorMessage = "An error has occured!";
            string bodyTemplate = "body template";

            ApplicationInstance instance = new ApplicationInstance();

            instance.MachineName = "MyMachine";
            instance.AvailableForLoadBalancing = false;

            MockRepository mocks = new MockRepository();
            IApplicationInstanceContext context     = mocks.CreateMock <IApplicationInstanceContext>();
            IResourceFileLocator        fileLocator = mocks.CreateMock <IResourceFileLocator>();
            ITokenReplacer replacer = mocks.CreateMock <ITokenReplacer>();
            IAdministratorSecurityChecker securityChecker = mocks.CreateMock <IAdministratorSecurityChecker>();

            using (mocks.Record())
            {
                Expect.Call(securityChecker.IsCurrentUserAdministrator()).Return(true);

                Expect.Call(context.GetCurrent()).Return(instance);
                Expect.Call(fileLocator.ReadTextFile("Tarantino.Core", LoadBalancerBodyView.LoadBalancerBodyTemplate)).Return(bodyTemplate);
                replacer.Text = bodyTemplate;

                replacer.Replace("ERROR_MESSAGE", errorMessage);
                replacer.Replace("CURRENT_STATE", "disabled");
                replacer.Replace("MACHINE", "MyMachine");
                replacer.Replace("CHANGE_STATE_LINK", "<a href=\"?enabled=True\">enable</a>");

                Expect.Call(replacer.Text).Return("formatted HTML");
            }

            using (mocks.Playback())
            {
                ILoadBalancerBodyView view = new LoadBalancerBodyView(context, fileLocator, replacer, securityChecker);
                string html = view.BuildHtml(errorMessage);

                Assert.That(html, Is.EqualTo("formatted HTML"));
            }
        }
        public void Correctly_disables_application_instance()
        {
            ApplicationInstance instance = new ApplicationInstance();

            MockRepository mocks = new MockRepository();
            IApplicationInstanceRepository repository = mocks.CreateMock <IApplicationInstanceRepository>();
            IApplicationInstanceContext    context    = mocks.CreateMock <IApplicationInstanceContext>();

            using (mocks.Record())
            {
                Expect.Call(context.GetCurrent()).Return(instance);
                repository.Save(instance);
            }

            using (mocks.Playback())
            {
                IAvailabilityStatusUpdater updater = new AvailabilityStatusUpdater(repository, context);
                updater.SetAvailabilityStatus(false);

                Assert.That(instance.AvailableForLoadBalancing, Is.False);
            }

            mocks.VerifyAll();
        }
Пример #9
0
        private void performTest(bool isRedirectableExtension, bool isExternalUrl, bool isDownForMaintenance, bool shouldBeRedirected)
        {
            ApplicationInstance instance = new ApplicationInstance();

            instance.DownForMaintenance = isDownForMaintenance;

            MockRepository              mocks            = new MockRepository();
            IFileExtensionChecker       extensionChecker = mocks.CreateMock <IFileExtensionChecker>();
            IExternalUrlChecker         urlChecker       = mocks.CreateMock <IExternalUrlChecker>();
            IApplicationInstanceContext context          = mocks.CreateMock <IApplicationInstanceContext>();

            using (mocks.Record())
            {
                Expect.Call(extensionChecker.CurrentUrlCanBeRedirected()).Return(isRedirectableExtension);
                Expect.Call(urlChecker.CurrentUrlIsExternal()).Return(isExternalUrl);
                Expect.Call(context.GetCurrent()).Return(instance);
            }

            using (mocks.Playback())
            {
                IMaintenanceRedirectionChecker checker = new MaintenanceRedirectionChecker(extensionChecker, urlChecker, context);
                Assert.That(checker.ShouldBeRedirectedToMaintenancePage(), Is.EqualTo(shouldBeRedirected));
            }
        }
		public AvailabilityStatusUpdater(IApplicationInstanceRepository repository, IApplicationInstanceContext context)
		{
			_repository = repository;
			_context = context;
		}
Пример #11
0
 public AvailabilityStatusUpdater(IApplicationInstanceRepository repository, IApplicationInstanceContext context)
 {
     _repository = repository;
     _context    = context;
 }
		public LoadBalanceStatusManager(IApplicationInstanceContext instanceContext, IWebContext context, ISecureAvailabilityStatusUpdater statusUpdater)
		{
			_instanceContext = instanceContext;
			_context = context;
			_statusUpdater = statusUpdater;
		}
Пример #13
0
 public LoadBalanceStatusManager(IApplicationInstanceContext instanceContext, IWebContext context, ISecureAvailabilityStatusUpdater statusUpdater)
 {
     _instanceContext = instanceContext;
     _context         = context;
     _statusUpdater   = statusUpdater;
 }