github.com/tuhaihe/gpbackup@v1.0.3/integration/predata_acl_create_test.go (about)

     1  package integration
     2  
     3  import (
     4  	"github.com/tuhaihe/gp-common-go-libs/structmatcher"
     5  	"github.com/tuhaihe/gp-common-go-libs/testhelper"
     6  	"github.com/tuhaihe/gpbackup/backup"
     7  	"github.com/tuhaihe/gpbackup/testutils"
     8  
     9  	. "github.com/onsi/ginkgo/v2"
    10  	. "github.com/onsi/gomega"
    11  )
    12  
    13  var _ = Describe("backup integration create statement tests", func() {
    14  	BeforeEach(func() {
    15  		tocfile, backupfile = testutils.InitializeTestTOC(buffer, "predata")
    16  		testutils.SkipIfBefore6(connectionPool)
    17  	})
    18  	Describe("PrintDefaultPrivilegesStatements", func() {
    19  		It("create default privileges for a table", func() {
    20  			privs := []backup.ACL{{Grantee: "", Select: true}, testutils.DefaultACLForType("testrole", "TABLE")}
    21  			defaultPrivileges := []backup.DefaultPrivileges{{Schema: "", Privileges: privs, ObjectType: "r", Owner: "testrole"}}
    22  
    23  			backup.PrintDefaultPrivilegesStatements(backupfile, tocfile, defaultPrivileges)
    24  
    25  			testhelper.AssertQueryRuns(connectionPool, buffer.String())
    26  			defer testhelper.AssertQueryRuns(connectionPool, "ALTER DEFAULT PRIVILEGES FOR ROLE testrole REVOKE ALL ON TABLES FROM PUBLIC;")
    27  
    28  			resultPrivileges := backup.GetDefaultPrivileges(connectionPool)
    29  
    30  			Expect(resultPrivileges).To(HaveLen(1))
    31  			structmatcher.ExpectStructsToMatchExcluding(&defaultPrivileges[0], &resultPrivileges[0], "Oid")
    32  		})
    33  		It("create default privileges for a sequence with grant option in schema", func() {
    34  			privs := []backup.ACL{{Grantee: "testrole", SelectWithGrant: true}}
    35  			defaultPrivileges := []backup.DefaultPrivileges{{Schema: "", Privileges: privs, ObjectType: "S", Owner: "testrole"}}
    36  
    37  			backup.PrintDefaultPrivilegesStatements(backupfile, tocfile, defaultPrivileges)
    38  
    39  			testhelper.AssertQueryRuns(connectionPool, buffer.String())
    40  			// Both of these statements are required to remove the entry from the pg_default_acl catalog table, otherwise it will pollute other tests
    41  			defer testhelper.AssertQueryRuns(connectionPool, "ALTER DEFAULT PRIVILEGES FOR ROLE testrole GRANT ALL ON SEQUENCES TO testrole;")
    42  			defer testhelper.AssertQueryRuns(connectionPool, "ALTER DEFAULT PRIVILEGES FOR ROLE testrole REVOKE ALL ON SEQUENCES FROM testrole;")
    43  
    44  			resultPrivileges := backup.GetDefaultPrivileges(connectionPool)
    45  
    46  			Expect(resultPrivileges).To(HaveLen(1))
    47  			structmatcher.ExpectStructsToMatchExcluding(&defaultPrivileges[0], &resultPrivileges[0], "Oid")
    48  		})
    49  	})
    50  })