MG-1981 - Fix bug on list groups wth subject returning subject group. (#2148)

Signed-off-by: 1998-felix <felix.gateru@gmail.com>
This commit is contained in:
Felix Gateru
2024-04-16 15:30:24 +03:00
committed by GitHub
parent f334ee2606
commit 853dab3f5c
2 changed files with 100 additions and 3 deletions
+94 -1
View File
@@ -467,6 +467,41 @@ func TestUpdateGroupEndpoint(t *testing.T) {
func TestListGroupsEndpoint(t *testing.T) {
svc := new(mocks.Service)
childGroup := groups.Group{
ID: testsutil.GenerateUUID(t),
Name: valid,
Description: valid,
Domain: testsutil.GenerateUUID(t),
Parent: validGroupResp.ID,
Metadata: clients.Metadata{
"name": "test",
},
Level: -1,
Children: []*groups.Group{},
CreatedAt: time.Now().Add(-1 * time.Second),
UpdatedAt: time.Now(),
UpdatedBy: testsutil.GenerateUUID(t),
Status: clients.EnabledStatus,
}
parentGroup := groups.Group{
ID: testsutil.GenerateUUID(t),
Name: valid,
Description: valid,
Domain: testsutil.GenerateUUID(t),
Metadata: clients.Metadata{
"name": "test",
},
Level: 1,
Children: []*groups.Group{},
CreatedAt: time.Now().Add(-1 * time.Second),
UpdatedAt: time.Now(),
UpdatedBy: testsutil.GenerateUUID(t),
Status: clients.EnabledStatus,
}
validGroupResp.Children = append(validGroupResp.Children, &childGroup)
parentGroup.Children = append(parentGroup.Children, &validGroupResp)
cases := []struct {
desc string
memberKind string
@@ -542,7 +577,7 @@ func TestListGroupsEndpoint(t *testing.T) {
memberID: testsutil.GenerateUUID(t),
},
svcResp: groups.Page{
Groups: []groups.Group{validGroupResp},
Groups: []groups.Group{validGroupResp, childGroup},
},
svcErr: nil,
resp: groupPageRes{
@@ -554,6 +589,64 @@ func TestListGroupsEndpoint(t *testing.T) {
},
err: nil,
},
{
desc: "list children groups successfully without tree",
memberKind: auth.UsersKind,
req: listGroupsReq{
Page: groups.Page{
PageMeta: groups.PageMeta{
Limit: 10,
},
ID: validGroupResp.ID,
Direction: -1,
},
tree: false,
token: valid,
memberKind: auth.UsersKind,
memberID: testsutil.GenerateUUID(t),
},
svcResp: groups.Page{
Groups: []groups.Group{validGroupResp, childGroup},
},
svcErr: nil,
resp: groupPageRes{
Groups: []viewGroupRes{
{
Group: childGroup,
},
},
},
err: nil,
},
{
desc: "list parent group successfully without tree",
memberKind: auth.UsersKind,
req: listGroupsReq{
Page: groups.Page{
PageMeta: groups.PageMeta{
Limit: 10,
},
ID: validGroupResp.ID,
Direction: 1,
},
tree: false,
token: valid,
memberKind: auth.UsersKind,
memberID: testsutil.GenerateUUID(t),
},
svcResp: groups.Page{
Groups: []groups.Group{parentGroup, validGroupResp},
},
svcErr: nil,
resp: groupPageRes{
Groups: []viewGroupRes{
{
Group: parentGroup,
},
},
},
err: nil,
},
{
desc: "unsuccessfully with invalid request",
memberKind: auth.ThingsKind,
+6 -2
View File
@@ -128,8 +128,9 @@ func ListGroupsEndpoint(svc groups.Service, memberKind string) endpoint.Endpoint
if req.tree {
return buildGroupsResponseTree(page), nil
}
filterByID := req.Page.ID != ""
return buildGroupsResponse(page), nil
return buildGroupsResponse(page, filterByID), nil
}
}
@@ -262,7 +263,7 @@ func toViewGroupRes(group groups.Group) viewGroupRes {
return view
}
func buildGroupsResponse(gp groups.Page) groupPageRes {
func buildGroupsResponse(gp groups.Page, filterByID bool) groupPageRes {
res := groupPageRes{
pageRes: pageRes{
Total: gp.Total,
@@ -275,6 +276,9 @@ func buildGroupsResponse(gp groups.Page) groupPageRes {
view := viewGroupRes{
Group: group,
}
if filterByID && group.Level == 0 {
continue
}
res.Groups = append(res.Groups, view)
}