mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-13 13:13:38 +00:00
refactor(api): moving organization API resourced based
This commit is contained in:
@@ -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 {
|
||||
|
@@ -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,
|
||||
|
@@ -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"),
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user