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()));
                }
            }
        }
Ejemplo n.º 3
0
        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()));
                }
            }
        }
Ejemplo n.º 4
0
        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()));
            }
              }
        }
Ejemplo n.º 5
0
        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()));
        }
      }
    }
Ejemplo n.º 7
0
        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()));
                }
            }
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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
                }
            };
        }
Ejemplo n.º 10
0
        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]);
              }
        }
Ejemplo n.º 11
0
        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()));
            }
              }
        }
Ejemplo n.º 13
0
        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;
            }
        }
Ejemplo n.º 14
0
        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;
            }
        }
Ejemplo n.º 15
0
        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);
        }
Ejemplo n.º 16
0
    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()));
        }
      }
    }
Ejemplo n.º 17
0
        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]);
            }
        }
Ejemplo n.º 18
0
        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()));
                }
            }
        }
Ejemplo n.º 19
0
        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);
        }
Ejemplo n.º 20
0
        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);
        }
Ejemplo n.º 21
0
        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);
        }
Ejemplo n.º 22
0
    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)));
        }
      }
    }
Ejemplo n.º 23
0
    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()));
        }
      }
    }
Ejemplo n.º 24
0
        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;
              }
        }