mirror of
https://github.com/zitadel/zitadel.git
synced 2025-07-15 08:28:43 +00:00
187 lines
4.2 KiB
Go
187 lines
4.2 KiB
Go
package org
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/muhlemmer/gu"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
"google.golang.org/protobuf/types/known/timestamppb"
|
|
|
|
"github.com/zitadel/zitadel/internal/command"
|
|
"github.com/zitadel/zitadel/internal/domain"
|
|
"github.com/zitadel/zitadel/internal/zerrors"
|
|
org "github.com/zitadel/zitadel/pkg/grpc/org/v2beta"
|
|
user "github.com/zitadel/zitadel/pkg/grpc/user/v2beta"
|
|
)
|
|
|
|
func Test_createOrganizationRequestToCommand(t *testing.T) {
|
|
type args struct {
|
|
request *org.CreateOrganizationRequest
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want *command.OrgSetup
|
|
wantErr error
|
|
}{
|
|
{
|
|
name: "nil user",
|
|
args: args{
|
|
request: &org.CreateOrganizationRequest{
|
|
Name: "name",
|
|
Admins: []*org.CreateOrganizationRequest_Admin{
|
|
{},
|
|
},
|
|
},
|
|
},
|
|
wantErr: zerrors.ThrowUnimplementedf(nil, "ORGv2-SL2r8", "userType oneOf %T in method AddOrganization not implemented", nil),
|
|
},
|
|
{
|
|
name: "custom org ID",
|
|
args: args{
|
|
request: &org.CreateOrganizationRequest{
|
|
Name: "custom org ID",
|
|
Id: gu.Ptr("org-ID"),
|
|
},
|
|
},
|
|
want: &command.OrgSetup{
|
|
Name: "custom org ID",
|
|
CustomDomain: "",
|
|
Admins: []*command.OrgSetupAdmin{},
|
|
OrgID: "org-ID",
|
|
},
|
|
},
|
|
{
|
|
name: "user ID",
|
|
args: args{
|
|
request: &org.CreateOrganizationRequest{
|
|
Name: "name",
|
|
Admins: []*org.CreateOrganizationRequest_Admin{
|
|
{
|
|
UserType: &org.CreateOrganizationRequest_Admin_UserId{
|
|
UserId: "userID",
|
|
},
|
|
Roles: nil,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
want: &command.OrgSetup{
|
|
Name: "name",
|
|
CustomDomain: "",
|
|
Admins: []*command.OrgSetupAdmin{
|
|
{
|
|
ID: "userID",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "human user",
|
|
args: args{
|
|
request: &org.CreateOrganizationRequest{
|
|
Name: "name",
|
|
Admins: []*org.CreateOrganizationRequest_Admin{
|
|
{
|
|
UserType: &org.CreateOrganizationRequest_Admin_Human{
|
|
Human: &user.AddHumanUserRequest{
|
|
Profile: &user.SetHumanProfile{
|
|
GivenName: "firstname",
|
|
FamilyName: "lastname",
|
|
},
|
|
Email: &user.SetHumanEmail{
|
|
Email: "email@test.com",
|
|
},
|
|
},
|
|
},
|
|
Roles: nil,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
want: &command.OrgSetup{
|
|
Name: "name",
|
|
CustomDomain: "",
|
|
Admins: []*command.OrgSetupAdmin{
|
|
{
|
|
Human: &command.AddHuman{
|
|
Username: "email@test.com",
|
|
FirstName: "firstname",
|
|
LastName: "lastname",
|
|
Email: command.Email{
|
|
Address: "email@test.com",
|
|
},
|
|
Metadata: make([]*command.AddMetadataEntry, 0),
|
|
Links: make([]*command.AddLink, 0),
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got, err := createOrganizationRequestToCommand(tt.args.request)
|
|
require.ErrorIs(t, err, tt.wantErr)
|
|
assert.Equal(t, tt.want, got)
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_createdOrganizationToPb(t *testing.T) {
|
|
now := time.Now()
|
|
type args struct {
|
|
createdOrg *command.CreatedOrg
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want *org.CreateOrganizationResponse
|
|
wantErr error
|
|
}{
|
|
{
|
|
name: "human user with phone and email code",
|
|
args: args{
|
|
createdOrg: &command.CreatedOrg{
|
|
ObjectDetails: &domain.ObjectDetails{
|
|
Sequence: 1,
|
|
EventDate: now,
|
|
ResourceOwner: "orgID",
|
|
},
|
|
OrgAdmins: []command.OrgAdmin{
|
|
&command.CreatedOrgAdmin{
|
|
ID: "id",
|
|
EmailCode: gu.Ptr("emailCode"),
|
|
PhoneCode: gu.Ptr("phoneCode"),
|
|
},
|
|
},
|
|
},
|
|
},
|
|
want: &org.CreateOrganizationResponse{
|
|
CreationDate: timestamppb.New(now),
|
|
Id: "orgID",
|
|
OrganizationAdmins: []*org.OrganizationAdmin{
|
|
{
|
|
OrganizationAdmin: &org.OrganizationAdmin_CreatedAdmin{
|
|
CreatedAdmin: &org.CreatedAdmin{
|
|
UserId: "id",
|
|
EmailCode: gu.Ptr("emailCode"),
|
|
PhoneCode: gu.Ptr("phoneCode"),
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got, err := createdOrganizationToPb(tt.args.createdOrg)
|
|
require.ErrorIs(t, err, tt.wantErr)
|
|
assert.Equal(t, tt.want, got)
|
|
})
|
|
}
|
|
}
|