blob: ba53d9b25eca8ec976a1f0131003a41e20390e63 [file] [log] [blame]
package integration
import (
"github.com/cloudberrydb/gp-common-go-libs/structmatcher"
"github.com/cloudberrydb/gp-common-go-libs/testhelper"
"github.com/cloudberrydb/gpbackup/backup"
"github.com/cloudberrydb/gpbackup/testutils"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
var _ = Describe("backup integration create statement tests", func() {
BeforeEach(func() {
tocfile, backupfile = testutils.InitializeTestTOC(buffer, "predata")
testutils.SkipIfBefore6(connectionPool)
})
Describe("PrintDefaultPrivilegesStatements", func() {
It("create default privileges for a table", func() {
privs := []backup.ACL{{Grantee: "", Select: true}, testutils.DefaultACLForType("testrole", "TABLE")}
defaultPrivileges := []backup.DefaultPrivileges{{Schema: "", Privileges: privs, ObjectType: "r", Owner: "testrole"}}
backup.PrintDefaultPrivilegesStatements(backupfile, tocfile, defaultPrivileges)
testhelper.AssertQueryRuns(connectionPool, buffer.String())
defer testhelper.AssertQueryRuns(connectionPool, "ALTER DEFAULT PRIVILEGES FOR ROLE testrole REVOKE ALL ON TABLES FROM PUBLIC;")
resultPrivileges := backup.GetDefaultPrivileges(connectionPool)
Expect(resultPrivileges).To(HaveLen(1))
structmatcher.ExpectStructsToMatchExcluding(&defaultPrivileges[0], &resultPrivileges[0], "Oid")
})
It("create default privileges for a sequence with grant option in schema", func() {
privs := []backup.ACL{{Grantee: "testrole", SelectWithGrant: true}}
defaultPrivileges := []backup.DefaultPrivileges{{Schema: "", Privileges: privs, ObjectType: "S", Owner: "testrole"}}
backup.PrintDefaultPrivilegesStatements(backupfile, tocfile, defaultPrivileges)
testhelper.AssertQueryRuns(connectionPool, buffer.String())
// Both of these statements are required to remove the entry from the pg_default_acl catalog table, otherwise it will pollute other tests
defer testhelper.AssertQueryRuns(connectionPool, "ALTER DEFAULT PRIVILEGES FOR ROLE testrole GRANT ALL ON SEQUENCES TO testrole;")
defer testhelper.AssertQueryRuns(connectionPool, "ALTER DEFAULT PRIVILEGES FOR ROLE testrole REVOKE ALL ON SEQUENCES FROM testrole;")
resultPrivileges := backup.GetDefaultPrivileges(connectionPool)
Expect(resultPrivileges).To(HaveLen(1))
structmatcher.ExpectStructsToMatchExcluding(&defaultPrivileges[0], &resultPrivileges[0], "Oid")
})
})
})