Пример #1
0
        public string BuildHtml(string errorMessage)
        {
            ApplicationInstance instance = _context.GetCurrent();

            string template = _fileLocator.ReadTextFile("Tarantino.Core", LoadBalancerBodyTemplate);

            _replacer.Text = template;

            _replacer.Replace("ERROR_MESSAGE", errorMessage);

            _replacer.Replace("CURRENT_STATE", instance.AvailableForLoadBalancing ? "enabled" : "disabled");
            _replacer.Replace("MACHINE", instance.MachineName);

            string changeStateLink = string.Empty;

            if (_securityChecker.IsCurrentUserAdministrator())
            {
                bool   newState      = !instance.AvailableForLoadBalancing;
                string newStateLabel = newState ? "enable" : "disable";

                changeStateLink = string.Format(_changeStateLinkTemplate, LoadBalanceStatusManager.ENABLED_PARAM, newState, newStateLabel);
            }

            _replacer.Replace("CHANGE_STATE_LINK", changeStateLink);

            return(_replacer.Text);
        }
Пример #2
0
        public void Correctly_build_menu_view()
        {
            MockRepository       mocks    = new MockRepository();
            IResourceFileLocator locator  = mocks.CreateMock <IResourceFileLocator>();
            ITokenReplacer       replacer = mocks.CreateMock <ITokenReplacer>();

            using (mocks.Record())
            {
                string htmlTemplate = "||APPLICATION_URL|| ||CACHE_URL|| ||ASSEMBLY_URL|| ||LOADBALANCER_URL|| ||DISABLE_URL||";
                Expect.Call(locator.ReadTextFile("Tarantino.Core", MenuView.MenuTemplate)).Return(htmlTemplate);
                replacer.Text = htmlTemplate;

                replacer.Replace("APPLICATION_URL", "Tarantino.WebManagement.Application.axd");
                replacer.Replace("CACHE_URL", "Tarantino.WebManagement.Cache.axd");
                replacer.Replace("ASSEMBLY_URL", "Tarantino.WebManagement.Assemblies.axd");
                replacer.Replace("LOADBALANCER_URL", "Tarantino.WebManagement.LoadBalancer.axd");
                replacer.Replace("DISABLE_URL", "Tarantino.WebManagement.DisableSSL.axd");

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

            using (mocks.Playback())
            {
                IMenuView menuView = new MenuView(locator, replacer);
                string    html     = menuView.BuildHtml();

                Assert.That(html, Is.EqualTo("fully formatted html"));
            }
        }
Пример #3
0
        public string BuildHtml()
        {
            string template = _resourceFileLocator.ReadTextFile("Tarantino.Core", MenuTemplate);

            _replacer.Text = template;

            _replacer.Replace("APPLICATION_URL", "Tarantino.WebManagement.Application.axd");
            _replacer.Replace("CACHE_URL", "Tarantino.WebManagement.Cache.axd");
            _replacer.Replace("ASSEMBLY_URL", "Tarantino.WebManagement.Assemblies.axd");
            _replacer.Replace("LOADBALANCER_URL", "Tarantino.WebManagement.LoadBalancer.axd");
            _replacer.Replace("DISABLE_URL", "Tarantino.WebManagement.DisableSSL.axd");

            return(_replacer.Text);
        }
Пример #4
0
        public string BuildHtml(string bodyHtml)
        {
            string pageTemplate = _fileLocator.ReadTextFile("Tarantino.Core", PageTemplate);
            string cssHtml      = _fileLocator.ReadTextFile("Tarantino.Core", StylesheetTemplate);
            string menuHtml     = _menuView.BuildHtml();

            _replacer.Text = pageTemplate;

            _replacer.Replace("CSS", cssHtml);
            _replacer.Replace("MENU", menuHtml);
            _replacer.Replace("BODY", bodyHtml);

            return(_replacer.Text);
        }
Пример #5
0
        public void Import(string excelFile, string server, string database, bool integrated, string username, string password,
                           ITaskObserver taskObserver)
        {
            string message = string.Format("\nImporting Excel File '{0}' to Database '{1}' on Server '{2}'\n", excelFile, database, server);

            taskObserver.Log(message);
            var settings = new ConnectionSettings(server, database, integrated, username, password);

            string sql = _fileLocator.ReadTextFile("Tarantino.Core", "Tarantino.Core.DatabaseManager.SqlFiles.ImportExcel.sql");

            _tokenReplacer.Text = sql;
            _tokenReplacer.Replace("DATABASE", database);
            _tokenReplacer.Replace("EXCEL_FILE", excelFile);
            _queryExecutor.ExecuteNonQuery(settings, _tokenReplacer.Text, false);
        }
        public string BuildHtml()
        {
            if (checker.IsCurrentUserAdministrator())
            {
                IList <ApplicationInstance> applications =
                    new List <ApplicationInstance>(applicationInstanceRepository.GetAll());

                string bodyTemplate =
                    fileLocator.ReadTextFile("Tarantino.Core", ApplicationListingBodyView.BodyTemplate);

                replacer.Text = bodyTemplate;

                ApplicationInstance lastInstance = new ApplicationInstance();
                string rowHTMl = "";
                foreach (ApplicationInstance instance in applications)
                {
                    if (instance.MaintenanceHostHeader != lastInstance.MaintenanceHostHeader)
                    {
                        int instanceCount = GetInstanceCount(applications, instance.MaintenanceHostHeader);
                        rowHTMl += applicationListingRowView.BuildFirstRowHtml(instance, instanceCount);
                    }
                    else
                    {
                        rowHTMl += applicationListingRowView.BuildMRowHtml(instance);
                    }
                    lastInstance = instance;
                }
                replacer.Replace("ROWS", rowHTMl);
            }
            else
            {
                replacer.Text = "Unauthorized request.";
            }
            return(replacer.Text);
        }
        public void Correctly_drops_connections()
        {
            string assembly = SqlDatabaseManager.SQL_FILE_ASSEMBLY;
            string sqlFile  = string.Format(SqlDatabaseManager.SQL_FILE_TEMPLATE, "DropConnections");

            ConnectionSettings settings = new ConnectionSettings("server", "MyDatabase", true, null, null);

            MockRepository mocks = new MockRepository();

            ITaskObserver        taskObserver  = mocks.CreateMock <ITaskObserver>();
            IResourceFileLocator fileLocator   = mocks.CreateMock <IResourceFileLocator>();
            ITokenReplacer       replacer      = mocks.CreateMock <ITokenReplacer>();
            IQueryExecutor       queryExecutor = mocks.CreateMock <IQueryExecutor>();

            using (mocks.Record())
            {
                taskObserver.Log("Dropping connections for database MyDatabase\n");
                Expect.Call(fileLocator.ReadTextFile(assembly, sqlFile)).Return("Unformatted SQL");
                replacer.Text = "Unformatted SQL";
                replacer.Replace("DatabaseName", "MyDatabase");
                Expect.Call(replacer.Text).Return("Formatted SQL");
                queryExecutor.ExecuteNonQuery(settings, "Formatted SQL", false);
            }

            using (mocks.Playback())
            {
                IDatabaseConnectionDropper dropper = new DatabaseConnectionDropper(fileLocator, replacer, queryExecutor);
                dropper.Drop(settings, taskObserver);
            }

            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"));
            }
        }
Пример #9
0
        public void Correctly_renders_page_view()
        {
            string cssText = "css stuff";

            MockRepository       mocks       = new MockRepository();
            IResourceFileLocator fileLocator = mocks.CreateMock <IResourceFileLocator>();
            ITokenReplacer       replacer    = mocks.CreateMock <ITokenReplacer>();
            IMenuView            menuView    = mocks.CreateMock <IMenuView>();

            using (mocks.Record())
            {
                string htmlTemplate = "||CSS|| ||MENU|| ||BODY||";
                Expect.Call(fileLocator.ReadTextFile("Tarantino.Core", PageView.PageTemplate)).Return(htmlTemplate);

                replacer.Text = htmlTemplate;

                Expect.Call(fileLocator.ReadTextFile("Tarantino.Core", PageView.StylesheetTemplate)).Return(cssText);

                replacer.Replace("CSS", cssText);

                Expect.Call(menuView.BuildHtml()).Return("menu stuff");
                replacer.Replace("MENU", "menu stuff");

                replacer.Replace("BODY", "body stuff");

                Expect.Call(replacer.Text).Return("page content");
            }

            using (mocks.Playback())
            {
                IPageView pageView = new PageView(fileLocator, menuView, replacer);
                string    html     = pageView.BuildHtml("body stuff");

                Assert.That(html, Is.EqualTo("page content"));
            }
        }
        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();
        }
        public void View_should_build_html_for_row_one()
        {
            ApplicationInstance instance = new ApplicationInstance();

            instance.MaintenanceHostHeader = "1";
            instance.MachineName           = "2";
            instance.Id = Guid.NewGuid();

            MockRepository       mocks         = new MockRepository();
            IResourceFileLocator fileLocator   = mocks.CreateMock <IResourceFileLocator>();
            ITokenReplacer       tokenReplacer = mocks.CreateMock <ITokenReplacer>();

            using (mocks.Record())
            {
                Expect.Call(fileLocator.ReadTextFile("Tarantino.Core", ApplicationListingBodyView.Row1Fragment)).Return(
                    "template");
                tokenReplacer.Text = "template";
                tokenReplacer.Replace("INSTANCE_COUNT", "2");
                tokenReplacer.Replace("INSTANCE_ID", instance.Id.ToString());
                tokenReplacer.Replace("MAINTANANCE_HOST_HEADER", instance.MaintenanceHostHeader);
                tokenReplacer.Replace("MAINTANANCE_STATUS", instance.DownForMaintenance ? "Offline" : "Online");
                tokenReplacer.Replace("MACHINE_NAME", instance.MachineName);
                tokenReplacer.Replace("LOAD_BALANCE_STATUS", instance.AvailableForLoadBalancing ? "Online" : "Offline");
                tokenReplacer.Replace("NEW_LOAD_BALANCE_STATUS", (!instance.AvailableForLoadBalancing).ToString());
                tokenReplacer.Replace("VERSION", instance.Version);
                tokenReplacer.Replace("HOST_HEADER", instance.UniqueHostHeader);
                Expect.Call(tokenReplacer.Text).Return("html");
            }

            using (mocks.Playback())
            {
                ApplicationListingRowView view = new ApplicationListingRowView(fileLocator, tokenReplacer);

                string html = view.BuildFirstRowHtml(instance, 2);

                Assert.That(html, Is.EqualTo("html"));
            }
            mocks.VerifyAll();
        }
Пример #12
0
        public void Drop(ConnectionSettings settings, ITaskObserver taskObserver)
        {
            string message = string.Format("Dropping connections for database {0}\n", settings.Database);

            taskObserver.Log(message);

            string assembly = SqlDatabaseManager.SQL_FILE_ASSEMBLY;
            string sqlFile  = string.Format(SqlDatabaseManager.SQL_FILE_TEMPLATE, "DropConnections");

            string sql = _fileLocator.ReadTextFile(assembly, sqlFile);

            _replacer.Text = sql;
            _replacer.Replace("DatabaseName", settings.Database);
            sql = _replacer.Text;

            _executor.ExecuteNonQuery(settings, sql, false);
        }
Пример #13
0
        public string BuildFirstRowHtml(ApplicationInstance applicationInstance, int instanceCount)
        {
            string template = fileLocator.ReadTextFile("Tarantino.Core", ApplicationListingBodyView.Row1Fragment);

            tokenReplacer.Text = template;
            tokenReplacer.Replace("INSTANCE_COUNT", instanceCount.ToString());
            tokenReplacer.Replace("INSTANCE_ID", applicationInstance.Id.ToString());
            tokenReplacer.Replace("MAINTANANCE_HOST_HEADER", applicationInstance.MaintenanceHostHeader);
            tokenReplacer.Replace("MAINTANANCE_STATUS", applicationInstance.DownForMaintenance ? "Offline" : "Online");
            tokenReplacer.Replace("MACHINE_NAME", applicationInstance.MachineName);
            tokenReplacer.Replace("LOAD_BALANCE_STATUS", applicationInstance.AvailableForLoadBalancing ? "Online" : "Offline");
            tokenReplacer.Replace("NEW_LOAD_BALANCE_STATUS", (!applicationInstance.AvailableForLoadBalancing).ToString());
            tokenReplacer.Replace("VERSION", applicationInstance.Version);
            tokenReplacer.Replace("HOST_HEADER", applicationInstance.UniqueHostHeader);
            return(tokenReplacer.Text);
        }