public void CanCheckIfDatabaseExists() { using (var cn = new SqlConnection(DbConnectionString)) { cn.Open(); Assert.IsTrue(SSDTProjectDeployer.DoesDatabaseExist(cn, "master")); Assert.IsFalse(SSDTProjectDeployer.DoesDatabaseExist(cn, "oaisdfjosajasijsdaij1234")); } }
public void CanGetDatabaseNameFromConnectionContext() { var cc = new ConnectionContext { ConnectionString = @"Data Source=.\SQLExpress;Initial Catalog=abc;Integrated Security=True;Persist Security Info=False;Pooling=False;MultipleActiveResultSets=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=True", Provider = DbProviderFactories.GetFactory("System.Data.SqlClient") }; Assert.AreEqual("abc", SSDTProjectDeployer.GetDatabaseNameFromConnectionContext(cc)); }
public void CanDeployDatabase_CanCheckExists_CanDrop() { string CreateConnectionStringForDatabase(string databaseName) { return($"{DbConnectionString};Initial Catalog={databaseName}"); } ConnectionContext CreateConnectionContext(string connectionString) { return(new ConnectionContext { ConnectionString = connectionString, Provider = DbProviderFactories.GetFactory("System.Data.SqlClient"), ProviderName = "System.Data.SqlClient" }); } var newUniqueDbName = new SSDTProjectDeployer().GetNewUniqueDatabaseName(CreateConnectionContext(CreateConnectionStringForDatabase("SqlDeployerTest"))); var newUniqueDbConnectionString = CreateConnectionStringForDatabase(newUniqueDbName); var newUniqueDbConnectionContext = CreateConnectionContext(newUniqueDbConnectionString); // check that database does NOT exist // - use deployer function // - using (var cn = new SqlConnection(CreateConnectionStringForDatabase("master"))) { cn.Open(); Assert.IsFalse(SSDTProjectDeployer.DoesDatabaseExist(cn, newUniqueDbName)); using (var cm = cn.CreateCommand()) { cm.CommandText = $"SELECT COUNT(*) FROM [{newUniqueDbName}].dbo.Test"; try { cm.ExecuteNonQuery(); Assert.Fail("expected exception not thrown"); } catch (Exception ex) { Assert.AreSame(typeof(SqlException), ex.GetType()); } } } // deploy database to unique new db new SSDTProjectDeployer().DeployDatabase(new SSDTProjectDeployerConfig { DatabaseProjectFileName = @"..\..\..\Data.Tools.UnitTesting.Sql.Tests.SSDT\Data.Tools.UnitTesting.Sql.Tests.SSDT.sqlproj", BuildConfiguration = "Debug" }, newUniqueDbConnectionContext); // check that database exists and deployed correctly (run query against it) using (var cn = new SqlConnection(newUniqueDbConnectionContext.ConnectionString)) { cn.Open(); Assert.IsTrue(SSDTProjectDeployer.DoesDatabaseExist(cn, newUniqueDbName)); using (var cm = cn.CreateCommand()) { cm.CommandText = "SELECT COUNT(*) FROM Test"; Assert.AreEqual(0, cm.ExecuteScalar()); } } new SSDTProjectDeployer().DropDatabase(newUniqueDbConnectionContext); using (var cn = new SqlConnection(CreateConnectionStringForDatabase("master"))) { cn.Open(); Assert.IsFalse(SSDTProjectDeployer.DoesDatabaseExist(cn, newUniqueDbName)); } }