public LoadBalancerBodyView(IApplicationInstanceContext context, IResourceFileLocator fileLocator, ITokenReplacer replacer, IAdministratorSecurityChecker securityChecker)
		{
			_context = context;
			_fileLocator = fileLocator;
			_replacer = replacer;
			_securityChecker = securityChecker;
		}
示例#2
0
 public LoadBalancerBodyView(IApplicationInstanceContext context, IResourceFileLocator fileLocator, ITokenReplacer replacer, IAdministratorSecurityChecker securityChecker)
 {
     _context         = context;
     _fileLocator     = fileLocator;
     _replacer        = replacer;
     _securityChecker = securityChecker;
 }
 public ApplicationListingBodyView(IAdministratorSecurityChecker securityChecker, IApplicationInstanceRepository applicationInstanceRepository, IResourceFileLocator fileLocator, ITokenReplacer replacer, IApplicationListingRowView applicationListingRowView)
 {
     this.checker = securityChecker;
     this.applicationInstanceRepository = applicationInstanceRepository;
     this.fileLocator = fileLocator;
     this.replacer    = replacer;
     this.applicationListingRowView = applicationListingRowView;
 }
 public ApplicationListingBodyView(IAdministratorSecurityChecker securityChecker, IApplicationInstanceRepository applicationInstanceRepository, IResourceFileLocator fileLocator, ITokenReplacer replacer, IApplicationListingRowView applicationListingRowView)
 {
     this.checker = securityChecker;
     this.applicationInstanceRepository = applicationInstanceRepository;
     this.fileLocator = fileLocator;
     this.replacer = replacer;
     this.applicationListingRowView = applicationListingRowView;
 }
        public void Correctly_returns_html_for_page_for_an_administrator()
        {
            List <ApplicationInstance> applicationList = new List <ApplicationInstance>();

            //application group 1
            applicationList.Add(new ApplicationInstance());
            applicationList[0].MaintenanceHostHeader = "1";
            applicationList.Add(new ApplicationInstance());
            applicationList[1].MaintenanceHostHeader = "1";

            //application group 2
            applicationList.Add(new ApplicationInstance());
            applicationList[2].MaintenanceHostHeader = "2";
            applicationList.Add(new ApplicationInstance());
            applicationList[3].MaintenanceHostHeader = "2";

            MockRepository mocks = new MockRepository();
            IApplicationInstanceRepository repository  = mocks.CreateMock <IApplicationInstanceRepository>();
            IResourceFileLocator           fileLocator = mocks.CreateMock <IResourceFileLocator>();
            ITokenReplacer replacer = mocks.CreateMock <ITokenReplacer>();
            IAdministratorSecurityChecker securityChecker           = mocks.CreateMock <IAdministratorSecurityChecker>();
            IApplicationListingRowView    applicationListingRowView = mocks.CreateMock <IApplicationListingRowView>();

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

                Expect.Call(repository.GetAll()).Return(applicationList);
                Expect.Call(fileLocator.ReadTextFile("Tarantino.Core", ApplicationListingBodyView.BodyTemplate)).Return("body template");
                replacer.Text = "body template";
                Expect.Call(applicationListingRowView.BuildFirstRowHtml(applicationList[0], 2)).Return("1");
                Expect.Call(applicationListingRowView.BuildMRowHtml(applicationList[1])).Return("2");
                Expect.Call(applicationListingRowView.BuildFirstRowHtml(applicationList[2], 2)).Return("3");
                Expect.Call(applicationListingRowView.BuildMRowHtml(applicationList[3])).Return("4");
                replacer.Replace("ROWS", "1234");
                Expect.Call(replacer.Text).Return("formatted HTML");
            }

            using (mocks.Playback())
            {
                IApplicationListingBodyView view = new ApplicationListingBodyView(securityChecker, repository, fileLocator, replacer, applicationListingRowView);
                string html = view.BuildHtml();
                Assert.That(html, Is.EqualTo("formatted HTML"));
            }

            mocks.VerifyAll();
        }
示例#6
0
        public void Correctly_returns_error_when_user_is_not_an_administrator()
        {
            MockRepository mocks = new MockRepository();
            IAdministratorSecurityChecker checker = mocks.CreateMock <IAdministratorSecurityChecker>();

            using (mocks.Record())
            {
                Expect.Call(checker.IsCurrentUserAdministrator()).Return(false);
            }

            using (mocks.Playback())
            {
                ISecureAvailabilityStatusUpdater statusUpdater = new SecureAvailabilityStatusUpdater(checker, null, null);
                string errorMessage = statusUpdater.SetStatus(true);

                Assert.That(errorMessage, Is.EqualTo("Only authenticated users can change the load balancing status.\n"));
            }

            mocks.VerifyAll();
        }
        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 Builder_Should_return_a_friendly_not_suthorized_message_for_non_administrators()
        {
            MockRepository mocks    = new MockRepository();
            ITokenReplacer replacer = mocks.CreateMock <ITokenReplacer>();
            IAdministratorSecurityChecker securityChecker = mocks.CreateMock <IAdministratorSecurityChecker>();

            using (mocks.Record())
            {
                Expect.Call(securityChecker.IsCurrentUserAdministrator()).Return(false);
                replacer.Text = "Unauthorized request.";
                Expect.Call(replacer.Text).Return("formatted HTML");
            }

            using (mocks.Playback())
            {
                ApplicationListingBodyView view = new ApplicationListingBodyView(securityChecker, null, null, replacer, null);
                string html = view.BuildHtml();
                Assert.That(html, Is.EqualTo("formatted HTML"));
            }

            mocks.VerifyAll();
        }
示例#9
0
        public void Correctly_sets_availability_status_for_administrator()
        {
            MockRepository mocks = new MockRepository();
            IAdministratorSecurityChecker checker = mocks.CreateMock <IAdministratorSecurityChecker>();
            IWebContext context = mocks.CreateMock <IWebContext>();
            IAvailabilityStatusUpdater updater = mocks.CreateMock <IAvailabilityStatusUpdater>();

            using (mocks.Record())
            {
                Expect.Call(checker.IsCurrentUserAdministrator()).Return(true);
                updater.SetAvailabilityStatus(true);
                Expect.Call(context.GetCurrentUrl()).Return("http://mydomain/");
                context.Redirect("http://mydomain/");
            }

            using (mocks.Playback())
            {
                ISecureAvailabilityStatusUpdater statusUpdater = new SecureAvailabilityStatusUpdater(checker, context, updater);
                string errorMessage = statusUpdater.SetStatus(true);

                Assert.That(errorMessage, Is.Empty);
            }
        }
		public SecureAvailabilityStatusUpdater(IAdministratorSecurityChecker securityChecker, IWebContext context, IAvailabilityStatusUpdater statusUpdater)
		{
			_securityChecker = securityChecker;
			_context = context;
			_statusUpdater = statusUpdater;
		}
示例#11
0
 public SecureAvailabilityStatusUpdater(IAdministratorSecurityChecker securityChecker, IWebContext context, IAvailabilityStatusUpdater statusUpdater)
 {
     _securityChecker = securityChecker;
     _context         = context;
     _statusUpdater   = statusUpdater;
 }