public void DoExecute_fails_on_nonversioned_script() { // arrange IEnumerable<DbScriptToRun> nonVersionedScript = new List<DbScriptToRun>() { new DbScriptToRun(DbVersion.FromString("1.0"), "Core/TestData/NonVersionedScript/01.NonVersionedScript.sql") }; _deploymentStep = new RunDbScriptsDeploymentStep(_dbScriptRunnerFake.Object, _DatabaseServerName, nonVersionedScript); // act, assert Assert.Throws<DeploymentTaskException>(() => _deploymentStep.PrepareAndExecute()); }
public void DoExecute_fails_on_nonversioned_script() { // arrange IEnumerable <DbScriptToRun> nonVersionedScript = new List <DbScriptToRun>() { new DbScriptToRun(DbVersion.FromString("1.0"), "Core/TestData/NonVersionedScript/01.NonVersionedScript.sql") }; _deploymentStep = new RunDbScriptsDeploymentStep(_dbScriptRunnerFake.Object, _DatabaseServerName, nonVersionedScript); // act, assert Assert.Throws <DeploymentTaskException>(() => _deploymentStep.PrepareAndExecute()); }
public void DoExecute_does_not_fail_on_nonversioned_script_when_is_marked_as_non_transactional() { // arrange IEnumerable<DbScriptToRun> nonTransactionalScript = new List<DbScriptToRun>() { new DbScriptToRun(DbVersion.FromString("1.0"), "Core/TestData/NonVersionedScript/02.NonVersionedScript.notrans.sql") }; _deploymentStep = new RunDbScriptsDeploymentStep(_dbScriptRunnerFake.Object, _DatabaseServerName, nonTransactionalScript); // act _deploymentStep.PrepareAndExecute(); // assert _dbScriptRunnerFake.Verify(x => x.Execute(It.IsAny<string>())); }
public void DoExecute_fails_on_not_existing_script() { // arrange IEnumerable <DbScriptToRun> notExistingScripts = new List <DbScriptToRun>() { new DbScriptToRun(DbVersion.FromString("1.0"), "someScript.sql") }; _deploymentStep = new RunDbScriptsDeploymentStep(_dbScriptRunnerFake.Object, _DatabaseServerName, notExistingScripts); // act, assert Assert.Throws <FileNotFoundException>(() => _deploymentStep.PrepareAndExecute()); }
public void DoExecute_does_not_fail_on_nonversioned_script_when_is_marked_as_non_transactional() { // arrange IEnumerable <DbScriptToRun> nonTransactionalScript = new List <DbScriptToRun>() { new DbScriptToRun(DbVersion.FromString("1.0"), "Core/TestData/NonVersionedScript/02.NonVersionedScript.notrans.sql") }; _deploymentStep = new RunDbScriptsDeploymentStep(_dbScriptRunnerFake.Object, _DatabaseServerName, nonTransactionalScript); // act _deploymentStep.PrepareAndExecute(); // assert _dbScriptRunnerFake.Verify(x => x.Execute(It.IsAny <string>())); }
public void DoExecute_fails_on_not_existing_script() { // arrange IEnumerable<DbScriptToRun> notExistingScripts = new List<DbScriptToRun>() { new DbScriptToRun(DbVersion.FromString("1.0"), "someScript.sql") }; _deploymentStep = new RunDbScriptsDeploymentStep(_dbScriptRunnerFake.Object, _DatabaseServerName, notExistingScripts); // act, assert Assert.Throws<FileNotFoundException>(() => _deploymentStep.PrepareAndExecute()); }
public void SetUp() { _dbScriptRunnerFake = new Mock<IDbScriptRunner>(MockBehavior.Loose); _deploymentStep = new RunDbScriptsDeploymentStep(_dbScriptRunnerFake.Object, _DatabaseServerName, _ScriptsToRun); }
public void SetUp() { _dbScriptRunnerFake = new Mock <IDbScriptRunner>(MockBehavior.Loose); _deploymentStep = new RunDbScriptsDeploymentStep(_dbScriptRunnerFake.Object, _DatabaseServerName, _ScriptsToRun); }
protected override void DoPrepare() { EnvironmentInfo environmentInfo = GetEnvironmentInfo(); DbProjectInfo projectInfo = GetProjectInfo <DbProjectInfo>(); DbProjectConfiguration dbProjectConfiguration = environmentInfo.GetDbProjectConfiguration(projectInfo); DatabaseServer databaseServer = environmentInfo.GetDatabaseServer(dbProjectConfiguration.DatabaseServerId); string databaseServerMachineName = databaseServer.MachineName; bool databaseExists = _dbVersionProvider.CheckIfDatabaseExists( projectInfo.DbName, databaseServerMachineName); // create a step for downloading the artifacts var downloadArtifactsDeploymentStep = new DownloadArtifactsDeploymentStep( projectInfo, DeploymentInfo, GetTempDirPath(), _artifactsRepository); AddSubTask(downloadArtifactsDeploymentStep); // create a step for extracting the artifacts var extractArtifactsDeploymentStep = new ExtractArtifactsDeploymentStep( projectInfo, environmentInfo, DeploymentInfo, downloadArtifactsDeploymentStep.ArtifactsFilePath, GetTempDirPath(), _fileAdapter, _directoryAdapter, _zipFileAdapter); AddSubTask(extractArtifactsDeploymentStep); if (databaseExists) { // create a step for gathering scripts to run var gatherDbScriptsToRunDeploymentStep = new GatherDbScriptsToRunDeploymentStep( projectInfo.DbName, new Lazy <string>(() => extractArtifactsDeploymentStep.BinariesDirPath), databaseServerMachineName, environmentInfo.Name, DeploymentInfo, _dbVersionProvider, _createScriptsToRunSelector ); AddSubTask(gatherDbScriptsToRunDeploymentStep); // create a step for running scripts var runDbScriptsDeploymentStep = new RunDbScriptsDeploymentStep( GetScriptRunner(projectInfo.IsTransactional, databaseServerMachineName, projectInfo.DbName, environmentInfo.DatabaseServers.FirstOrDefault(e => e.Id == projectInfo.DatabaseServerId)), databaseServerMachineName, new DeferredEnumerable <DbScriptToRun>(() => gatherDbScriptsToRunDeploymentStep.ScriptsToRun)); AddSubTask(runDbScriptsDeploymentStep); } else { // create step for dropping database var createDatabaseDeploymentStep = new CreateDatabaseDeploymentStep(projectInfo, databaseServer, _dbManagerFactory); AddSubTask(createDatabaseDeploymentStep); // create step for deploying dacpac var publishDatabaseDeploymentStep = new PublishDatabaseDeploymentStep( projectInfo, databaseServer, GetTempDirPath(), _databasePublisher); AddSubTask(publishDatabaseDeploymentStep); } foreach (string userId in projectInfo.Users) { var environmentUser = environmentInfo.EnvironmentUsers.SingleOrDefault(x => x.Id == userId); if (environmentUser == null) { throw new DeploymentTaskException(string.Format("User [{0}] doesn't exist in enviroment configuration [{1}] in project [{2}]", userId, environmentInfo.Name, projectInfo.Name)); } string user = _userNameNormalizer.ConvertToPreWin2000UserName(environmentUser.UserName, environmentInfo.DomainName); IDbManager manager = _dbManagerFactory.CreateDbManager(databaseServerMachineName); if (databaseExists && manager.UserExists(projectInfo.DbName, user)) { foreach (string dbUserRole in _dbUserRoles) { if (!manager.CheckIfUserIsInRole(projectInfo.DbName, user, dbUserRole)) { AddSubTask(new AddRoleToUserStep(manager, projectInfo.DbName, user, dbUserRole)); } } } else { AddSubTask(new AddUserToDatabaseStep(manager, projectInfo.DbName, user)); foreach (string dbUserRole in _dbUserRoles) { AddSubTask(new AddRoleToUserStep(manager, projectInfo.DbName, user, dbUserRole)); } } } }