Skip to content

Commit 045fd2c

Browse files
Add RLS policy support (#132)
1 parent 0ae5788 commit 045fd2c

28 files changed

+1822
-108
lines changed

internal/migration_acceptance_tests/acceptance_test.go

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"database/sql"
66
"fmt"
7+
"reflect"
78
"testing"
89

910
"github.com/google/uuid"
@@ -42,7 +43,9 @@ type (
4243
planFactory func(ctx context.Context, connPool sqldb.Queryable, tempDbFactory tempdb.Factory, newSchemaDDL []string, opts ...diff.PlanOpt) (diff.Plan, error)
4344

4445
acceptanceTestCase struct {
45-
name string
46+
name string
47+
// roles is a list of roles that should be created before the DDL is applied
48+
roles []string
4649
oldSchemaDDL []string
4750
newSchemaDDL []string
4851

@@ -88,12 +91,16 @@ func (suite *acceptanceTestSuite) runTestCases(acceptanceTestCases []acceptanceT
8891
suite.Run("vanilla", func() {
8992
suite.runSubtest(tc, tc.vanillaExpectations, nil)
9093
})
91-
suite.Run("with data packing (and ignoring column order)", func() {
92-
suite.runSubtest(tc, tc.dataPackingExpectations, []diff.PlanOpt{
93-
diff.WithDataPackNewTables(),
94-
diff.WithLogger(log.SimpleLogger()),
94+
// Only run the data packing test if there are expectations for it. We should strip out the embedded
95+
// data packing tests and make them their own tests to simplify the test suite.
96+
if !reflect.DeepEqual(tc.dataPackingExpectations, expectations{}) {
97+
suite.Run("with data packing (and ignoring column order)", func() {
98+
suite.runSubtest(tc, tc.dataPackingExpectations, []diff.PlanOpt{
99+
diff.WithDataPackNewTables(),
100+
diff.WithLogger(log.SimpleLogger()),
101+
})
95102
})
96-
})
103+
}
97104
})
98105
}
99106
}
@@ -106,6 +113,19 @@ func (suite *acceptanceTestSuite) runSubtest(tc acceptanceTestCase, expects expe
106113
expects.outputState = tc.newSchemaDDL
107114
}
108115

116+
// Create roles since they are global
117+
rootDb, err := sql.Open("pgx", suite.pgEngine.GetPostgresDatabaseDSN())
118+
suite.Require().NoError(err)
119+
defer rootDb.Close()
120+
for _, r := range tc.roles {
121+
_, err := rootDb.Exec(fmt.Sprintf("CREATE ROLE %s", r))
122+
suite.Require().NoError(err)
123+
}
124+
defer func() {
125+
// This will drop the roles (and attempt to reset other cluster-level state)
126+
suite.Require().NoError(pgengine.ResetInstance(context.Background(), rootDb))
127+
}()
128+
109129
// Apply old schema DDL to old DB
110130
oldDb, err := suite.pgEngine.CreateDatabase()
111131
suite.Require().NoError(err)

internal/migration_acceptance_tests/backwards_compat_cases_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,6 @@ var backCompatAcceptanceTestCases = []acceptanceTestCase{
177177
},
178178
}
179179

180-
func (suite *acceptanceTestSuite) TestBackCompatAcceptanceTestCases() {
180+
func (suite *acceptanceTestSuite) TestBackCompatTestCases() {
181181
suite.runTestCases(backCompatAcceptanceTestCases)
182182
}

internal/migration_acceptance_tests/check_constraint_cases_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,6 @@ var checkConstraintCases = []acceptanceTestCase{
568568
},
569569
}
570570

571-
func (suite *acceptanceTestSuite) TestCheckConstraintAcceptanceTestCases() {
571+
func (suite *acceptanceTestSuite) TestCheckConstraintTestCases() {
572572
suite.runTestCases(checkConstraintCases)
573573
}

internal/migration_acceptance_tests/column_cases_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -945,6 +945,6 @@ var columnAcceptanceTestCases = []acceptanceTestCase{
945945
},
946946
}
947947

948-
func (suite *acceptanceTestSuite) TestColumnAcceptanceTestCases() {
948+
func (suite *acceptanceTestSuite) TestColumnTestCases() {
949949
suite.runTestCases(columnAcceptanceTestCases)
950950
}

internal/migration_acceptance_tests/enum_cases_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,6 @@ var enumAcceptanceTestCases = []acceptanceTestCase{
126126
},
127127
}
128128

129-
func (s *acceptanceTestSuite) TestEnumTestCases() {
130-
s.runTestCases(enumAcceptanceTestCases)
129+
func (suite *acceptanceTestSuite) TestEnumTestCases() {
130+
suite.runTestCases(enumAcceptanceTestCases)
131131
}

internal/migration_acceptance_tests/extensions_cases_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,6 @@ var extensionAcceptanceTestCases = []acceptanceTestCase{
7272
},
7373
}
7474

75-
func (suite *acceptanceTestSuite) TestExtensionAcceptanceTestCases() {
75+
func (suite *acceptanceTestSuite) TestExtensionTestCases() {
7676
suite.runTestCases(extensionAcceptanceTestCases)
7777
}

internal/migration_acceptance_tests/function_cases_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,6 @@ var functionAcceptanceTestCases = []acceptanceTestCase{
577577
},
578578
}
579579

580-
func (suite *acceptanceTestSuite) TestFunctionAcceptanceTestCases() {
580+
func (suite *acceptanceTestSuite) TestFunctionTestCases() {
581581
suite.runTestCases(functionAcceptanceTestCases)
582582
}

internal/migration_acceptance_tests/index_cases_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -803,6 +803,6 @@ var indexAcceptanceTestCases = []acceptanceTestCase{
803803
},
804804
}
805805

806-
func (suite *acceptanceTestSuite) TestIndexAcceptanceTestCases() {
806+
func (suite *acceptanceTestSuite) TestIndexTestCases() {
807807
suite.runTestCases(indexAcceptanceTestCases)
808808
}

internal/migration_acceptance_tests/local_partition_index_cases_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -605,6 +605,6 @@ var localPartitionIndexAcceptanceTestCases = []acceptanceTestCase{
605605
},
606606
}
607607

608-
func (suite *acceptanceTestSuite) TestLocalPartitionIndexAcceptanceTestCases() {
608+
func (suite *acceptanceTestSuite) TestLocalPartitionIndexTestCases() {
609609
suite.runTestCases(localPartitionIndexAcceptanceTestCases)
610610
}

internal/migration_acceptance_tests/named_schema_cases_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,6 @@ var namedSchemaAcceptanceTestCases = []acceptanceTestCase{
4040
},
4141
}
4242

43-
func (suite *acceptanceTestSuite) TestNamedSchemaAcceptanceTestCases() {
43+
func (suite *acceptanceTestSuite) TestNamedSchemaTestCases() {
4444
suite.runTestCases(namedSchemaAcceptanceTestCases)
4545
}

0 commit comments

Comments
 (0)