From ccec5c3c1899eba36f48a33b61403a8a0f8ff845 Mon Sep 17 00:00:00 2001 From: Akshay Gaikwad Date: Fri, 31 May 2024 14:50:16 +0530 Subject: [PATCH] fix: unable to create/update project when roles specified (#314) Crate or Update project with roles association provided under `projectNamespaceRoles` was failing due to empty group name passed to Casbin. It fixes minor bug getting group name. Signed-off-by: Akshay Gaikwad --- pkg/service/project.go | 3 +-- pkg/service/project_test.go | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/pkg/service/project.go b/pkg/service/project.go index 8532f3e..205b99b 100644 --- a/pkg/service/project.go +++ b/pkg/service/project.go @@ -493,13 +493,12 @@ func (s *projectService) createGroupRoleRelations(ctx context.Context, db bun.ID return &systemv3.Project{}, fmt.Errorf("unable to find group '%v'", grp) } var grpId uuid.UUID - var grpName string if g, ok := entity.(*models.Group); ok { grpId = g.ID - grpName = g.Name } else { return &systemv3.Project{}, fmt.Errorf("unable to find group '%v'", grp) } + grpName := *grp org := project.Metadata.Organization switch scope { diff --git a/pkg/service/project_test.go b/pkg/service/project_test.go index 8ce69b1..856cd86 100644 --- a/pkg/service/project_test.go +++ b/pkg/service/project_test.go @@ -32,11 +32,29 @@ func TestCreateProject(t *testing.T) { mock.ExpectBegin() mock.ExpectQuery(`INSERT INTO "authsrv_project"`). WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid)) + mock.ExpectQuery(`SELECT (.+) FROM "authsrv_resourcerole"`). + WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "scope", "name"}). + AddRow(puuid, "project", "PROJECT_READ_ONLY")) + mock.ExpectQuery(`SELECT (.+) FROM "authsrv_group"`). + WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid)) + mock.ExpectQuery(`INSERT INTO "authsrv_projectgrouprole"`). + WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid)) mock.ExpectCommit() + name := "project-" + puuid + group := "group1" + project := &systemv3.Project{ - Metadata: &v3.Metadata{Id: puuid, Name: "project-" + puuid, Organization: "orgname"}, - Spec: &systemv3.ProjectSpec{}, + Metadata: &v3.Metadata{Id: puuid, Name: name, Organization: "orgname"}, + Spec: &systemv3.ProjectSpec{ + ProjectNamespaceRoles: []*userv3.ProjectNamespaceRole{ + { + Role: "PROJECT_READ_ONLY", + Project: &name, + Group: &group, + }, + }, + }, } project, err := ps.Create(context.Background(), project) if err != nil {