mirror of
https://github.com/paralus/paralus.git
synced 2026-05-07 00:46:52 +00:00
Merge pull request #98 from RafayLabs/dev-mode
changes to support dev mode testing
This commit is contained in:
4
main.go
4
main.go
@@ -305,7 +305,7 @@ func setup() {
|
||||
|
||||
ps = service.NewPartnerService(db, auditLogger)
|
||||
os = service.NewOrganizationService(db, auditLogger)
|
||||
pps = service.NewProjectService(db, as, auditLogger)
|
||||
pps = service.NewProjectService(db, as, auditLogger, dev)
|
||||
|
||||
// users and role management services
|
||||
cc := common.CliConfigDownloadData{
|
||||
@@ -318,7 +318,7 @@ func setup() {
|
||||
cc.Profile = "production"
|
||||
}
|
||||
ks = service.NewApiKeyService(db, auditLogger)
|
||||
us = service.NewUserService(providers.NewKratosAuthProvider(kc), db, as, ks, cc, auditLogger)
|
||||
us = service.NewUserService(providers.NewKratosAuthProvider(kc), db, as, ks, cc, auditLogger, dev)
|
||||
gs = service.NewGroupService(db, as, auditLogger)
|
||||
rs = service.NewRoleService(db, as, auditLogger)
|
||||
rrs = service.NewRolepermissionService(db)
|
||||
|
||||
@@ -44,11 +44,12 @@ type projectService struct {
|
||||
db *bun.DB
|
||||
azc AuthzService
|
||||
al *zap.Logger
|
||||
dev bool
|
||||
}
|
||||
|
||||
// NewProjectService return new project service
|
||||
func NewProjectService(db *bun.DB, azc AuthzService, al *zap.Logger) ProjectService {
|
||||
return &projectService{db: db, azc: azc, al: al}
|
||||
func NewProjectService(db *bun.DB, azc AuthzService, al *zap.Logger, dev bool) ProjectService {
|
||||
return &projectService{db: db, azc: azc, al: al, dev: dev}
|
||||
}
|
||||
|
||||
func (s *projectService) Create(ctx context.Context, project *systemv3.Project) (*systemv3.Project, error) {
|
||||
@@ -338,12 +339,15 @@ func (s *projectService) Delete(ctx context.Context, project *systemv3.Project)
|
||||
}
|
||||
|
||||
func (s *projectService) List(ctx context.Context, project *systemv3.Project) (*systemv3.ProjectList, error) {
|
||||
sd, ok := GetSessionDataFromContext(ctx)
|
||||
|
||||
username := ""
|
||||
if !ok {
|
||||
return &systemv3.ProjectList{}, fmt.Errorf("cannot perform project listing without auth")
|
||||
if !s.dev {
|
||||
sd, ok := GetSessionDataFromContext(ctx)
|
||||
if !ok {
|
||||
return &systemv3.ProjectList{}, fmt.Errorf("cannot perform project listing without auth")
|
||||
}
|
||||
username = sd.Username
|
||||
}
|
||||
username = sd.Username
|
||||
|
||||
var projects []*systemv3.Project
|
||||
projectList := &systemv3.ProjectList{
|
||||
@@ -365,55 +369,66 @@ func (s *projectService) List(ctx context.Context, project *systemv3.Project) (*
|
||||
return &systemv3.ProjectList{}, err
|
||||
}
|
||||
|
||||
entity, err := dao.GetByTraits(ctx, s.db, username, &models.KratosIdentities{})
|
||||
if err != nil {
|
||||
return &systemv3.ProjectList{}, err
|
||||
}
|
||||
|
||||
if usr, ok := entity.(*models.KratosIdentities); ok {
|
||||
projs, err := dao.GetFileteredProjects(ctx, s.db, usr.ID, part.ID, org.ID)
|
||||
var projs []models.Project
|
||||
if !s.dev {
|
||||
entity, err := dao.GetByTraits(ctx, s.db, username, &models.KratosIdentities{})
|
||||
if err != nil {
|
||||
return &systemv3.ProjectList{}, err
|
||||
}
|
||||
for _, proj := range projs {
|
||||
labels := make(map[string]string)
|
||||
labels["organization"] = proj.OrganizationId.String()
|
||||
labels["partner"] = proj.PartnerId.String()
|
||||
|
||||
pnr, err := dao.GetProjectGroupRoles(ctx, s.db, proj.ID)
|
||||
if usr, ok := entity.(*models.KratosIdentities); ok {
|
||||
projs, err = dao.GetFileteredProjects(ctx, s.db, usr.ID, part.ID, org.ID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return &systemv3.ProjectList{}, err
|
||||
}
|
||||
ur, err := dao.GetProjectUserRoles(ctx, s.db, proj.ID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
project := &systemv3.Project{
|
||||
Metadata: &v3.Metadata{
|
||||
Name: proj.Name,
|
||||
Description: proj.Description,
|
||||
Id: proj.ID.String(),
|
||||
Organization: proj.OrganizationId.String(),
|
||||
Partner: proj.PartnerId.String(),
|
||||
Labels: labels,
|
||||
ModifiedAt: timestamppb.New(proj.ModifiedAt),
|
||||
},
|
||||
Spec: &systemv3.ProjectSpec{
|
||||
Default: proj.Default,
|
||||
ProjectNamespaceRoles: pnr,
|
||||
UserRoles: ur,
|
||||
},
|
||||
}
|
||||
projects = append(projects, project)
|
||||
}
|
||||
|
||||
//update the list metadata and items response
|
||||
projectList.Metadata = &v3.ListMetadata{
|
||||
Count: int64(len(projects)),
|
||||
} else {
|
||||
_, err = dao.List(ctx, s.db, uuid.NullUUID{UUID: part.ID, Valid: true}, uuid.NullUUID{UUID: org.ID, Valid: true}, &projs)
|
||||
if err != nil {
|
||||
return &systemv3.ProjectList{}, err
|
||||
}
|
||||
projectList.Items = projects
|
||||
return projectList, nil
|
||||
}
|
||||
|
||||
for _, proj := range projs {
|
||||
labels := make(map[string]string)
|
||||
labels["organization"] = proj.OrganizationId.String()
|
||||
labels["partner"] = proj.PartnerId.String()
|
||||
|
||||
pnr, err := dao.GetProjectGroupRoles(ctx, s.db, proj.ID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ur, err := dao.GetProjectUserRoles(ctx, s.db, proj.ID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
project := &systemv3.Project{
|
||||
Metadata: &v3.Metadata{
|
||||
Name: proj.Name,
|
||||
Description: proj.Description,
|
||||
Id: proj.ID.String(),
|
||||
Organization: proj.OrganizationId.String(),
|
||||
Partner: proj.PartnerId.String(),
|
||||
Labels: labels,
|
||||
ModifiedAt: timestamppb.New(proj.ModifiedAt),
|
||||
},
|
||||
Spec: &systemv3.ProjectSpec{
|
||||
Default: proj.Default,
|
||||
ProjectNamespaceRoles: pnr,
|
||||
UserRoles: ur,
|
||||
},
|
||||
}
|
||||
projects = append(projects, project)
|
||||
}
|
||||
|
||||
//update the list metadata and items response
|
||||
projectList.Metadata = &v3.ListMetadata{
|
||||
Count: int64(len(projects)),
|
||||
}
|
||||
projectList.Items = projects
|
||||
return projectList, nil
|
||||
|
||||
}
|
||||
return projectList, fmt.Errorf("missing organization id in metadata")
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ func TestCreateProject(t *testing.T) {
|
||||
defer db.Close()
|
||||
|
||||
mazc := mockAuthzClient{}
|
||||
ps := NewProjectService(db, &mazc, getLogger())
|
||||
ps := NewProjectService(db, &mazc, getLogger(), true)
|
||||
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
@@ -50,7 +50,7 @@ func TestCreateProjectDuplicate(t *testing.T) {
|
||||
defer db.Close()
|
||||
|
||||
mazc := mockAuthzClient{}
|
||||
gs := NewProjectService(db, &mazc, getLogger())
|
||||
gs := NewProjectService(db, &mazc, getLogger(), true)
|
||||
|
||||
puuid := uuid.New().String()
|
||||
|
||||
@@ -73,7 +73,7 @@ func TestProjectDelete(t *testing.T) {
|
||||
defer db.Close()
|
||||
|
||||
mazc := mockAuthzClient{}
|
||||
ps := NewProjectService(db, &mazc, getLogger())
|
||||
ps := NewProjectService(db, &mazc, getLogger(), true)
|
||||
|
||||
puuid := uuid.New().String()
|
||||
|
||||
@@ -101,7 +101,7 @@ func TestProjectDeleteNonExist(t *testing.T) {
|
||||
defer db.Close()
|
||||
|
||||
mazc := mockAuthzClient{}
|
||||
ps := NewProjectService(db, &mazc, getLogger())
|
||||
ps := NewProjectService(db, &mazc, getLogger(), true)
|
||||
|
||||
puuid := uuid.New().String()
|
||||
|
||||
@@ -122,7 +122,7 @@ func TestProjectGetByName(t *testing.T) {
|
||||
defer db.Close()
|
||||
|
||||
mazc := mockAuthzClient{}
|
||||
ps := NewProjectService(db, &mazc, getLogger())
|
||||
ps := NewProjectService(db, &mazc, getLogger(), true)
|
||||
|
||||
partuuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
@@ -166,7 +166,7 @@ func TestProjectGetById(t *testing.T) {
|
||||
defer db.Close()
|
||||
|
||||
mazc := mockAuthzClient{}
|
||||
ps := NewProjectService(db, &mazc, getLogger())
|
||||
ps := NewProjectService(db, &mazc, getLogger(), true)
|
||||
|
||||
puuid := uuid.New().String()
|
||||
|
||||
@@ -188,7 +188,7 @@ func TestProjectUpdate(t *testing.T) {
|
||||
defer db.Close()
|
||||
|
||||
mazc := mockAuthzClient{}
|
||||
ps := NewProjectService(db, &mazc, getLogger())
|
||||
ps := NewProjectService(db, &mazc, getLogger(), true)
|
||||
|
||||
puuid := uuid.New().String()
|
||||
|
||||
|
||||
@@ -56,6 +56,7 @@ type userService struct {
|
||||
ks ApiKeyService
|
||||
cc common.CliConfigDownloadData
|
||||
al *zap.Logger
|
||||
dev bool
|
||||
}
|
||||
|
||||
type userTraits struct {
|
||||
@@ -72,8 +73,8 @@ type parsedIds struct {
|
||||
Organization uuid.UUID
|
||||
}
|
||||
|
||||
func NewUserService(ap providers.AuthProvider, db *bun.DB, azc AuthzService, kss ApiKeyService, cfg common.CliConfigDownloadData, al *zap.Logger) UserService {
|
||||
return &userService{ap: ap, db: db, azc: azc, ks: kss, cc: cfg, al: al}
|
||||
func NewUserService(ap providers.AuthProvider, db *bun.DB, azc AuthzService, kss ApiKeyService, cfg common.CliConfigDownloadData, al *zap.Logger, dev bool) UserService {
|
||||
return &userService{ap: ap, db: db, azc: azc, ks: kss, cc: cfg, al: al, dev: dev}
|
||||
}
|
||||
|
||||
func getUserTraits(traits map[string]interface{}) userTraits {
|
||||
@@ -460,12 +461,19 @@ func (s *userService) GetByName(ctx context.Context, user *userv3.User) (*userv3
|
||||
}
|
||||
|
||||
func (s *userService) GetUserInfo(ctx context.Context, user *userv3.User) (*userv3.UserInfo, error) {
|
||||
sd, ok := GetSessionDataFromContext(ctx)
|
||||
username := ""
|
||||
if !ok {
|
||||
return &userv3.UserInfo{}, fmt.Errorf("cannot get user info without auth")
|
||||
if s.dev {
|
||||
username = user.Metadata.Name
|
||||
if len(username) == 0 {
|
||||
return &userv3.UserInfo{}, fmt.Errorf("username should be provided")
|
||||
}
|
||||
} else {
|
||||
sd, ok := GetSessionDataFromContext(ctx)
|
||||
if !ok {
|
||||
return &userv3.UserInfo{}, fmt.Errorf("cannot get user info without auth")
|
||||
}
|
||||
username = sd.Username
|
||||
}
|
||||
username = sd.Username
|
||||
|
||||
entity, err := dao.GetByTraits(ctx, s.db, username, &models.KratosIdentities{})
|
||||
if err != nil {
|
||||
|
||||
@@ -62,7 +62,7 @@ func TestCreateUser(t *testing.T) {
|
||||
|
||||
ap := &mockAuthProvider{}
|
||||
mazc := mockAuthzClient{}
|
||||
us := NewUserService(ap, db, &mazc, nil, common.CliConfigDownloadData{}, getLogger())
|
||||
us := NewUserService(ap, db, &mazc, nil, common.CliConfigDownloadData{}, getLogger(), true)
|
||||
|
||||
uuuid := uuid.New().String()
|
||||
puuid, ouuid := addParterOrgFetchExpectation(mock)
|
||||
@@ -110,7 +110,7 @@ func TestCreateUserWithRole(t *testing.T) {
|
||||
|
||||
ap := &mockAuthProvider{}
|
||||
mazc := mockAuthzClient{}
|
||||
us := NewUserService(ap, db, &mazc, nil, common.CliConfigDownloadData{}, getLogger())
|
||||
us := NewUserService(ap, db, &mazc, nil, common.CliConfigDownloadData{}, getLogger(), true)
|
||||
|
||||
uuuid := uuid.New().String()
|
||||
|
||||
@@ -167,7 +167,7 @@ func TestUpdateUser(t *testing.T) {
|
||||
|
||||
ap := &mockAuthProvider{}
|
||||
mazc := mockAuthzClient{}
|
||||
us := NewUserService(ap, db, &mazc, nil, common.CliConfigDownloadData{}, getLogger())
|
||||
us := NewUserService(ap, db, &mazc, nil, common.CliConfigDownloadData{}, getLogger(), true)
|
||||
|
||||
// performing update
|
||||
uuuid := addUserIdFetchExpectation(mock)
|
||||
@@ -203,7 +203,7 @@ func TestUserGetByName(t *testing.T) {
|
||||
|
||||
ap := &mockAuthProvider{}
|
||||
mazc := mockAuthzClient{}
|
||||
us := NewUserService(ap, db, &mazc, nil, common.CliConfigDownloadData{}, getLogger())
|
||||
us := NewUserService(ap, db, &mazc, nil, common.CliConfigDownloadData{}, getLogger(), true)
|
||||
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
@@ -260,7 +260,7 @@ func TestUserGetInfo(t *testing.T) {
|
||||
|
||||
ap := &mockAuthProvider{}
|
||||
mazc := mockAuthzClient{}
|
||||
us := NewUserService(ap, db, &mazc, nil, common.CliConfigDownloadData{}, getLogger())
|
||||
us := NewUserService(ap, db, &mazc, nil, common.CliConfigDownloadData{}, getLogger(), false)
|
||||
|
||||
uuuid := uuid.New().String()
|
||||
fakeuuuid := uuid.New().String()
|
||||
@@ -332,7 +332,7 @@ func TestUserGetById(t *testing.T) {
|
||||
|
||||
ap := &mockAuthProvider{}
|
||||
mazc := mockAuthzClient{}
|
||||
us := NewUserService(ap, db, &mazc, nil, common.CliConfigDownloadData{}, getLogger())
|
||||
us := NewUserService(ap, db, &mazc, nil, common.CliConfigDownloadData{}, getLogger(), true)
|
||||
|
||||
uuuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
@@ -397,7 +397,7 @@ func TestUserList(t *testing.T) {
|
||||
|
||||
ap := &mockAuthProvider{}
|
||||
mazc := mockAuthzClient{}
|
||||
us := NewUserService(ap, db, &mazc, nil, common.CliConfigDownloadData{}, getLogger())
|
||||
us := NewUserService(ap, db, &mazc, nil, common.CliConfigDownloadData{}, getLogger(), true)
|
||||
|
||||
uuuid1 := uuid.New().String()
|
||||
uuuid2 := uuid.New().String()
|
||||
@@ -495,7 +495,7 @@ func TestUserDelete(t *testing.T) {
|
||||
|
||||
ap := &mockAuthProvider{}
|
||||
mazc := mockAuthzClient{}
|
||||
us := NewUserService(ap, db, &mazc, nil, common.CliConfigDownloadData{}, getLogger())
|
||||
us := NewUserService(ap, db, &mazc, nil, common.CliConfigDownloadData{}, getLogger(), true)
|
||||
|
||||
uuuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
|
||||
Reference in New Issue
Block a user