예제 #1
0
        public void EnsureSchemaCreated(ConnectionSettings settings)
        {
            string assembly = SqlDatabaseManager.SQL_FILE_ASSEMBLY;
            string sqlFile  = string.Format(SqlDatabaseManager.SQL_FILE_TEMPLATE, "CreateSchema");
            string sql      = _locator.ReadTextFile(assembly, sqlFile);

            _executor.ExecuteNonQueryTransactional(settings, sql);
        }
예제 #2
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);
        }
        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();
        }
예제 #4
0
        public void Versions_database()
        {
            string assembly = SqlDatabaseManager.SQL_FILE_ASSEMBLY;
            string sqlFile  = string.Format(SqlDatabaseManager.SQL_FILE_TEMPLATE, "VersionDatabase");

            ConnectionSettings settings  = new ConnectionSettings(String.Empty, String.Empty, false, String.Empty, String.Empty);
            string             sqlScript = "SQL script...";

            MockRepository       mocks         = new MockRepository();
            IResourceFileLocator fileLocator   = mocks.CreateMock <IResourceFileLocator>();
            IQueryExecutor       queryExecutor = mocks.CreateMock <IQueryExecutor>();
            ITaskObserver        taskObserver  = mocks.CreateMock <ITaskObserver>();

            using (mocks.Record())
            {
                Expect.Call(fileLocator.ReadTextFile(assembly, sqlFile)).Return(sqlScript);
                Expect.Call(queryExecutor.ExecuteScalarInteger(settings, sqlScript)).Return(7);
                taskObserver.SetVariable("usdDatabaseVersion", "7");
            }

            using (mocks.Playback())
            {
                IDatabaseVersioner versioner = new DatabaseVersioner(fileLocator, queryExecutor);
                versioner.VersionDatabase(settings, taskObserver);
            }

            mocks.VerifyAll();
        }
예제 #5
0
        public void CorrectlyReadsMultiColumnTable()
        {
            string fileContents = "Column 1\tColumn 2\r\n80\t85";

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

            Expect.Call(fileLocator.ReadTextFile("MyCompany.MyAssembly", _testDataFile)).Return(fileContents);

            mocks.ReplayAll();

            using (IDataFileReader reader = new DataFileReader(fileLocator))
            {
                reader.Open("MyCompany.MyAssembly", "Test", "DataFilePath");

                bool canRead = reader.Read();
                Assert.That(canRead, Is.EqualTo(true));
                Assert.That(reader.GetInteger("Column 1"), Is.EqualTo(80));
                Assert.That(reader.GetInteger("Column 2"), Is.EqualTo(85));

                canRead = reader.Read();
                Assert.That(canRead, Is.EqualTo(false));
            }

            mocks.VerifyAll();
        }
예제 #6
0
        public void CanReadEmptyString()
        {
            string fileContents = "StringColumn1\tStringColumn2\r\nString 1";

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

            Expect.Call(fileLocator.ReadTextFile("MyCompany.MyAssembly", _testDataFile)).Return(fileContents);

            mocks.ReplayAll();

            using (IDataFileReader reader = new DataFileReader(fileLocator))
            {
                reader.Open("MyCompany.MyAssembly", "Test", "DataFilePath");

                bool canRead = reader.Read();
                Assert.That(canRead, Is.EqualTo(true));
                Assert.That(reader.GetString("StringColumn2"), Is.EqualTo(string.Empty));

                canRead = reader.Read();
                Assert.That(canRead, Is.EqualTo(false));
            }

            mocks.VerifyAll();
        }
        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);
        }
예제 #8
0
        public void CorrectlyReadsEnumeratedTextFileColumnByValue()
        {
            string fileContents = "Persistence Mode\r\n1\r\n2\r\n";

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

            Expect.Call(fileLocator.ReadTextFile("MyCompany.MyAssembly", _testDataFile)).Return(fileContents);

            mocks.ReplayAll();

            using (IDataFileReader reader = new DataFileReader(fileLocator))
            {
                reader.Open("MyCompany.MyAssembly", "Test", "DataFilePath");

                bool canRead = reader.Read();
                Assert.That(canRead, Is.EqualTo(true));
                Assert.That(reader.GetEnumerationByValue <PersistenceMode>("Persistence Mode"), Is.EqualTo(PersistenceMode.Live));

                canRead = reader.Read();
                Assert.That(canRead, Is.EqualTo(true));
                Assert.That(reader.GetEnumerationByValue <PersistenceMode>("Persistence Mode"), Is.EqualTo(PersistenceMode.Archive));

                canRead = reader.Read();
                Assert.That(canRead, Is.EqualTo(false));
            }

            mocks.VerifyAll();
        }
예제 #9
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);
        }
예제 #10
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"));
            }
        }
예제 #11
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);
        }
예제 #12
0
        public void Open(string assembly, string resourceFilename, string filePath)
        {
            var resourceTemplate     = "{0}.{1}.tab";
            var fullResourceFilename = string.Format(resourceTemplate, filePath, resourceFilename);
            var data = _resourceFileLocator.ReadTextFile(assembly, fullResourceFilename);

            _dataReader = new StringReader(data);

            _columnNames = readRow();
        }
예제 #13
0
        public void VersionDatabase(ConnectionSettings settings, ITaskObserver taskObserver)
        {
            string assembly = SqlDatabaseManager.SQL_FILE_ASSEMBLY;
            string sqlFile  = string.Format(SqlDatabaseManager.SQL_FILE_TEMPLATE, "VersionDatabase");

            string sql     = _fileLocator.ReadTextFile(assembly, sqlFile);
            string version = _executor.ExecuteScalarInteger(settings, sql).ToString();

            taskObserver.SetVariable(_databaseVersionPropertyName, version);
        }
예제 #14
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);
        }
예제 #15
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"));
            }
        }
예제 #16
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 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();
        }
예제 #18
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);
        }
예제 #19
0
        public void CorrectlyThrowsExceptionIfUnknownColumnSpecified()
        {
            string fileContents = "My Good Column Name\r\nMy Data\r\n";

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

            Expect.Call(fileLocator.ReadTextFile("MyCompany.MyAssembly", _testDataFile)).Return(fileContents);

            mocks.ReplayAll();

            using (IDataFileReader reader = new DataFileReader(fileLocator))
            {
                reader.Open("MyCompany.MyAssembly", "Test", "DataFilePath");

                reader.Read();
                reader.GetInteger("My Bad Column Name");
            }
        }
예제 #20
0
        public void CorrectlyReadsColumnHeaders()
        {
            string fileContents = "First Column\tSecond Column\r\n";

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

            Expect.Call(fileLocator.ReadTextFile("MyCompany.MyAssembly", _testDataFile)).Return(fileContents);

            mocks.ReplayAll();

            using (IDataFileReader reader = new DataFileReader(fileLocator))
            {
                reader.Open("MyCompany.MyAssembly", "Test", "DataFilePath");
                string[] columnHeaders = reader.GetColumnHeaders();

                Assert.That(columnHeaders, Is.EqualTo(new string[] { "First Column", "Second Column" }));
            }

            mocks.VerifyAll();
        }
예제 #21
0
        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 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();
        }
예제 #23
0
        public void CorrectlyInitializesSchema()
        {
            string assembly = Tarantino.Core.DatabaseManager.Services.Impl.SqlDatabaseManager.SQL_FILE_ASSEMBLY;
            string sqlFile  = string.Format(Tarantino.Core.DatabaseManager.Services.Impl.SqlDatabaseManager.SQL_FILE_TEMPLATE, "CreateSchema");

            ConnectionSettings settings =
                new ConnectionSettings(String.Empty, String.Empty, false, String.Empty, String.Empty);
            string sqlScript = "SQL script...";

            MockRepository       mocks         = new MockRepository();
            IResourceFileLocator fileLocator   = mocks.CreateMock <IResourceFileLocator>();
            IQueryExecutor       queryExecutor = mocks.CreateMock <IQueryExecutor>();

            Expect.Call(fileLocator.ReadTextFile(assembly, sqlFile)).Return(sqlScript);
            queryExecutor.ExecuteNonQuery(settings, sqlScript, true);

            mocks.ReplayAll();

            ISchemaInitializer versioner = new SchemaInitializer(fileLocator, queryExecutor);

            versioner.EnsureSchemaCreated(settings);

            mocks.VerifyAll();
        }