public void DestroyDropsRole()
    {
      var manager = new PgDbManager { Description = new PgDbDescription { ConnectionInfo = GlobalTest.Manager1.Description.ConnectionInfo } };

      manager.Create();
      manager.Destroy();

      using (var conn = manager.CreateDatabaseConnection())
      {
        conn.Open();

        using (var cmd = conn.CreateCommand())
        {
          cmd.CommandText = string.Format("SELECT COUNT(*) FROM pg_catalog.pg_user WHERE usename='{0}'", manager.Description.ConnectionInfo.UserName);
          Assert.AreEqual(0, 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()));
        }
      }
    }