Merge branch 'org_api_2' into org_api_merge_2

This commit is contained in:
Iraq Jaber
2025-05-30 18:21:06 +02:00
8 changed files with 78 additions and 49 deletions

View File

@@ -47,3 +47,4 @@ func OrgMetadataQueryToQuery(metadataQuery *meta_pb.MetadataQuery) (query.Search
return nil, zerrors.ThrowInvalidArgument(nil, "METAD-fdg23", "List.Query.Invalid")
}
}

View File

@@ -159,3 +159,4 @@ func DomainValidationTypeToDomain(validationType org_pb.DomainValidationType) do
return domain.OrgDomainValidationTypeUnspecified
}
}

View File

@@ -284,3 +284,4 @@ func ListOrgMetadataToDomain(systemDefaults systemdefaults.SystemDefaults, reque
Queries: queries,
}, nil
}

View File

@@ -110,11 +110,15 @@ func TestServer_CreateOrganization(t *testing.T) {
},
want: &v2beta_org.CreateOrganizationResponse{
Id: integration.NotEmpty,
CreatedAdmins: []*v2beta_org.CreatedAdmin{
OrganizationAdmins: []*org.OrganizationAdmin{
{
UserId: integration.NotEmpty,
EmailCode: gu.Ptr(integration.NotEmpty),
PhoneCode: nil,
OrganizationAdmin: &org.OrganizationAdmin_CreatedAdmin{
CreatedAdmin: &org.CreatedAdmin{
UserId: integration.NotEmpty,
EmailCode: gu.Ptr(integration.NotEmpty),
PhoneCode: nil,
},
},
},
},
},
@@ -153,11 +157,22 @@ func TestServer_CreateOrganization(t *testing.T) {
},
},
},
want: &v2beta_org.CreateOrganizationResponse{
CreatedAdmins: []*v2beta_org.CreatedAdmin{
// a single admin is expected, because the first provided already exists
want: &org.CreateOrganizationResponse{
// OrganizationId: integration.NotEmpty,
OrganizationAdmins: []*org.OrganizationAdmin{
{
UserId: integration.NotEmpty,
OrganizationAdmin: &org.OrganizationAdmin_AssignedAdmin{
AssignedAdmin: &org.AssignedAdmin{
UserId: User.GetUserId(),
},
},
},
{
OrganizationAdmin: &org.OrganizationAdmin_CreatedAdmin{
CreatedAdmin: &org.CreatedAdmin{
UserId: integration.NotEmpty,
},
},
},
},
},
@@ -180,10 +195,14 @@ func TestServer_CreateOrganization(t *testing.T) {
// organization id must be the same as the resourceOwner
// check the admins
require.Len(t, got.GetCreatedAdmins(), len(tt.want.GetCreatedAdmins()))
for i, admin := range tt.want.GetCreatedAdmins() {
gotAdmin := got.GetCreatedAdmins()[i]
assertCreatedAdmin(t, admin, gotAdmin)
for i, admin := range tt.want.GetOrganizationAdmins() {
gotAdmin := got.GetOrganizationAdmins()[i].OrganizationAdmin
switch admin := admin.OrganizationAdmin.(type) {
case *org.OrganizationAdmin_CreatedAdmin:
assertCreatedAdmin(t, admin.CreatedAdmin, gotAdmin.(*org.OrganizationAdmin_CreatedAdmin).CreatedAdmin)
case *org.OrganizationAdmin_AssignedAdmin:
assert.Equal(t, admin.AssignedAdmin.GetUserId(), gotAdmin.(*org.OrganizationAdmin_AssignedAdmin).AssignedAdmin.GetUserId())
}
}
})
}
@@ -681,7 +700,7 @@ func TestServer_DeactivateReactivateNonExistentOrganization(t *testing.T) {
require.Contains(t, err.Error(), "Organisation not found")
}
func TestServer_ActivateOrganization(t *testing.T) {
func TestServer_DeactivateReactivateOrganization(t *testing.T) {
tests := []struct {
name string
ctx context.Context
@@ -723,8 +742,8 @@ func TestServer_ActivateOrganization(t *testing.T) {
},
},
})
require.NoError(ttt, err)
require.Equal(ttt, v2beta_org.OrgState_ORG_STATE_INACTIVE, listOrgRes.Organizations[0].State)
require.NoError(t, err)
require.Equal(t, v2beta_org.OrgState_ORG_STATE_INACTIVE, listOrgRes.Organizations[0].State)
}, retryDuration, tick, "timeout waiting for expected organizations being created")
return orgId
@@ -853,7 +872,7 @@ func TestServer_DeactivateOrganization(t *testing.T) {
now := time.Now()
assert.WithinRange(t, gotCD, now.Add(-time.Minute), now.Add(time.Minute))
// 3. check organization state is deactivated
// 4. check organization state is deactivated
retryDuration, tick := integration.WaitForAndTickWithMaxDuration(CTX, 10*time.Minute)
require.EventuallyWithT(t, func(ttt *assert.CollectT) {
listOrgRes, err := Client.ListOrganizations(CTX, &v2beta_org.ListOrganizationsRequest{
@@ -903,7 +922,7 @@ func TestServer_AddOerganizationDomain(t *testing.T) {
}{
{
name: "add org domain, happy path",
domain: "www.domain.com",
domain: gofakeit.URL(),
testFunc: func() string {
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
@@ -916,7 +935,7 @@ func TestServer_AddOerganizationDomain(t *testing.T) {
},
{
name: "add org domain, twice",
domain: "www.domain.com",
domain: gofakeit.URL(),
testFunc: func() string {
// 1. create organization
orgs, _, err := createOrgs(CTX, Client, 1)
@@ -926,7 +945,7 @@ func TestServer_AddOerganizationDomain(t *testing.T) {
}
orgId := orgs[0].Id
domain := "www.domain.com"
domain := gofakeit.URL()
// 2. add domain
addOrgDomainRes, err := Client.AddOrganizationDomain(CTX, &v2beta_org.AddOrganizationDomainRequest{
OrganizationId: orgId,
@@ -956,16 +975,15 @@ func TestServer_AddOerganizationDomain(t *testing.T) {
return orgId
},
err: errors.New("AlreadyExists"),
},
{
name: "add org domain to non existent org",
domain: "www.domain.com",
domain: gofakeit.URL(),
testFunc: func() string {
return "non-existing-org-id"
},
// BUG:
err: errors.New("Domain already exists"),
// BUG: should return a error
err: nil,
},
}
@@ -1000,7 +1018,7 @@ func TestServer_ListOrganizationDomain(t *testing.T) {
}{
{
name: "list org domain, happy path",
domain: "www.domain.com",
domain: gofakeit.URL(),
testFunc: func() string {
// 1. create organization
orgs, _, err := createOrgs(CTX, Client, 1)
@@ -1010,7 +1028,7 @@ func TestServer_ListOrganizationDomain(t *testing.T) {
}
orgId := orgs[0].Id
domain := "www.domain.com"
domain := gofakeit.URL()
// 2. add domain
addOrgDomainRes, err := Client.AddOrganizationDomain(CTX, &v2beta_org.AddOrganizationDomainRequest{
OrganizationId: orgId,
@@ -1064,7 +1082,7 @@ func TestServer_DeleteOerganizationDomain(t *testing.T) {
}{
{
name: "delete org domain, happy path",
domain: "www.domain.com",
domain: gofakeit.URL(),
testFunc: func() string {
// 1. create organization
orgs, _, err := createOrgs(CTX, Client, 1)
@@ -1074,7 +1092,7 @@ func TestServer_DeleteOerganizationDomain(t *testing.T) {
}
orgId := orgs[0].Id
domain := "www.domain.com"
domain := gofakeit.URL()
// 2. add domain
addOrgDomainRes, err := Client.AddOrganizationDomain(CTX, &v2beta_org.AddOrganizationDomainRequest{
OrganizationId: orgId,
@@ -1107,7 +1125,7 @@ func TestServer_DeleteOerganizationDomain(t *testing.T) {
},
{
name: "delete org domain, twice",
domain: "www.domain.com",
domain: gofakeit.URL(),
testFunc: func() string {
// 1. create organization
orgs, _, err := createOrgs(CTX, Client, 1)
@@ -1117,7 +1135,7 @@ func TestServer_DeleteOerganizationDomain(t *testing.T) {
}
orgId := orgs[0].Id
domain := "www.domain.com"
domain := gofakeit.URL()
// 2. add domain
addOrgDomainRes, err := Client.AddOrganizationDomain(CTX, &v2beta_org.AddOrganizationDomainRequest{
OrganizationId: orgId,
@@ -1157,7 +1175,7 @@ func TestServer_DeleteOerganizationDomain(t *testing.T) {
},
{
name: "delete org domain to non existent org",
domain: "www.domain.com",
domain: gofakeit.URL(),
testFunc: func() string {
return "non-existing-org-id"
},
@@ -1202,7 +1220,7 @@ func TestServer_AddListDeleteOrganizationDomain(t *testing.T) {
orgId := orgs[0].Id
// ctx := Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner)
domain := "www.domain.com"
domain := gofakeit.URL()
// 2. add domain
addOrgDomainRes, err := Client.AddOrganizationDomain(CTX, &v2beta_org.AddOrganizationDomainRequest{
OrganizationId: orgId,
@@ -1252,7 +1270,7 @@ func TestServer_AddListDeleteOrganizationDomain(t *testing.T) {
}
orgId := orgs[0].Id
domain := "www.domain2.com"
domain := gofakeit.URL()
// 2. add domain
addOrgDomainRes, err := Client.AddOrganizationDomain(CTX, &v2beta_org.AddOrganizationDomainRequest{
OrganizationId: orgId,
@@ -1339,7 +1357,7 @@ func TestServer_ValidateOrganizationDomain(t *testing.T) {
require.NoError(t, err)
}
domain := "www.domainnn.com"
domain := gofakeit.URL()
_, err = Client.AddOrganizationDomain(CTX, &v2beta_org.AddOrganizationDomainRequest{
OrganizationId: orgId,
Domain: domain,

View File

@@ -283,3 +283,4 @@ func (s *Server) getClaimedUserIDsOfOrgDomain(ctx context.Context, orgDomain, or
}
return userIDs, nil
}

View File

@@ -13,12 +13,13 @@ import (
"github.com/zitadel/zitadel/internal/domain"
"github.com/zitadel/zitadel/internal/zerrors"
org "github.com/zitadel/zitadel/pkg/grpc/org/v2beta"
v2beta_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
request *v2beta_org.CreateOrganizationRequest
}
tests := []struct {
name string
@@ -29,9 +30,9 @@ func Test_createOrganizationRequestToCommand(t *testing.T) {
{
name: "nil user",
args: args{
request: &org.CreateOrganizationRequest{
request: &v2beta_org.CreateOrganizationRequest{
Name: "name",
Admins: []*org.CreateOrganizationRequest_Admin{
Admins: []*v2beta_org.CreateOrganizationRequest_Admin{
{},
},
},
@@ -41,11 +42,11 @@ func Test_createOrganizationRequestToCommand(t *testing.T) {
{
name: "user ID",
args: args{
request: &org.CreateOrganizationRequest{
request: &v2beta_org.CreateOrganizationRequest{
Name: "name",
Admins: []*org.CreateOrganizationRequest_Admin{
Admins: []*v2beta_org.CreateOrganizationRequest_Admin{
{
UserType: &org.CreateOrganizationRequest_Admin_UserId{
UserType: &v2beta_org.CreateOrganizationRequest_Admin_UserId{
UserId: "userID",
},
Roles: nil,
@@ -66,11 +67,11 @@ func Test_createOrganizationRequestToCommand(t *testing.T) {
{
name: "human user",
args: args{
request: &org.CreateOrganizationRequest{
request: &v2beta_org.CreateOrganizationRequest{
Name: "name",
Admins: []*org.CreateOrganizationRequest_Admin{
Admins: []*v2beta_org.CreateOrganizationRequest_Admin{
{
UserType: &org.CreateOrganizationRequest_Admin_Human{
UserType: &v2beta_org.CreateOrganizationRequest_Admin_Human{
Human: &user.AddHumanUserRequest{
Profile: &user.SetHumanProfile{
GivenName: "firstname",
@@ -123,7 +124,7 @@ func Test_createdOrganizationToPb(t *testing.T) {
tests := []struct {
name string
args args
want *org.CreateOrganizationResponse
want *v2beta_org.CreateOrganizationResponse
wantErr error
}{
{
@@ -135,8 +136,8 @@ func Test_createdOrganizationToPb(t *testing.T) {
EventDate: now,
ResourceOwner: "orgID",
},
CreatedAdmins: []*command.CreatedOrgAdmin{
{
OrgAdmins: []command.OrgAdmin{
&command.CreatedOrgAdmin{
ID: "id",
EmailCode: gu.Ptr("emailCode"),
PhoneCode: gu.Ptr("phoneCode"),
@@ -147,11 +148,15 @@ func Test_createdOrganizationToPb(t *testing.T) {
want: &org.CreateOrganizationResponse{
CreationDate: timestamppb.New(now),
Id: "orgID",
CreatedAdmins: []*org.CreatedAdmin{
OrganizationAdmins: []*org.OrganizationAdmin{
{
UserId: "id",
EmailCode: gu.Ptr("emailCode"),
PhoneCode: gu.Ptr("phoneCode"),
OrganizationAdmin: &org.OrganizationAdmin_CreatedAdmin{
CreatedAdmin: &org.CreatedAdmin{
UserId: "id",
EmailCode: gu.Ptr("emailCode"),
PhoneCode: gu.Ptr("phoneCode"),
},
},
},
},
},

View File

@@ -212,6 +212,7 @@ func (c *orgSetupCommands) createdAdmins() []OrgAdmin {
users := make([]OrgAdmin, 0, len(c.admins))
for _, admin := range c.admins {
if admin.ID != "" && admin.Human == nil {
users = append(users, &AssignedOrgAdmin{ID: admin.ID})
continue
}
if admin.Human != nil {

View File

@@ -959,3 +959,4 @@ message DeleteOrganizationMetadataResponse{
}
];
}