refactor(api): moving organization API resourced based

This commit is contained in:
Iraq Jaber
2025-04-24 12:17:45 +02:00
parent 44651b6e8d
commit aad8961bf3
4 changed files with 50 additions and 50 deletions

View File

@@ -40,20 +40,20 @@ func TestMain(m *testing.M) {
}())
}
func TestServer_AddOrganization(t *testing.T) {
func TestServer_CreateOrganization(t *testing.T) {
idpResp := Instance.AddGenericOAuthProvider(CTX, Instance.DefaultOrg.Id)
tests := []struct {
name string
ctx context.Context
req *org.AddOrganizationRequest
want *org.AddOrganizationResponse
req *org.CreateOrganizationRequest
want *org.CreateOrganizationResponse
wantErr bool
}{
{
name: "missing permission",
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeOrgOwner),
req: &org.AddOrganizationRequest{
req: &org.CreateOrganizationRequest{
Name: "name",
Admins: nil,
},
@@ -62,7 +62,7 @@ func TestServer_AddOrganization(t *testing.T) {
{
name: "empty name",
ctx: CTX,
req: &org.AddOrganizationRequest{
req: &org.CreateOrganizationRequest{
Name: "",
Admins: nil,
},
@@ -71,9 +71,9 @@ func TestServer_AddOrganization(t *testing.T) {
{
name: "invalid admin type",
ctx: CTX,
req: &org.AddOrganizationRequest{
req: &org.CreateOrganizationRequest{
Name: gofakeit.AppName(),
Admins: []*org.AddOrganizationRequest_Admin{
Admins: []*org.CreateOrganizationRequest_Admin{
{},
},
},
@@ -82,11 +82,11 @@ func TestServer_AddOrganization(t *testing.T) {
{
name: "admin with init",
ctx: CTX,
req: &org.AddOrganizationRequest{
req: &org.CreateOrganizationRequest{
Name: gofakeit.AppName(),
Admins: []*org.AddOrganizationRequest_Admin{
Admins: []*org.CreateOrganizationRequest_Admin{
{
UserType: &org.AddOrganizationRequest_Admin_Human{
UserType: &org.CreateOrganizationRequest_Admin_Human{
Human: &user_v2beta.AddHumanUserRequest{
Profile: &user_v2beta.SetHumanProfile{
GivenName: "firstname",
@@ -103,9 +103,9 @@ func TestServer_AddOrganization(t *testing.T) {
},
},
},
want: &org.AddOrganizationResponse{
want: &org.CreateOrganizationResponse{
OrganizationId: integration.NotEmpty,
CreatedAdmins: []*org.AddOrganizationResponse_CreatedAdmin{
CreatedAdmins: []*org.CreateOrganizationResponse_CreatedAdmin{
{
UserId: integration.NotEmpty,
EmailCode: gu.Ptr(integration.NotEmpty),
@@ -117,14 +117,14 @@ func TestServer_AddOrganization(t *testing.T) {
{
name: "existing user and new human with idp",
ctx: CTX,
req: &org.AddOrganizationRequest{
req: &org.CreateOrganizationRequest{
Name: gofakeit.AppName(),
Admins: []*org.AddOrganizationRequest_Admin{
Admins: []*org.CreateOrganizationRequest_Admin{
{
UserType: &org.AddOrganizationRequest_Admin_UserId{UserId: User.GetUserId()},
UserType: &org.CreateOrganizationRequest_Admin_UserId{UserId: User.GetUserId()},
},
{
UserType: &org.AddOrganizationRequest_Admin_Human{
UserType: &org.CreateOrganizationRequest_Admin_Human{
Human: &user_v2beta.AddHumanUserRequest{
Profile: &user_v2beta.SetHumanProfile{
GivenName: "firstname",
@@ -148,8 +148,8 @@ func TestServer_AddOrganization(t *testing.T) {
},
},
},
want: &org.AddOrganizationResponse{
CreatedAdmins: []*org.AddOrganizationResponse_CreatedAdmin{
want: &org.CreateOrganizationResponse{
CreatedAdmins: []*org.CreateOrganizationResponse_CreatedAdmin{
// a single admin is expected, because the first provided already exists
{
UserId: integration.NotEmpty,
@@ -160,7 +160,7 @@ func TestServer_AddOrganization(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := Client.AddOrganization(tt.ctx, tt.req)
got, err := Client.CreateOrganization(tt.ctx, tt.req)
if tt.wantErr {
require.Error(t, err)
return
@@ -187,7 +187,7 @@ func TestServer_AddOrganization(t *testing.T) {
}
}
func assertCreatedAdmin(t *testing.T, expected, got *org.AddOrganizationResponse_CreatedAdmin) {
func assertCreatedAdmin(t *testing.T, expected, got *org.CreateOrganizationResponse_CreatedAdmin) {
if expected.GetUserId() != "" {
assert.NotEmpty(t, got.GetUserId())
} else {

View File

@@ -10,8 +10,8 @@ import (
org "github.com/zitadel/zitadel/pkg/grpc/org/v2beta"
)
func (s *Server) AddOrganization(ctx context.Context, request *org.AddOrganizationRequest) (*org.AddOrganizationResponse, error) {
orgSetup, err := addOrganizationRequestToCommand(request)
func (s *Server) CreateOrganization(ctx context.Context, request *org.CreateOrganizationRequest) (*org.CreateOrganizationResponse, error) {
orgSetup, err := createOrganizationRequestToCommand(request)
if err != nil {
return nil, err
}
@@ -22,8 +22,8 @@ func (s *Server) AddOrganization(ctx context.Context, request *org.AddOrganizati
return createdOrganizationToPb(createdOrg)
}
func addOrganizationRequestToCommand(request *org.AddOrganizationRequest) (*command.OrgSetup, error) {
admins, err := addOrganizationRequestAdminsToCommand(request.GetAdmins())
func createOrganizationRequestToCommand(request *org.CreateOrganizationRequest) (*command.OrgSetup, error) {
admins, err := createOrganizationRequestAdminsToCommand(request.GetAdmins())
if err != nil {
return nil, err
}
@@ -34,10 +34,10 @@ func addOrganizationRequestToCommand(request *org.AddOrganizationRequest) (*comm
}, nil
}
func addOrganizationRequestAdminsToCommand(requestAdmins []*org.AddOrganizationRequest_Admin) (admins []*command.OrgSetupAdmin, err error) {
func createOrganizationRequestAdminsToCommand(requestAdmins []*org.CreateOrganizationRequest_Admin) (admins []*command.OrgSetupAdmin, err error) {
admins = make([]*command.OrgSetupAdmin, len(requestAdmins))
for i, admin := range requestAdmins {
admins[i], err = addOrganizationRequestAdminToCommand(admin)
admins[i], err = createOrganizationRequestAdminToCommand(admin)
if err != nil {
return nil, err
}
@@ -45,14 +45,14 @@ func addOrganizationRequestAdminsToCommand(requestAdmins []*org.AddOrganizationR
return admins, nil
}
func addOrganizationRequestAdminToCommand(admin *org.AddOrganizationRequest_Admin) (*command.OrgSetupAdmin, error) {
func createOrganizationRequestAdminToCommand(admin *org.CreateOrganizationRequest_Admin) (*command.OrgSetupAdmin, error) {
switch a := admin.GetUserType().(type) {
case *org.AddOrganizationRequest_Admin_UserId:
case *org.CreateOrganizationRequest_Admin_UserId:
return &command.OrgSetupAdmin{
ID: a.UserId,
Roles: admin.GetRoles(),
}, nil
case *org.AddOrganizationRequest_Admin_Human:
case *org.CreateOrganizationRequest_Admin_Human:
human, err := user.AddUserRequestToAddHuman(a.Human)
if err != nil {
return nil, err
@@ -66,16 +66,16 @@ func addOrganizationRequestAdminToCommand(admin *org.AddOrganizationRequest_Admi
}
}
func createdOrganizationToPb(createdOrg *command.CreatedOrg) (_ *org.AddOrganizationResponse, err error) {
admins := make([]*org.AddOrganizationResponse_CreatedAdmin, len(createdOrg.CreatedAdmins))
func createdOrganizationToPb(createdOrg *command.CreatedOrg) (_ *org.CreateOrganizationResponse, err error) {
admins := make([]*org.CreateOrganizationResponse_CreatedAdmin, len(createdOrg.CreatedAdmins))
for i, admin := range createdOrg.CreatedAdmins {
admins[i] = &org.AddOrganizationResponse_CreatedAdmin{
admins[i] = &org.CreateOrganizationResponse_CreatedAdmin{
UserId: admin.ID,
EmailCode: admin.EmailCode,
PhoneCode: admin.PhoneCode,
}
}
return &org.AddOrganizationResponse{
return &org.CreateOrganizationResponse{
Details: object.DomainToDetailsPb(createdOrg.ObjectDetails),
OrganizationId: createdOrg.ObjectDetails.ResourceOwner,
CreatedAdmins: admins,

View File

@@ -17,9 +17,9 @@ import (
user "github.com/zitadel/zitadel/pkg/grpc/user/v2beta"
)
func Test_addOrganizationRequestToCommand(t *testing.T) {
func Test_createOrganizationRequestToCommand(t *testing.T) {
type args struct {
request *org.AddOrganizationRequest
request *org.CreateOrganizationRequest
}
tests := []struct {
name string
@@ -30,9 +30,9 @@ func Test_addOrganizationRequestToCommand(t *testing.T) {
{
name: "nil user",
args: args{
request: &org.AddOrganizationRequest{
request: &org.CreateOrganizationRequest{
Name: "name",
Admins: []*org.AddOrganizationRequest_Admin{
Admins: []*org.CreateOrganizationRequest_Admin{
{},
},
},
@@ -42,11 +42,11 @@ func Test_addOrganizationRequestToCommand(t *testing.T) {
{
name: "user ID",
args: args{
request: &org.AddOrganizationRequest{
request: &org.CreateOrganizationRequest{
Name: "name",
Admins: []*org.AddOrganizationRequest_Admin{
Admins: []*org.CreateOrganizationRequest_Admin{
{
UserType: &org.AddOrganizationRequest_Admin_UserId{
UserType: &org.CreateOrganizationRequest_Admin_UserId{
UserId: "userID",
},
Roles: nil,
@@ -67,11 +67,11 @@ func Test_addOrganizationRequestToCommand(t *testing.T) {
{
name: "human user",
args: args{
request: &org.AddOrganizationRequest{
request: &org.CreateOrganizationRequest{
Name: "name",
Admins: []*org.AddOrganizationRequest_Admin{
Admins: []*org.CreateOrganizationRequest_Admin{
{
UserType: &org.AddOrganizationRequest_Admin_Human{
UserType: &org.CreateOrganizationRequest_Admin_Human{
Human: &user.AddHumanUserRequest{
Profile: &user.SetHumanProfile{
GivenName: "firstname",
@@ -109,7 +109,7 @@ func Test_addOrganizationRequestToCommand(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := addOrganizationRequestToCommand(tt.args.request)
got, err := createOrganizationRequestToCommand(tt.args.request)
require.ErrorIs(t, err, tt.wantErr)
assert.Equal(t, tt.want, got)
})
@@ -124,7 +124,7 @@ func Test_createdOrganizationToPb(t *testing.T) {
tests := []struct {
name string
args args
want *org.AddOrganizationResponse
want *org.CreateOrganizationResponse
wantErr error
}{
{
@@ -145,14 +145,14 @@ func Test_createdOrganizationToPb(t *testing.T) {
},
},
},
want: &org.AddOrganizationResponse{
want: &org.CreateOrganizationResponse{
Details: &object.Details{
Sequence: 1,
ChangeDate: timestamppb.New(now),
ResourceOwner: "orgID",
},
OrganizationId: "orgID",
CreatedAdmins: []*org.AddOrganizationResponse_CreatedAdmin{
CreatedAdmins: []*org.CreateOrganizationResponse_CreatedAdmin{
{
UserId: "id",
EmailCode: gu.Ptr("emailCode"),

View File

@@ -112,7 +112,7 @@ option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = {
service OrganizationService {
// Create a new organization and grant the user(s) permission to manage it
rpc AddOrganization(AddOrganizationRequest) returns (AddOrganizationResponse) {
rpc CreateOrganization(CreateOrganizationRequest) returns (CreateOrganizationResponse) {
option (google.api.http) = {
post: "/v2beta/organizations"
body: "*"
@@ -140,7 +140,7 @@ service OrganizationService {
}
}
message AddOrganizationRequest{
message CreateOrganizationRequest{
message Admin {
oneof user_type{
string user_id = 1;
@@ -162,7 +162,7 @@ message AddOrganizationRequest{
repeated Admin admins = 2;
}
message AddOrganizationResponse{
message CreateOrganizationResponse{
message CreatedAdmin {
string user_id = 1;
optional string email_code = 2;