Skip to content

Commit dfbcb5c

Browse files
authored
Fixed case sensitivity for principals in databricks_grants and databricks_grant (#3708)
* make principal case sensitive * fix acceptance tests
1 parent 505a451 commit dfbcb5c

File tree

6 files changed

+14
-14
lines changed

6 files changed

+14
-14
lines changed

catalog/resource_grant.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ func diffPermissionsForPrincipal(principal string, desired catalog.PermissionsLi
2020
// diffs change sets for principal
2121
configured := map[string]*schema.Set{}
2222
for _, v := range desired.PrivilegeAssignments {
23-
if strings.EqualFold(v.Principal, principal) {
24-
configured[strings.ToLower(v.Principal)] = permissions.SliceToSet(v.Privileges)
23+
if v.Principal == principal {
24+
configured[v.Principal] = permissions.SliceToSet(v.Privileges)
2525
}
2626
}
2727
// existing permissions that needs removal for principal
2828
remote := map[string]*schema.Set{}
2929
for _, v := range existing.PrivilegeAssignments {
30-
if strings.EqualFold(v.Principal, principal) {
31-
remote[strings.ToLower(v.Principal)] = permissions.SliceToSet(v.Privileges)
30+
if v.Principal == principal {
31+
remote[v.Principal] = permissions.SliceToSet(v.Privileges)
3232
}
3333
}
3434
// STEP 1: detect overlaps
@@ -87,7 +87,7 @@ func filterPermissionsForPrincipal(in catalog.PermissionsList, principal string)
8787
grantsForPrincipal := []permissions.UnityCatalogPrivilegeAssignment{}
8888
for _, v := range in.PrivilegeAssignments {
8989
privileges := []string{}
90-
if strings.EqualFold(v.Principal, principal) {
90+
if v.Principal == principal {
9191
for _, p := range v.Privileges {
9292
privileges = append(privileges, p.String())
9393
}
@@ -122,7 +122,7 @@ func parseSecurableId(d *schema.ResourceData) (string, string, string, error) {
122122
func ResourceGrant() common.Resource {
123123
s := common.StructToSchema(permissions.UnityCatalogPrivilegeAssignment{},
124124
func(m map[string]*schema.Schema) map[string]*schema.Schema {
125-
common.CustomizeSchemaPath(m, "principal").SetForceNew().SetCustomSuppressDiff(common.EqualFoldDiffSuppress)
125+
common.CustomizeSchemaPath(m, "principal").SetForceNew()
126126

127127
// set custom hash function for privileges
128128
common.MustSchemaPath(m, "privileges").Set = func(i any) int {

catalog/resource_grant_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -538,7 +538,7 @@ func TestResourceGrantPermissionsList_Diff_CaseSensitive(t *testing.T) {
538538
catalog.PermissionsList{ // config
539539
PrivilegeAssignments: []catalog.PrivilegeAssignment{
540540
{
541-
Principal: "a",
541+
Principal: "A",
542542
Privileges: []catalog.Privilege{"a"},
543543
},
544544
{
@@ -550,7 +550,7 @@ func TestResourceGrantPermissionsList_Diff_CaseSensitive(t *testing.T) {
550550
catalog.PermissionsList{
551551
PrivilegeAssignments: []catalog.PrivilegeAssignment{ // platform
552552
{
553-
Principal: "A",
553+
Principal: "a",
554554
Privileges: []catalog.Privilege{"a"},
555555
},
556556
{
@@ -560,7 +560,7 @@ func TestResourceGrantPermissionsList_Diff_CaseSensitive(t *testing.T) {
560560
},
561561
},
562562
)
563-
assert.Len(t, diff, 0)
563+
assert.Len(t, diff, 1)
564564
}
565565

566566
func TestResourceGrantPermissionsList_Diff_ExternallyAddedPriv(t *testing.T) {

catalog/resource_grants.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@ func diffPermissions(pl catalog.PermissionsList, existing catalog.PermissionsLis
3131
// diffs change sets
3232
configured := map[string]*schema.Set{}
3333
for _, v := range pl.PrivilegeAssignments {
34-
configured[strings.ToLower(v.Principal)] = permissions.SliceToSet(v.Privileges)
34+
configured[v.Principal] = permissions.SliceToSet(v.Privileges)
3535
}
3636
// existing permissions that needs removal
3737
remote := map[string]*schema.Set{}
3838
for _, v := range existing.PrivilegeAssignments {
39-
remote[strings.ToLower(v.Principal)] = permissions.SliceToSet(v.Privileges)
39+
remote[v.Principal] = permissions.SliceToSet(v.Privileges)
4040
}
4141
// STEP 1: detect overlaps
4242
for principal, confPrivs := range configured {

catalog/resource_grants_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ func TestPermissionsList_Diff_CaseSensitivePrincipal(t *testing.T) {
437437
},
438438
},
439439
)
440-
assert.Len(t, diff, 0)
440+
assert.Len(t, diff, 2)
441441
}
442442

443443
func TestPermissionsList_Diff_LocalRemoteDiff(t *testing.T) {

internal/acceptance/grant_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ func TestUcAccGrant(t *testing.T) {
104104
}, step{
105105
Template: strings.ReplaceAll(grantTemplate, "%s", "{env.TEST_DATA_SCI_GROUP}"),
106106
}, step{
107-
Template: strings.ReplaceAll(strings.ReplaceAll(grantTemplate, "ALL_PRIVILEGES", "ALL PRIVILEGES"), `"%s"`, `upper("{env.TEST_DATA_SCI_GROUP}")`),
107+
Template: strings.ReplaceAll(strings.ReplaceAll(grantTemplate, "ALL_PRIVILEGES", "ALL PRIVILEGES"), "%s", "{env.TEST_DATA_ENG_GROUP}"),
108108
})
109109
}
110110

internal/acceptance/grants_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ func TestUcAccGrants(t *testing.T) {
110110
}, step{
111111
Template: strings.ReplaceAll(grantsTemplate, "%s", "{env.TEST_DATA_SCI_GROUP}"),
112112
}, step{
113-
Template: strings.ReplaceAll(strings.ReplaceAll(grantsTemplate, "ALL_PRIVILEGES", "ALL PRIVILEGES"), `"%s"`, `upper("{env.TEST_DATA_SCI_GROUP}")`),
113+
Template: strings.ReplaceAll(strings.ReplaceAll(grantsTemplate, "ALL_PRIVILEGES", "ALL PRIVILEGES"), "%s", "{env.TEST_DATA_ENG_GROUP}"),
114114
})
115115
}
116116

0 commit comments

Comments
 (0)