From 7b3cc21a26f9418d51e338932c9e751ce1db73d9 Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Tue, 29 May 2018 12:23:36 -0400 Subject: [PATCH 1/3] Add num_member_entities and num_parent_groups to key_info in group listing --- vault/identity_store_groups.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vault/identity_store_groups.go b/vault/identity_store_groups.go index 8bd48d6f8b00..a97e3a7dd36b 100644 --- a/vault/identity_store_groups.go +++ b/vault/identity_store_groups.go @@ -347,7 +347,9 @@ func (i *IdentityStore) pathGroupIDList() framework.OperationFunc { group := raw.(*identity.Group) groupIDs = append(groupIDs, group.ID) groupInfoEntry := map[string]interface{}{ - "name": group.Name, + "name": group.Name, + "num_member_entities": len(group.MemberEntityIDs), + "num_parent_groups": len(group.ParentGroupIDs), } if group.Alias != nil { entry := map[string]interface{}{ From d090db015e252798aa76025bad823d4a9430ee20 Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Tue, 29 May 2018 12:43:55 -0400 Subject: [PATCH 2/3] Add parent group IDs to group read endpoint --- vault/identity_store_groups.go | 1 + 1 file changed, 1 insertion(+) diff --git a/vault/identity_store_groups.go b/vault/identity_store_groups.go index a97e3a7dd36b..3a56b46265c1 100644 --- a/vault/identity_store_groups.go +++ b/vault/identity_store_groups.go @@ -278,6 +278,7 @@ func (i *IdentityStore) handleGroupReadCommon(group *identity.Group) (*logical.R respData["name"] = group.Name respData["policies"] = group.Policies respData["member_entity_ids"] = group.MemberEntityIDs + respData["parent_group_ids"] = group.ParentGroupIDs respData["metadata"] = group.Metadata respData["creation_time"] = ptypes.TimestampString(group.CreationTime) respData["last_update_time"] = ptypes.TimestampString(group.LastUpdateTime) From e7728c792caecb57701e8480468d216e1189ef44 Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Tue, 29 May 2018 12:59:08 -0400 Subject: [PATCH 3/3] Fix tests --- vault/identity_store_groups_test.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/vault/identity_store_groups_test.go b/vault/identity_store_groups_test.go index ac57f5396861..63274a8b8c4e 100644 --- a/vault/identity_store_groups_test.go +++ b/vault/identity_store_groups_test.go @@ -6,6 +6,7 @@ import ( "sort" "testing" + "github.com/go-test/deep" "github.com/hashicorp/vault/helper/identity" "github.com/hashicorp/vault/logical" ) @@ -290,6 +291,7 @@ func TestIdentityStore_GroupsCreateUpdate(t *testing.T) { "testkey1": "testvalue1", "testkey2": "testvalue2", }, + "parent_group_ids": []string(nil), } expectedData["id"] = resp.Data["id"] expectedData["type"] = resp.Data["type"] @@ -301,8 +303,8 @@ func TestIdentityStore_GroupsCreateUpdate(t *testing.T) { expectedData["modify_index"] = resp.Data["modify_index"] expectedData["alias"] = resp.Data["alias"] - if !reflect.DeepEqual(expectedData, resp.Data) { - t.Fatalf("bad: group data;\nexpected: %#v\n actual: %#v\n", expectedData, resp.Data) + if diff := deep.Equal(expectedData, resp.Data); diff != nil { + t.Fatal(diff) } // Update the policies and metadata in the group @@ -410,6 +412,7 @@ func TestIdentityStore_GroupsCRUD_ByID(t *testing.T) { "testkey1": "testvalue1", "testkey2": "testvalue2", }, + "parent_group_ids": []string(nil), } expectedData["id"] = resp.Data["id"] expectedData["type"] = resp.Data["type"] @@ -421,8 +424,8 @@ func TestIdentityStore_GroupsCRUD_ByID(t *testing.T) { expectedData["modify_index"] = resp.Data["modify_index"] expectedData["alias"] = resp.Data["alias"] - if !reflect.DeepEqual(expectedData, resp.Data) { - t.Fatalf("bad: group data;\nexpected: %#v\n actual: %#v\n", expectedData, resp.Data) + if diff := deep.Equal(expectedData, resp.Data); diff != nil { + t.Fatal(diff) } // Update the policies and metadata in the group