public void CreateWithSchemaGrantsPermissionsOnSchema() { var manager = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = GlobalTest.Manager1.Description.ConnectionInfo, Schemas = new List <DbScript> { new DbScript { ScriptType = ScriptType.Literal, ScriptValue = TestSchema } } } }; manager.Create(); using (var conn = manager.CreateContentConnection()) { conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = "SELECT nspacl FROM pg_catalog.pg_namespace WHERE nspname='test_schema'"; var result = Convert.ToString(cmd.ExecuteScalar()); Assert.That(result.Contains(string.Format("{0}=UC", manager.Description.ConnectionInfo.UserName))); } } }
public void CreateWithSchemaCreatesSchema() { var manager = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = GlobalTest.Manager1.Description.ConnectionInfo, Schemas = new List <DbScript> { new DbScript { ScriptType = ScriptType.Literal, ScriptValue = TestSchema } } } }; manager.Create(); using (var conn = manager.CreateContentConnection()) { conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = "SELECT COUNT(*) FROM pg_catalog.pg_namespace WHERE nspname='test_schema'"; Assert.AreEqual(1, Convert.ToInt64(cmd.ExecuteScalar())); } } }
public void SeedSeedsDatabase() { var manager = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = GlobalTest.Manager1.Description.ConnectionInfo, Schemas = new List <DbScript> { new DbScript { ScriptType = ScriptType.Literal, ScriptValue = TestSchema } }, Seeds = new List <DbScript> { new DbScript { ScriptType = ScriptType.Literal, ScriptValue = TestSeed } } } }; manager.Create(); manager.Seed(); using (var conn = manager.CreateContentConnection()) { conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = "SELECT COUNT(*) FROM test_schema.test_table"; Assert.AreEqual(2, Convert.ToInt64(cmd.ExecuteScalar())); } } }
public void SeedSeedsDatabase() { var manager = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = GlobalTest.Manager1.Description.ConnectionInfo, Schemas = new List<DbScript> {new DbScript {ScriptType = ScriptType.Literal, ScriptValue = TestSchema}}, Seeds = new List<DbScript> {new DbScript {ScriptType = ScriptType.Literal, ScriptValue = TestSeed}} } }; manager.Create(); manager.Seed(); using (var conn = manager.CreateContentConnection()) { conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = "SELECT COUNT(*) FROM test_schema.test_table"; Assert.AreEqual(2, Convert.ToInt64(cmd.ExecuteScalar())); } } }
public void PgDbManagerCreatedWithNullSuperuserUsesDefaultSuperuser() { var manager = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = GlobalTest.Manager1.Description.ConnectionInfo } }; Assert.NotNull(manager.Description.Superuser); Assert.AreEqual("postgres", ((PgSuperuser)manager.Description.Superuser).DatabaseName); Assert.AreEqual("postgres", manager.Description.Superuser.UserName); Assert.AreEqual("postgres", manager.Description.Superuser.Password); }
public void CreateCreatesDatabase() { var manager = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = GlobalTest.Manager1.Description.ConnectionInfo } }; manager.Create(); using (var conn = manager.CreateDatabaseConnection()) { conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = string.Format("SELECT COUNT(*) FROM pg_catalog.pg_database WHERE datname='{0}'", manager.Description.ConnectionInfo.DatabaseName); Assert.AreEqual(1, Convert.ToInt64(cmd.ExecuteScalar())); } } }
public void DestroyDoesNotDropRoleThatIsStillInUse() { var manager2 = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = GlobalTest.Manager2.Description.ConnectionInfo } }; manager2.Create(); // Create a new manager for connection 1's database with connection 2's user var csBuilderT = new DbConnectionStringBuilder { ConnectionString = GlobalTest.Manager1.Description.ConnectionInfo.ConnectionString }; csBuilderT[PgDbConnectionInfo.UserNameKey] = GlobalTest.Manager2.Description.ConnectionInfo.UserName; csBuilderT[PgDbConnectionInfo.PasswordKey] = GlobalTest.Manager2.Description.ConnectionInfo.Password; var managerT = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = new DbConnectionInfo { ConnectionString = csBuilderT.ConnectionString, Provider = GlobalTest.Manager1.Description.ConnectionInfo.Provider } } }; managerT.Create(); managerT.Destroy(); // connection 2's user should not have been deleted because it is still in use by connection 2's database using (var conn = managerT.CreateDatabaseConnection()) { conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = string.Format("SELECT COUNT(*) FROM pg_catalog.pg_user WHERE usename='{0}'", csBuilderT[PgDbConnectionInfo.UserNameKey]); Assert.AreEqual(1, Convert.ToInt64(cmd.ExecuteScalar())); } } }
public void PgDbManagerCreatedWithSuperuserUsesSuperuser() { var manager = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = GlobalTest.Manager1.Description.ConnectionInfo, Superuser = new PgSuperuser { DatabaseName = "sudb", UserName = "******", Password = "******" } } }; Assert.NotNull(manager.Description.Superuser); Assert.AreEqual("sudb", ((PgSuperuser)manager.Description.Superuser).DatabaseName); Assert.AreEqual("suid", manager.Description.Superuser.UserName); Assert.AreEqual("supw", manager.Description.Superuser.Password); }
public void SetUp() { Manager1 = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = new DbConnectionInfo {ConnectionStringName = "Test1"}, Superuser = Superuser } }; Manager2 = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = new DbConnectionInfo {ConnectionStringName = "Test2"}, Superuser = Superuser } }; }
public void CreateDatabaseConnectionStringUsesSuperuserParameters() { var manager = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = GlobalTest.Manager1.Description.ConnectionInfo, Superuser = new PgSuperuser { DatabaseName = "sudb", UserName = "******", Password = "******" } } }; using (var conn = manager.CreateDatabaseConnection()) { var result = new DbConnectionStringBuilder { ConnectionString = conn.ConnectionString }; Assert.AreEqual("sudb", result[PgDbConnectionInfo.DatabaseNameKey]); Assert.AreEqual("suid", result[PgDbConnectionInfo.UserNameKey]); Assert.AreEqual("supw", result[PgDbConnectionInfo.PasswordKey]); } }
public void CreateCreatesDatabase() { var manager = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = GlobalTest.Manager1.Description.ConnectionInfo } }; manager.Create(); using (var conn = manager.CreateDatabaseConnection()) { conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = string.Format("SELECT COUNT(*) FROM pg_catalog.pg_database WHERE datname='{0}'", manager.Description.ConnectionInfo.DatabaseName); Assert.AreEqual(1, Convert.ToInt64(cmd.ExecuteScalar())); } } }
public void DestroyDoesNotDropRoleThatIsStillInUse() { var manager2 = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = GlobalTest.Manager2.Description.ConnectionInfo } }; manager2.Create(); // Create a new manager for connection 1's database with connection 2's user var csBuilderT = new DbConnectionStringBuilder { ConnectionString = GlobalTest.Manager1.Description.ConnectionInfo.ConnectionString }; csBuilderT[PgDbConnectionInfo.UserNameKey] = GlobalTest.Manager2.Description.ConnectionInfo.UserName; csBuilderT[PgDbConnectionInfo.PasswordKey] = GlobalTest.Manager2.Description.ConnectionInfo.Password; var managerT = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = new DbConnectionInfo { ConnectionString = csBuilderT.ConnectionString, Provider = GlobalTest.Manager1.Description.ConnectionInfo.Provider } } }; managerT.Create(); managerT.Destroy(); // connection 2's user should not have been deleted because it is still in use by connection 2's database using (var conn = managerT.CreateDatabaseConnection()) { conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = string.Format("SELECT COUNT(*) FROM pg_catalog.pg_user WHERE usename='{0}'", csBuilderT[PgDbConnectionInfo.UserNameKey]); Assert.AreEqual(1, Convert.ToInt64(cmd.ExecuteScalar())); } } }
public void SetUp() { try { Logger = NLog.LogManager.GetCurrentClassLogger(); MicrOrmLogger.Enabled = true; TestDb = new PgDbManager { Description = new PgDbDescription { XmlRoot = Resources.Test } }; TestDb.Create(); ConnectionProvider = new MicrOrmConnectionProvider(TestDb.Description.ConnectionInfo); } catch (Exception e) { Logger.FatalException(string.Format("SetUp : {0} : {1}", e.GetType(), e.Message), e); throw; } }
public void SetUp() { try { Logger = NLog.LogManager.GetCurrentClassLogger(); Manager1 = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = new DbConnectionInfo { ConnectionStringName = "Test1" }, Superuser = Superuser } }; Manager2 = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = new DbConnectionInfo { ConnectionStringName = "Test2" }, Superuser = Superuser } }; } catch (Exception e) { if (Logger != null) { Logger.FatalException(string.Format("SetUp : {0} : {1}", e.GetType(), e.Message), e); } throw; } }
private void InvalidParameterTests(Action <PgDbManager> action) { var manager = new PgDbManager(); var result = Assert.Throws <ArgumentException>(() => action.Invoke(manager)); Assert.AreEqual("Description", result.ParamName); Console.WriteLine(result.Message); manager = new PgDbManager { Description = new PgDbDescription() }; result = Assert.Throws <ArgumentException>(() => action.Invoke(manager)); Assert.AreEqual("Description.ConnectionInfo", result.ParamName); Console.WriteLine(result.Message); manager = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = new DbConnectionInfo() } }; result = Assert.Throws <ArgumentException>(() => action.Invoke(manager)); Assert.AreEqual("Description.ConnectionInfo.ConnectionString", result.ParamName); Console.WriteLine(result.Message); }
public void CreateWithTemplateCreatesDatabaseWithTemplate() { var manager = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = GlobalTest.Manager1.Description.ConnectionInfo, TemplateName = "template_postgis_20" } }; manager.Create(); using (var conn = manager.CreateContentConnection()) { conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = "SELECT COUNT(*) FROM pg_catalog.pg_tables WHERE schemaname='public' AND tablename='spatial_ref_sys'"; Assert.AreEqual(1, Convert.ToInt64(cmd.ExecuteScalar())); } } }
public void CreateContentConnectionStringUsesSuperuserParameters() { var manager = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = GlobalTest.Manager1.Description.ConnectionInfo, Superuser = new PgSuperuser { DatabaseName = "sudb", UserName = "******", Password = "******" } } }; using (var conn = manager.CreateContentConnection()) { var result = new DbConnectionStringBuilder { ConnectionString = conn.ConnectionString }; Assert.AreEqual(manager.Description.ConnectionInfo.DatabaseName, result[PgDbConnectionInfo.DatabaseNameKey]); Assert.AreEqual("suid", result[PgDbConnectionInfo.UserNameKey]); Assert.AreEqual("supw", result[PgDbConnectionInfo.PasswordKey]); } }
public void CreateWithTemplateCreatesDatabaseWithTemplate() { var manager = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = GlobalTest.Manager1.Description.ConnectionInfo, TemplateName = "template_postgis_20" } }; manager.Create(); using (var conn = manager.CreateContentConnection()) { conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = "SELECT COUNT(*) FROM pg_catalog.pg_tables WHERE schemaname='public' AND tablename='spatial_ref_sys'"; Assert.AreEqual(1, Convert.ToInt64(cmd.ExecuteScalar())); } } }
private void InvalidParameterTests(Action<PgDbManager> action) { var manager = new PgDbManager(); var result = Assert.Throws<ArgumentException>(() => action.Invoke(manager)); Assert.AreEqual("Description", result.ParamName); Console.WriteLine(result.Message); manager = new PgDbManager { Description = new PgDbDescription() }; result = Assert.Throws<ArgumentException>(() => action.Invoke(manager)); Assert.AreEqual("Description.ConnectionInfo", result.ParamName); Console.WriteLine(result.Message); manager = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = new DbConnectionInfo() } }; result = Assert.Throws<ArgumentException>(() => action.Invoke(manager)); Assert.AreEqual("Description.ConnectionInfo.ConnectionString", result.ParamName); Console.WriteLine(result.Message); }
public void PgDbManagerCreatedWithNullSuperuserUsesDefaultSuperuser() { var manager = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = GlobalTest.Manager1.Description.ConnectionInfo } }; Assert.NotNull(manager.Description.Superuser); Assert.AreEqual("postgres", ((PgSuperuser)manager.Description.Superuser).DatabaseName); Assert.AreEqual("postgres", manager.Description.Superuser.UserName); Assert.AreEqual("postgres", manager.Description.Superuser.Password); }
public void PgDbManagerCreatedWithSuperuserUsesSuperuser() { var manager = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = GlobalTest.Manager1.Description.ConnectionInfo, Superuser = new PgSuperuser { DatabaseName = "sudb", UserName = "******", Password = "******" } } }; Assert.NotNull(manager.Description.Superuser); Assert.AreEqual("sudb", ((PgSuperuser)manager.Description.Superuser).DatabaseName); Assert.AreEqual("suid", manager.Description.Superuser.UserName); Assert.AreEqual("supw", manager.Description.Superuser.Password); }
public void CreateWithSchemaGrantsPermissionsOnSchema() { var manager = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = GlobalTest.Manager1.Description.ConnectionInfo, Schemas = new List<DbScript> {new DbScript {ScriptType = ScriptType.Literal, ScriptValue = TestSchema}} } }; manager.Create(); using (var conn = manager.CreateContentConnection()) { conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = "SELECT array_to_string(nspacl, ',') FROM pg_catalog.pg_namespace WHERE nspname='test_schema'"; var result = Convert.ToString(cmd.ExecuteScalar()); Assert.That(result.Contains(string.Format("{0}=UC", manager.Description.ConnectionInfo.UserName))); } } }
public void CreateWithSchemaCreatesSchema() { var manager = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = GlobalTest.Manager1.Description.ConnectionInfo, Schemas = new List<DbScript> {new DbScript {ScriptType = ScriptType.Literal, ScriptValue = TestSchema}} } }; manager.Create(); using (var conn = manager.CreateContentConnection()) { conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = "SELECT COUNT(*) FROM pg_catalog.pg_namespace WHERE nspname='test_schema'"; Assert.AreEqual(1, Convert.ToInt64(cmd.ExecuteScalar())); } } }
public void SetUp() { try { Logger = NLog.LogManager.GetCurrentClassLogger(); Manager1 = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = new DbConnectionInfo { ConnectionStringName = "Test1" }, Superuser = Superuser } }; Manager2 = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = new DbConnectionInfo { ConnectionStringName = "Test2" }, Superuser = Superuser } }; } catch (Exception e) { if (Logger != null) Logger.FatalException(string.Format("SetUp : {0} : {1}", e.GetType(), e.Message), e); throw; } }