Skip to content

Commit

Permalink
removing duplicates on reading entity policies
Browse files Browse the repository at this point in the history
  • Loading branch information
hghaf099 committed Oct 13, 2021
1 parent 7c234b4 commit 1e635cd
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
7 changes: 3 additions & 4 deletions vault/identity_store_entities.go
Original file line number Diff line number Diff line change
Expand Up @@ -238,8 +238,7 @@ func (i *IdentityStore) handleEntityUpdateCommon() framework.OperationFunc {
// Update the policies if supplied
entityPoliciesRaw, ok := d.GetOk("policies")
if ok {
filteredPolicies := strutil.RemoveDuplicates(entityPoliciesRaw.([]string), false)
entity.Policies = filteredPolicies
entity.Policies = strutil.RemoveDuplicates(entityPoliciesRaw.([]string), false)
}

if strutil.StrListContains(entity.Policies, "root") {
Expand Down Expand Up @@ -354,7 +353,7 @@ func (i *IdentityStore) handleEntityReadCommon(ctx context.Context, entity *iden
respData["name"] = entity.Name
respData["metadata"] = entity.Metadata
respData["merged_entity_ids"] = entity.MergedEntityIDs
respData["policies"] = entity.Policies
respData["policies"] = strutil.RemoveDuplicates(entity.Policies, false)
respData["disabled"] = entity.Disabled
respData["namespace_id"] = entity.NamespaceID

Expand Down Expand Up @@ -806,7 +805,7 @@ func (i *IdentityStore) mergeEntity(ctx context.Context, txn *memdb.Txn, toEntit

// If told to, merge policies
if mergePolicies {
toEntity.Policies = strutil.MergeSlices(toEntity.Policies, fromEntity.Policies)
toEntity.Policies = strutil.RemoveDuplicates(strutil.MergeSlices(toEntity.Policies, fromEntity.Policies), false)
}

// If the entity from which we are merging from was already a merged
Expand Down
6 changes: 6 additions & 0 deletions vault/identity_store_entities_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1225,6 +1225,7 @@ func TestIdentityStore_MergeEntitiesByID_DuplicateFromEntityIDs(t *testing.T) {
Data: map[string]interface{}{
"name": "testentityname2",
"metadata": []string{"someusefulkey=someusefulvalue"},
"policies": []string{"testPolicy1", "testPolicy1", "testPolicy2"},
},
}

Expand Down Expand Up @@ -1261,6 +1262,7 @@ func TestIdentityStore_MergeEntitiesByID_DuplicateFromEntityIDs(t *testing.T) {
"mount_accessor": githubAccessor,
"metadata": []string{"organization=hashicorp", "team=vault"},
"entity_id": entityID2,
"policies": []string{"testPolicy1", "testPolicy1", "testPolicy2"},
},
}

Expand Down Expand Up @@ -1324,4 +1326,8 @@ func TestIdentityStore_MergeEntitiesByID_DuplicateFromEntityIDs(t *testing.T) {
if len(entity1Lookup.Aliases) != 1 {
t.Fatalf("bad: number of aliases in entity; expected: 1, actual: %d", len(entity1Lookup.Aliases))
}

if len(entity1Lookup.Policies) != 2 {
t.Fatalf("invalid number of entity policies; expected: 2, actualL: %d", len(entity1Lookup.Policies))
}
}

0 comments on commit 1e635cd

Please sign in to comment.