mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-12 03:57:32 +00:00
feat(api): reworking AddOrganization() API call to return all admins (#9900)
This commit is contained in:
@@ -18,7 +18,6 @@ import (
|
||||
"github.com/zitadel/zitadel/internal/integration"
|
||||
"github.com/zitadel/zitadel/pkg/grpc/admin"
|
||||
v2beta_object "github.com/zitadel/zitadel/pkg/grpc/object/v2beta"
|
||||
org "github.com/zitadel/zitadel/pkg/grpc/org/v2beta"
|
||||
v2beta_org "github.com/zitadel/zitadel/pkg/grpc/org/v2beta"
|
||||
"github.com/zitadel/zitadel/pkg/grpc/user/v2"
|
||||
user_v2beta "github.com/zitadel/zitadel/pkg/grpc/user/v2beta"
|
||||
@@ -85,6 +84,29 @@ func TestServer_CreateOrganization(t *testing.T) {
|
||||
},
|
||||
wantErr: true,
|
||||
},
|
||||
{
|
||||
name: "existing user as admin",
|
||||
ctx: CTX,
|
||||
req: &v2beta_org.CreateOrganizationRequest{
|
||||
Name: gofakeit.AppName(),
|
||||
Admins: []*v2beta_org.CreateOrganizationRequest_Admin{
|
||||
{
|
||||
UserType: &v2beta_org.CreateOrganizationRequest_Admin_UserId{UserId: User.GetUserId()},
|
||||
},
|
||||
},
|
||||
},
|
||||
want: &v2beta_org.CreateOrganizationResponse{
|
||||
OrganizationAdmins: []*v2beta_org.OrganizationAdmin{
|
||||
{
|
||||
OrganizationAdmin: &v2beta_org.OrganizationAdmin_AssignedAdmin{
|
||||
AssignedAdmin: &v2beta_org.AssignedAdmin{
|
||||
UserId: User.GetUserId(),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "admin with init",
|
||||
ctx: CTX,
|
||||
@@ -111,11 +133,15 @@ func TestServer_CreateOrganization(t *testing.T) {
|
||||
},
|
||||
want: &v2beta_org.CreateOrganizationResponse{
|
||||
Id: integration.NotEmpty,
|
||||
CreatedAdmins: []*v2beta_org.CreatedAdmin{
|
||||
OrganizationAdmins: []*v2beta_org.OrganizationAdmin{
|
||||
{
|
||||
UserId: integration.NotEmpty,
|
||||
EmailCode: gu.Ptr(integration.NotEmpty),
|
||||
PhoneCode: nil,
|
||||
OrganizationAdmin: &v2beta_org.OrganizationAdmin_CreatedAdmin{
|
||||
CreatedAdmin: &v2beta_org.CreatedAdmin{
|
||||
UserId: integration.NotEmpty,
|
||||
EmailCode: gu.Ptr(integration.NotEmpty),
|
||||
PhoneCode: nil,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -155,10 +181,21 @@ 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
|
||||
// OrganizationId: integration.NotEmpty,
|
||||
OrganizationAdmins: []*v2beta_org.OrganizationAdmin{
|
||||
{
|
||||
UserId: integration.NotEmpty,
|
||||
OrganizationAdmin: &v2beta_org.OrganizationAdmin_AssignedAdmin{
|
||||
AssignedAdmin: &v2beta_org.AssignedAdmin{
|
||||
UserId: User.GetUserId(),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
OrganizationAdmin: &v2beta_org.OrganizationAdmin_CreatedAdmin{
|
||||
CreatedAdmin: &v2beta_org.CreatedAdmin{
|
||||
UserId: integration.NotEmpty,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -192,13 +229,16 @@ func TestServer_CreateOrganization(t *testing.T) {
|
||||
now := time.Now()
|
||||
assert.WithinRange(t, gotCD, now.Add(-time.Minute), now.Add(time.Minute))
|
||||
|
||||
// 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)
|
||||
require.Equal(t, len(tt.want.GetOrganizationAdmins()), len(got.GetOrganizationAdmins()))
|
||||
for i, admin := range tt.want.GetOrganizationAdmins() {
|
||||
gotAdmin := got.GetOrganizationAdmins()[i].OrganizationAdmin
|
||||
switch admin := admin.OrganizationAdmin.(type) {
|
||||
case *v2beta_org.OrganizationAdmin_CreatedAdmin:
|
||||
assertCreatedAdmin(t, admin.CreatedAdmin, gotAdmin.(*v2beta_org.OrganizationAdmin_CreatedAdmin).CreatedAdmin)
|
||||
case *v2beta_org.OrganizationAdmin_AssignedAdmin:
|
||||
assert.Equal(t, admin.AssignedAdmin.GetUserId(), gotAdmin.(*v2beta_org.OrganizationAdmin_AssignedAdmin).AssignedAdmin.GetUserId())
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -472,8 +512,8 @@ func TestServer_ListOrganizations(t *testing.T) {
|
||||
ctx: listOrgIAmOwnerCtx,
|
||||
query: []*v2beta_org.OrganizationSearchFilter{
|
||||
{
|
||||
Filter: &org.OrganizationSearchFilter_DomainFilter{
|
||||
DomainFilter: &org.OrgDomainFilter{
|
||||
Filter: &v2beta_org.OrganizationSearchFilter_DomainFilter{
|
||||
DomainFilter: &v2beta_org.OrgDomainFilter{
|
||||
Domain: func() string {
|
||||
listOrgRes, err := listOrgClient.ListOrganizations(listOrgIAmOwnerCtx, &v2beta_org.ListOrganizationsRequest{
|
||||
Filter: []*v2beta_org.OrganizationSearchFilter{
|
||||
@@ -507,8 +547,8 @@ func TestServer_ListOrganizations(t *testing.T) {
|
||||
ctx: listOrgIAmOwnerCtx,
|
||||
query: []*v2beta_org.OrganizationSearchFilter{
|
||||
{
|
||||
Filter: &org.OrganizationSearchFilter_DomainFilter{
|
||||
DomainFilter: &org.OrgDomainFilter{
|
||||
Filter: &v2beta_org.OrganizationSearchFilter_DomainFilter{
|
||||
DomainFilter: &v2beta_org.OrgDomainFilter{
|
||||
Domain: func() string {
|
||||
domain := strings.ToLower(strings.ReplaceAll(orgsName[1][1:len(orgsName[1])-2], " ", "-"))
|
||||
return domain
|
||||
@@ -530,8 +570,8 @@ func TestServer_ListOrganizations(t *testing.T) {
|
||||
ctx: listOrgIAmOwnerCtx,
|
||||
query: []*v2beta_org.OrganizationSearchFilter{
|
||||
{
|
||||
Filter: &org.OrganizationSearchFilter_DomainFilter{
|
||||
DomainFilter: &org.OrgDomainFilter{
|
||||
Filter: &v2beta_org.OrganizationSearchFilter_DomainFilter{
|
||||
DomainFilter: &v2beta_org.OrgDomainFilter{
|
||||
Domain: func() string {
|
||||
domain := strings.ToUpper(strings.ReplaceAll(orgsName[1][1:len(orgsName[1])-2], " ", "-"))
|
||||
return domain
|
||||
@@ -1374,7 +1414,7 @@ func TestServer_ValidateOrganizationDomain(t *testing.T) {
|
||||
req: &v2beta_org.GenerateOrganizationDomainValidationRequest{
|
||||
OrganizationId: orgId,
|
||||
Domain: domain,
|
||||
Type: org.DomainValidationType_DOMAIN_VALIDATION_TYPE_HTTP,
|
||||
Type: v2beta_org.DomainValidationType_DOMAIN_VALIDATION_TYPE_HTTP,
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -1383,7 +1423,7 @@ func TestServer_ValidateOrganizationDomain(t *testing.T) {
|
||||
req: &v2beta_org.GenerateOrganizationDomainValidationRequest{
|
||||
OrganizationId: "non existent org id",
|
||||
Domain: domain,
|
||||
Type: org.DomainValidationType_DOMAIN_VALIDATION_TYPE_HTTP,
|
||||
Type: v2beta_org.DomainValidationType_DOMAIN_VALIDATION_TYPE_HTTP,
|
||||
},
|
||||
// BUG: this should be 'organization does not exist'
|
||||
err: errors.New("Domain doesn't exist on organization"),
|
||||
@@ -1394,7 +1434,7 @@ func TestServer_ValidateOrganizationDomain(t *testing.T) {
|
||||
req: &v2beta_org.GenerateOrganizationDomainValidationRequest{
|
||||
OrganizationId: orgId,
|
||||
Domain: domain,
|
||||
Type: org.DomainValidationType_DOMAIN_VALIDATION_TYPE_DNS,
|
||||
Type: v2beta_org.DomainValidationType_DOMAIN_VALIDATION_TYPE_DNS,
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -1403,7 +1443,7 @@ func TestServer_ValidateOrganizationDomain(t *testing.T) {
|
||||
req: &v2beta_org.GenerateOrganizationDomainValidationRequest{
|
||||
OrganizationId: "non existent org id",
|
||||
Domain: domain,
|
||||
Type: org.DomainValidationType_DOMAIN_VALIDATION_TYPE_DNS,
|
||||
Type: v2beta_org.DomainValidationType_DOMAIN_VALIDATION_TYPE_DNS,
|
||||
},
|
||||
// BUG: this should be 'organization does not exist'
|
||||
err: errors.New("Domain doesn't exist on organization"),
|
||||
@@ -1414,7 +1454,7 @@ func TestServer_ValidateOrganizationDomain(t *testing.T) {
|
||||
req: &v2beta_org.GenerateOrganizationDomainValidationRequest{
|
||||
OrganizationId: orgId,
|
||||
Domain: "non existent domain",
|
||||
Type: org.DomainValidationType_DOMAIN_VALIDATION_TYPE_HTTP,
|
||||
Type: v2beta_org.DomainValidationType_DOMAIN_VALIDATION_TYPE_HTTP,
|
||||
},
|
||||
err: errors.New("Domain doesn't exist on organization"),
|
||||
},
|
||||
|
Reference in New Issue
Block a user