|
|
|
|
@ -107,6 +107,78 @@ func TestGet(t *testing.T) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestList(t *testing.T) {
|
|
|
|
|
assert, require := assert.New(t), require.New(t)
|
|
|
|
|
cleanup, conn, _ := db.TestSetup(t, "postgres")
|
|
|
|
|
t.Cleanup(func() {
|
|
|
|
|
if err := conn.Close(); err != nil {
|
|
|
|
|
t.Errorf("Error when closing gorm DB: %v", err)
|
|
|
|
|
}
|
|
|
|
|
if err := cleanup(); err != nil {
|
|
|
|
|
t.Errorf("Error when cleaning up TestSetup: %v", err)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
rw := db.New(conn)
|
|
|
|
|
wrap := db.TestWrapper(t)
|
|
|
|
|
repoFn := func() (*iam.Repository, error) {
|
|
|
|
|
return iam.NewRepository(rw, rw, wrap)
|
|
|
|
|
}
|
|
|
|
|
oNoGroups, _ := iam.TestScopes(t, conn)
|
|
|
|
|
oWithGroups, _ := iam.TestScopes(t, conn)
|
|
|
|
|
var wantGroups []*pb.Group
|
|
|
|
|
for i := 0; i < 10; i++ {
|
|
|
|
|
g := iam.TestGroup(t, conn, oWithGroups.GetPublicId())
|
|
|
|
|
wantGroups = append(wantGroups, &pb.Group{
|
|
|
|
|
Id: g.GetPublicId(),
|
|
|
|
|
CreatedTime: g.GetCreateTime().GetTimestamp(),
|
|
|
|
|
UpdatedTime: g.GetUpdateTime().GetTimestamp(),
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cases := []struct {
|
|
|
|
|
name string
|
|
|
|
|
req *pbs.ListGroupsRequest
|
|
|
|
|
res *pbs.ListGroupsResponse
|
|
|
|
|
errCode codes.Code
|
|
|
|
|
}{
|
|
|
|
|
{
|
|
|
|
|
name: "List Many Group",
|
|
|
|
|
req: &pbs.ListGroupsRequest{OrgId: oWithGroups.GetPublicId()},
|
|
|
|
|
res: &pbs.ListGroupsResponse{Items: wantGroups},
|
|
|
|
|
errCode: codes.OK,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "List No Groups",
|
|
|
|
|
req: &pbs.ListGroupsRequest{OrgId: oNoGroups.GetPublicId()},
|
|
|
|
|
res: &pbs.ListGroupsResponse{},
|
|
|
|
|
errCode: codes.OK,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "Invalid Org Id",
|
|
|
|
|
req: &pbs.ListGroupsRequest{OrgId: iam.OrganizationScope.Prefix() + "_this is invalid"},
|
|
|
|
|
res: nil,
|
|
|
|
|
errCode: codes.InvalidArgument,
|
|
|
|
|
},
|
|
|
|
|
// TODO: When an org doesn't exist, we should return a 404 instead of an empty list.
|
|
|
|
|
{
|
|
|
|
|
name: "Unfound Org",
|
|
|
|
|
req: &pbs.ListGroupsRequest{OrgId: iam.OrganizationScope.Prefix() + "_DoesntExis"},
|
|
|
|
|
res: &pbs.ListGroupsResponse{},
|
|
|
|
|
errCode: codes.OK,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
for _, tc := range cases {
|
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
|
s, err := groups.NewService(repoFn)
|
|
|
|
|
require.NoError(err, "Couldn't create new group service.")
|
|
|
|
|
|
|
|
|
|
got, gErr := s.ListGroups(context.Background(), tc.req)
|
|
|
|
|
assert.Equal(tc.errCode, status.Code(gErr), "ListGroups(%+v) got error %v, wanted %v", tc.req, gErr, tc.errCode)
|
|
|
|
|
assert.True(proto.Equal(got, tc.res), "ListGroups(%q) got response %q, wanted %q", tc.req, got, tc.res)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestDelete(t *testing.T) {
|
|
|
|
|
require := require.New(t)
|
|
|
|
|
g, repo := createDefaultGroupAndRepo(t)
|
|
|
|
|
|