mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-14 05:59:41 +00:00
fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! refactor(api): moving organization API resourced based
This commit is contained in:
@@ -75,7 +75,7 @@ func createdOrganizationToPb(createdOrg *command.CreatedOrg) (_ *org.CreateOrgan
|
|||||||
}
|
}
|
||||||
return &org.CreateOrganizationResponse{
|
return &org.CreateOrganizationResponse{
|
||||||
Details: v2beta_object.DomainToDetailsPb(createdOrg.ObjectDetails),
|
Details: v2beta_object.DomainToDetailsPb(createdOrg.ObjectDetails),
|
||||||
OrganizationId: createdOrg.ObjectDetails.ResourceOwner,
|
Id: createdOrg.ObjectDetails.ResourceOwner,
|
||||||
CreatedAdmins: admins,
|
CreatedAdmins: admins,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
@@ -202,7 +202,7 @@ func DomainQueryToModel(searchQuery *v2beta_org.DomainSearchQuery) (query.Search
|
|||||||
func RemoveOrgDomainRequestToDomain(ctx context.Context, req *v2beta_org.DeleteOrganizationDomainRequest) *domain.OrgDomain {
|
func RemoveOrgDomainRequestToDomain(ctx context.Context, req *v2beta_org.DeleteOrganizationDomainRequest) *domain.OrgDomain {
|
||||||
return &domain.OrgDomain{
|
return &domain.OrgDomain{
|
||||||
ObjectRoot: models.ObjectRoot{
|
ObjectRoot: models.ObjectRoot{
|
||||||
AggregateID: req.OrganizationId,
|
AggregateID: req.Id,
|
||||||
},
|
},
|
||||||
Domain: req.Domain,
|
Domain: req.Domain,
|
||||||
}
|
}
|
||||||
@@ -211,7 +211,7 @@ func RemoveOrgDomainRequestToDomain(ctx context.Context, req *v2beta_org.DeleteO
|
|||||||
func GenerateOrgDomainValidationRequestToDomain(ctx context.Context, req *v2beta_org.GenerateOrganizationDomainValidationRequest) *domain.OrgDomain {
|
func GenerateOrgDomainValidationRequestToDomain(ctx context.Context, req *v2beta_org.GenerateOrganizationDomainValidationRequest) *domain.OrgDomain {
|
||||||
return &domain.OrgDomain{
|
return &domain.OrgDomain{
|
||||||
ObjectRoot: models.ObjectRoot{
|
ObjectRoot: models.ObjectRoot{
|
||||||
AggregateID: req.OrganizationId,
|
AggregateID: req.Id,
|
||||||
},
|
},
|
||||||
Domain: req.Domain,
|
Domain: req.Domain,
|
||||||
ValidationType: v2beta_object.DomainValidationTypeToDomain(req.Type),
|
ValidationType: v2beta_object.DomainValidationTypeToDomain(req.Type),
|
||||||
@@ -221,7 +221,7 @@ func GenerateOrgDomainValidationRequestToDomain(ctx context.Context, req *v2beta
|
|||||||
func ValidateOrgDomainRequestToDomain(ctx context.Context, req *v2beta_org.VerifyOrganizationDomainRequest) *domain.OrgDomain {
|
func ValidateOrgDomainRequestToDomain(ctx context.Context, req *v2beta_org.VerifyOrganizationDomainRequest) *domain.OrgDomain {
|
||||||
return &domain.OrgDomain{
|
return &domain.OrgDomain{
|
||||||
ObjectRoot: models.ObjectRoot{
|
ObjectRoot: models.ObjectRoot{
|
||||||
AggregateID: req.OrganizationId,
|
AggregateID: req.Id,
|
||||||
},
|
},
|
||||||
Domain: req.Domain,
|
Domain: req.Domain,
|
||||||
}
|
}
|
||||||
|
@@ -112,7 +112,7 @@ func TestServer_CreateOrganization(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
want: &v2beta_org.CreateOrganizationResponse{
|
want: &v2beta_org.CreateOrganizationResponse{
|
||||||
OrganizationId: integration.NotEmpty,
|
Id: integration.NotEmpty,
|
||||||
CreatedAdmins: []*v2beta_org.CreateOrganizationResponse_CreatedAdmin{
|
CreatedAdmins: []*v2beta_org.CreateOrganizationResponse_CreatedAdmin{
|
||||||
{
|
{
|
||||||
UserId: integration.NotEmpty,
|
UserId: integration.NotEmpty,
|
||||||
@@ -183,7 +183,7 @@ func TestServer_CreateOrganization(t *testing.T) {
|
|||||||
assert.NotEmpty(t, got.GetDetails().GetResourceOwner())
|
assert.NotEmpty(t, got.GetDetails().GetResourceOwner())
|
||||||
|
|
||||||
// organization id must be the same as the resourceOwner
|
// organization id must be the same as the resourceOwner
|
||||||
assert.Equal(t, got.GetDetails().GetResourceOwner(), got.GetOrganizationId())
|
assert.Equal(t, got.GetDetails().GetResourceOwner(), got.GetId())
|
||||||
|
|
||||||
// check the admins
|
// check the admins
|
||||||
require.Len(t, got.GetCreatedAdmins(), len(tt.want.GetCreatedAdmins()))
|
require.Len(t, got.GetCreatedAdmins(), len(tt.want.GetCreatedAdmins()))
|
||||||
@@ -200,7 +200,7 @@ func TestServer_UpdateOrganization(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
assert.Fail(t, "unable to create org")
|
assert.Fail(t, "unable to create org")
|
||||||
}
|
}
|
||||||
orgId := orgs[0].OrganizationId
|
orgId := orgs[0].Id
|
||||||
orgName := orgsName[0]
|
orgName := orgsName[0]
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
@@ -226,6 +226,15 @@ func TestServer_UpdateOrganization(t *testing.T) {
|
|||||||
Name: orgName,
|
Name: orgName,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "update org with non existanet org id",
|
||||||
|
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner),
|
||||||
|
req: &v2beta_org.UpdateOrganizationRequest{
|
||||||
|
Id: "non existant org id",
|
||||||
|
// Name: "",
|
||||||
|
},
|
||||||
|
wantErr: true,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "update org with no id",
|
name: "update org with no id",
|
||||||
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner),
|
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner),
|
||||||
@@ -260,7 +269,7 @@ func TestServer_GetOrganizationByID(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
assert.Fail(t, "unable to create org")
|
assert.Fail(t, "unable to create org")
|
||||||
}
|
}
|
||||||
orgId := orgs[0].OrganizationId
|
orgId := orgs[0].Id
|
||||||
orgName := orgsName[0]
|
orgName := orgsName[0]
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
@@ -322,15 +331,15 @@ func TestServer_ListOrganization(t *testing.T) {
|
|||||||
req: &v2beta_org.ListOrganizationsRequest{},
|
req: &v2beta_org.ListOrganizationsRequest{},
|
||||||
want: []*v2beta_org.Organization{
|
want: []*v2beta_org.Organization{
|
||||||
{
|
{
|
||||||
Id: orgs[0].OrganizationId,
|
Id: orgs[0].Id,
|
||||||
Name: orgsName[0],
|
Name: orgsName[0],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Id: orgs[1].OrganizationId,
|
Id: orgs[1].Id,
|
||||||
Name: orgsName[1],
|
Name: orgsName[1],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Id: orgs[2].OrganizationId,
|
Id: orgs[2].Id,
|
||||||
Name: orgsName[2],
|
Name: orgsName[2],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -388,7 +397,7 @@ func TestServer_DeleteOrganization(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
assert.Fail(t, "unable to create org")
|
assert.Fail(t, "unable to create org")
|
||||||
}
|
}
|
||||||
return orgs[0].OrganizationId
|
return orgs[0].Id
|
||||||
},
|
},
|
||||||
req: &v2beta_org.DeleteOrganizationRequest{},
|
req: &v2beta_org.DeleteOrganizationRequest{},
|
||||||
},
|
},
|
||||||
@@ -451,7 +460,7 @@ func TestServer_DeactivateReactivateOrganization(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
assert.Fail(t, "unable to create orgs")
|
assert.Fail(t, "unable to create orgs")
|
||||||
}
|
}
|
||||||
orgId := orgs[0].OrganizationId
|
orgId := orgs[0].Id
|
||||||
ctx := Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner)
|
ctx := Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner)
|
||||||
|
|
||||||
// 2. check inital state of organization
|
// 2. check inital state of organization
|
||||||
@@ -561,13 +570,13 @@ func TestServer_AddOListDeleterganizationDomain(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
assert.Fail(t, "unable to create org")
|
assert.Fail(t, "unable to create org")
|
||||||
}
|
}
|
||||||
orgId := orgs[0].OrganizationId
|
orgId := orgs[0].Id
|
||||||
ctx := Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner)
|
ctx := Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner)
|
||||||
|
|
||||||
domain := "www.domain.com"
|
domain := "www.domain.com"
|
||||||
// 2. add domain
|
// 2. add domain
|
||||||
addOrgDomainRes, err := Client.AddOrganizationDomain(ctx, &v2beta_org.AddOrganizationDomainRequest{
|
addOrgDomainRes, err := Client.AddOrganizationDomain(ctx, &v2beta_org.AddOrganizationDomainRequest{
|
||||||
OrganizationId: orgId,
|
Id: orgId,
|
||||||
Domain: domain,
|
Domain: domain,
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -580,7 +589,7 @@ func TestServer_AddOListDeleterganizationDomain(t *testing.T) {
|
|||||||
|
|
||||||
// 2. check domain is added
|
// 2. check domain is added
|
||||||
queryRes, err := Client.ListOrganizationDomains(CTX, &v2beta_org.ListOrganizationDomainsRequest{
|
queryRes, err := Client.ListOrganizationDomains(CTX, &v2beta_org.ListOrganizationDomainsRequest{
|
||||||
OrganizationId: orgId,
|
Id: orgId,
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
found := false
|
found := false
|
||||||
@@ -593,7 +602,7 @@ func TestServer_AddOListDeleterganizationDomain(t *testing.T) {
|
|||||||
|
|
||||||
// 3. readd domain
|
// 3. readd domain
|
||||||
_, err = Client.AddOrganizationDomain(ctx, &v2beta_org.AddOrganizationDomainRequest{
|
_, err = Client.AddOrganizationDomain(ctx, &v2beta_org.AddOrganizationDomainRequest{
|
||||||
OrganizationId: orgId,
|
Id: orgId,
|
||||||
Domain: domain,
|
Domain: domain,
|
||||||
})
|
})
|
||||||
// TODO remove error for adding already existing domain
|
// TODO remove error for adding already existing domain
|
||||||
@@ -608,7 +617,7 @@ func TestServer_AddOListDeleterganizationDomain(t *testing.T) {
|
|||||||
|
|
||||||
// 4. check domain is added
|
// 4. check domain is added
|
||||||
queryRes, err = Client.ListOrganizationDomains(CTX, &v2beta_org.ListOrganizationDomainsRequest{
|
queryRes, err = Client.ListOrganizationDomains(CTX, &v2beta_org.ListOrganizationDomainsRequest{
|
||||||
OrganizationId: orgId,
|
Id: orgId,
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
found = false
|
found = false
|
||||||
@@ -621,7 +630,7 @@ func TestServer_AddOListDeleterganizationDomain(t *testing.T) {
|
|||||||
|
|
||||||
// 5. delete organisation domain
|
// 5. delete organisation domain
|
||||||
deleteOrgDomainRes, err := Client.DeleteOrganizationDomain(ctx, &v2beta_org.DeleteOrganizationDomainRequest{
|
deleteOrgDomainRes, err := Client.DeleteOrganizationDomain(ctx, &v2beta_org.DeleteOrganizationDomainRequest{
|
||||||
OrganizationId: orgId,
|
Id: orgId,
|
||||||
Domain: domain,
|
Domain: domain,
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -634,7 +643,7 @@ func TestServer_AddOListDeleterganizationDomain(t *testing.T) {
|
|||||||
|
|
||||||
// 6. check organization domain deleted
|
// 6. check organization domain deleted
|
||||||
queryRes, err = Client.ListOrganizationDomains(CTX, &v2beta_org.ListOrganizationDomainsRequest{
|
queryRes, err = Client.ListOrganizationDomains(CTX, &v2beta_org.ListOrganizationDomainsRequest{
|
||||||
OrganizationId: orgId,
|
Id: orgId,
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
found = false
|
found = false
|
||||||
@@ -647,7 +656,7 @@ func TestServer_AddOListDeleterganizationDomain(t *testing.T) {
|
|||||||
|
|
||||||
// 7. redelete organisation domain
|
// 7. redelete organisation domain
|
||||||
_, err = Client.DeleteOrganizationDomain(ctx, &v2beta_org.DeleteOrganizationDomainRequest{
|
_, err = Client.DeleteOrganizationDomain(ctx, &v2beta_org.DeleteOrganizationDomainRequest{
|
||||||
OrganizationId: orgId,
|
Id: orgId,
|
||||||
Domain: domain,
|
Domain: domain,
|
||||||
})
|
})
|
||||||
// TODO remove error for deleting org domain already deleted
|
// TODO remove error for deleting org domain already deleted
|
||||||
@@ -662,7 +671,7 @@ func TestServer_AddOListDeleterganizationDomain(t *testing.T) {
|
|||||||
|
|
||||||
// 8. check organization domain deleted
|
// 8. check organization domain deleted
|
||||||
queryRes, err = Client.ListOrganizationDomains(CTX, &v2beta_org.ListOrganizationDomainsRequest{
|
queryRes, err = Client.ListOrganizationDomains(CTX, &v2beta_org.ListOrganizationDomainsRequest{
|
||||||
OrganizationId: orgId,
|
Id: orgId,
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
found = false
|
found = false
|
||||||
@@ -679,7 +688,7 @@ func TestServer_ValidateOrganizationDomain(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
assert.Fail(t, "unable to create org")
|
assert.Fail(t, "unable to create org")
|
||||||
}
|
}
|
||||||
orgId := orgs[0].OrganizationId
|
orgId := orgs[0].Id
|
||||||
|
|
||||||
_, err = AdminClient.UpdateDomainPolicy(CTX, &admin.UpdateDomainPolicyRequest{
|
_, err = AdminClient.UpdateDomainPolicy(CTX, &admin.UpdateDomainPolicyRequest{
|
||||||
ValidateOrgDomains: true,
|
ValidateOrgDomains: true,
|
||||||
@@ -688,7 +697,7 @@ func TestServer_ValidateOrganizationDomain(t *testing.T) {
|
|||||||
|
|
||||||
domain := "www.domainnn.com"
|
domain := "www.domainnn.com"
|
||||||
_, err = Client.AddOrganizationDomain(CTX, &v2beta_org.AddOrganizationDomainRequest{
|
_, err = Client.AddOrganizationDomain(CTX, &v2beta_org.AddOrganizationDomainRequest{
|
||||||
OrganizationId: orgId,
|
Id: orgId,
|
||||||
Domain: domain,
|
Domain: domain,
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -703,7 +712,7 @@ func TestServer_ValidateOrganizationDomain(t *testing.T) {
|
|||||||
name: "validate org http happy path",
|
name: "validate org http happy path",
|
||||||
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner),
|
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner),
|
||||||
req: &v2beta_org.GenerateOrganizationDomainValidationRequest{
|
req: &v2beta_org.GenerateOrganizationDomainValidationRequest{
|
||||||
OrganizationId: orgId,
|
Id: orgId,
|
||||||
Domain: domain,
|
Domain: domain,
|
||||||
Type: org.DomainValidationType_DOMAIN_VALIDATION_TYPE_HTTP,
|
Type: org.DomainValidationType_DOMAIN_VALIDATION_TYPE_HTTP,
|
||||||
},
|
},
|
||||||
@@ -712,7 +721,7 @@ func TestServer_ValidateOrganizationDomain(t *testing.T) {
|
|||||||
name: "validate org http non existnetn org id",
|
name: "validate org http non existnetn org id",
|
||||||
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner),
|
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner),
|
||||||
req: &v2beta_org.GenerateOrganizationDomainValidationRequest{
|
req: &v2beta_org.GenerateOrganizationDomainValidationRequest{
|
||||||
OrganizationId: "non existent org id",
|
Id: "non existent org id",
|
||||||
Domain: domain,
|
Domain: domain,
|
||||||
Type: org.DomainValidationType_DOMAIN_VALIDATION_TYPE_HTTP,
|
Type: org.DomainValidationType_DOMAIN_VALIDATION_TYPE_HTTP,
|
||||||
},
|
},
|
||||||
@@ -720,10 +729,32 @@ func TestServer_ValidateOrganizationDomain(t *testing.T) {
|
|||||||
err: errors.New("Domain doesn't exist on organization"),
|
err: errors.New("Domain doesn't exist on organization"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "validate org http non existnetn domain",
|
name: "validate org dns happy path",
|
||||||
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner),
|
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner),
|
||||||
req: &v2beta_org.GenerateOrganizationDomainValidationRequest{
|
req: &v2beta_org.GenerateOrganizationDomainValidationRequest{
|
||||||
OrganizationId: orgId,
|
Id: orgId,
|
||||||
|
Domain: domain,
|
||||||
|
Type: org.DomainValidationType_DOMAIN_VALIDATION_TYPE_DNS,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
// TODO: "validate org dns non existnetn org id" has an consistent error message, need to investigate this
|
||||||
|
{
|
||||||
|
name: "validate org dns non existnetn org id",
|
||||||
|
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner),
|
||||||
|
req: &v2beta_org.GenerateOrganizationDomainValidationRequest{
|
||||||
|
Id: "non existent org id",
|
||||||
|
Domain: domain,
|
||||||
|
Type: org.DomainValidationType_DOMAIN_VALIDATION_TYPE_DNS,
|
||||||
|
},
|
||||||
|
// BUG: this should be 'organization does not exist'
|
||||||
|
err: errors.New("Domain doesn't exist on organization"),
|
||||||
|
},
|
||||||
|
// TODO: "validate org non existnetn domain" has an consistent error message, need to investigate this
|
||||||
|
{
|
||||||
|
name: "validate org non existnetn domain",
|
||||||
|
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner),
|
||||||
|
req: &v2beta_org.GenerateOrganizationDomainValidationRequest{
|
||||||
|
Id: orgId,
|
||||||
Domain: "non existent domain",
|
Domain: "non existent domain",
|
||||||
Type: org.DomainValidationType_DOMAIN_VALIDATION_TYPE_HTTP,
|
Type: org.DomainValidationType_DOMAIN_VALIDATION_TYPE_HTTP,
|
||||||
},
|
},
|
||||||
@@ -750,7 +781,7 @@ func TestServer_SetOrganizationMetadata(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
assert.Fail(t, "unable to create org")
|
assert.Fail(t, "unable to create org")
|
||||||
}
|
}
|
||||||
orgId := orgs[0].OrganizationId
|
orgId := orgs[0].Id
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
@@ -869,7 +900,7 @@ func TestServer_ListOrganizationMetadata(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
assert.Fail(t, "unable to create org")
|
assert.Fail(t, "unable to create org")
|
||||||
}
|
}
|
||||||
orgId := orgs[0].OrganizationId
|
orgId := orgs[0].Id
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
@@ -988,14 +1019,18 @@ func TestServer_DeleteOrganizationMetadata(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
assert.Fail(t, "unable to create org")
|
assert.Fail(t, "unable to create org")
|
||||||
}
|
}
|
||||||
orgId := orgs[0].OrganizationId
|
orgId := orgs[0].Id
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
setupFunc func()
|
setupFunc func()
|
||||||
orgId string
|
orgId string
|
||||||
keyValuPars []struct {
|
metadataToDelete []struct {
|
||||||
|
key string
|
||||||
|
value string
|
||||||
|
}
|
||||||
|
metadataToRemain []struct {
|
||||||
key string
|
key string
|
||||||
value string
|
value string
|
||||||
}
|
}
|
||||||
@@ -1017,13 +1052,132 @@ func TestServer_DeleteOrganizationMetadata(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
},
|
},
|
||||||
orgId: orgId,
|
orgId: orgId,
|
||||||
keyValuPars: []struct{ key, value string }{
|
metadataToDelete: []struct{ key, value string }{
|
||||||
{
|
{
|
||||||
key: "key1",
|
key: "key1",
|
||||||
value: "value1",
|
value: "value1",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "delete multiple org metadata happy path",
|
||||||
|
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner),
|
||||||
|
setupFunc: func() {
|
||||||
|
_, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{
|
||||||
|
Id: orgId,
|
||||||
|
Metadata: []*v2beta_org.Metadata{
|
||||||
|
{
|
||||||
|
Key: "key2",
|
||||||
|
Value: []byte("value2"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Key: "key3",
|
||||||
|
Value: []byte("value3"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
},
|
||||||
|
orgId: orgId,
|
||||||
|
metadataToDelete: []struct{ key, value string }{
|
||||||
|
{
|
||||||
|
key: "key2",
|
||||||
|
value: "value2",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "key3",
|
||||||
|
value: "value3",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "delete some org metadata but not all",
|
||||||
|
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner),
|
||||||
|
setupFunc: func() {
|
||||||
|
_, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{
|
||||||
|
Id: orgId,
|
||||||
|
Metadata: []*v2beta_org.Metadata{
|
||||||
|
{
|
||||||
|
Key: "key4",
|
||||||
|
Value: []byte("value4"),
|
||||||
|
},
|
||||||
|
// key5 will not be deleted
|
||||||
|
{
|
||||||
|
Key: "key5",
|
||||||
|
Value: []byte("value5"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Key: "key6",
|
||||||
|
Value: []byte("value6"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
},
|
||||||
|
orgId: orgId,
|
||||||
|
metadataToDelete: []struct{ key, value string }{
|
||||||
|
{
|
||||||
|
key: "key4",
|
||||||
|
value: "value4",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "key6",
|
||||||
|
value: "value6",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
metadataToRemain: []struct{ key, value string }{
|
||||||
|
{
|
||||||
|
key: "key5",
|
||||||
|
value: "value5",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "delete org metadata that does not exist",
|
||||||
|
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner),
|
||||||
|
setupFunc: func() {
|
||||||
|
_, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{
|
||||||
|
Id: orgId,
|
||||||
|
Metadata: []*v2beta_org.Metadata{
|
||||||
|
{
|
||||||
|
Key: "key88",
|
||||||
|
Value: []byte("value74"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Key: "key5888",
|
||||||
|
Value: []byte("value8885"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
},
|
||||||
|
orgId: orgId,
|
||||||
|
// TODO: this error message needs to be either removed or changed
|
||||||
|
err: errors.New("Metadata list is empty"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "delete org metadata for org that does not exist",
|
||||||
|
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner),
|
||||||
|
setupFunc: func() {
|
||||||
|
_, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{
|
||||||
|
Id: orgId,
|
||||||
|
Metadata: []*v2beta_org.Metadata{
|
||||||
|
{
|
||||||
|
Key: "key88",
|
||||||
|
Value: []byte("value74"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Key: "key5888",
|
||||||
|
Value: []byte("value8885"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
},
|
||||||
|
orgId: "non existant org id",
|
||||||
|
// TODO: this error message needs to be either removed or changed
|
||||||
|
err: errors.New("Metadata list is empty"),
|
||||||
|
},
|
||||||
}
|
}
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
@@ -1037,7 +1191,7 @@ func TestServer_DeleteOrganizationMetadata(t *testing.T) {
|
|||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
foundMetadataCount := 0
|
foundMetadataCount := 0
|
||||||
for _, kv := range tt.keyValuPars {
|
for _, kv := range tt.metadataToDelete {
|
||||||
for _, res := range listOrgMetadataRes.Result {
|
for _, res := range listOrgMetadataRes.Result {
|
||||||
if res.Key == kv.key &&
|
if res.Key == kv.key &&
|
||||||
string(res.Value) == kv.value {
|
string(res.Value) == kv.value {
|
||||||
@@ -1045,11 +1199,17 @@ func TestServer_DeleteOrganizationMetadata(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
require.Equal(t, len(tt.keyValuPars), foundMetadataCount)
|
require.Equal(t, len(tt.metadataToDelete), foundMetadataCount)
|
||||||
|
|
||||||
|
keys := make([]string, len(tt.metadataToDelete))
|
||||||
|
for i, kvp := range tt.metadataToDelete {
|
||||||
|
keys[i] = kvp.key
|
||||||
|
}
|
||||||
|
|
||||||
// run delete
|
// run delete
|
||||||
_, err = Client.DeleteOrganizationMetadata(tt.ctx, &v2beta_org.DeleteOrganizationMetadataRequest{
|
_, err = Client.DeleteOrganizationMetadata(tt.ctx, &v2beta_org.DeleteOrganizationMetadataRequest{
|
||||||
Id: tt.orgId,
|
Id: tt.orgId,
|
||||||
|
Keys: keys,
|
||||||
})
|
})
|
||||||
if tt.err != nil {
|
if tt.err != nil {
|
||||||
require.Contains(t, err.Error(), tt.err.Error())
|
require.Contains(t, err.Error(), tt.err.Error())
|
||||||
@@ -1063,7 +1223,7 @@ func TestServer_DeleteOrganizationMetadata(t *testing.T) {
|
|||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
foundMetadataCount = 0
|
foundMetadataCount = 0
|
||||||
for _, kv := range tt.keyValuPars {
|
for _, kv := range tt.metadataToDelete {
|
||||||
for _, res := range listOrgMetadataRes.Result {
|
for _, res := range listOrgMetadataRes.Result {
|
||||||
if res.Key == kv.key &&
|
if res.Key == kv.key &&
|
||||||
string(res.Value) == kv.value {
|
string(res.Value) == kv.value {
|
||||||
@@ -1071,6 +1231,23 @@ func TestServer_DeleteOrganizationMetadata(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
require.Equal(t, foundMetadataCount, 0)
|
||||||
|
|
||||||
|
// check metadata that should not be delted was not deleted
|
||||||
|
listOrgMetadataRes, err = Client.ListOrganizationMetadata(tt.ctx, &v2beta_org.ListOrganizationMetadataRequest{
|
||||||
|
Id: tt.orgId,
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
foundMetadataCount = 0
|
||||||
|
for _, kv := range tt.metadataToRemain {
|
||||||
|
for _, res := range listOrgMetadataRes.Result {
|
||||||
|
if res.Key == kv.key &&
|
||||||
|
string(res.Value) == kv.value {
|
||||||
|
foundMetadataCount += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
require.Equal(t, len(tt.metadataToRemain), foundMetadataCount)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -127,11 +127,11 @@ func (s *Server) ReactivateOrganization(ctx context.Context, request *org.Reacti
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) AddOrganizationDomain(ctx context.Context, request *org.AddOrganizationDomainRequest) (*org.AddOrganizationDomainResponse, error) {
|
func (s *Server) AddOrganizationDomain(ctx context.Context, request *org.AddOrganizationDomainRequest) (*org.AddOrganizationDomainResponse, error) {
|
||||||
userIDs, err := s.getClaimedUserIDsOfOrgDomain(ctx, request.Domain, request.OrganizationId)
|
userIDs, err := s.getClaimedUserIDsOfOrgDomain(ctx, request.Domain, request.Id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
details, err := s.command.AddOrgDomain(ctx, request.OrganizationId, request.Domain, userIDs)
|
details, err := s.command.AddOrgDomain(ctx, request.Id, request.Domain, userIDs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -145,7 +145,7 @@ func (s *Server) ListOrganizationDomains(ctx context.Context, req *org.ListOrgan
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
orgIDQuery, err := query.NewOrgDomainOrgIDSearchQuery(req.OrganizationId)
|
orgIDQuery, err := query.NewOrgDomainOrgIDSearchQuery(req.Id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -183,7 +183,7 @@ func (s *Server) GenerateOrganizationDomainValidation(ctx context.Context, req *
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) VerifyOrganizationDomain(ctx context.Context, request *org.VerifyOrganizationDomainRequest) (*org.VerifyOrganizationDomainResponse, error) {
|
func (s *Server) VerifyOrganizationDomain(ctx context.Context, request *org.VerifyOrganizationDomainRequest) (*org.VerifyOrganizationDomainResponse, error) {
|
||||||
userIDs, err := s.getClaimedUserIDsOfOrgDomain(ctx, request.Domain, request.OrganizationId)
|
userIDs, err := s.getClaimedUserIDsOfOrgDomain(ctx, request.Domain, request.Id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@@ -151,7 +151,7 @@ func Test_createdOrganizationToPb(t *testing.T) {
|
|||||||
ChangeDate: timestamppb.New(now),
|
ChangeDate: timestamppb.New(now),
|
||||||
ResourceOwner: "orgID",
|
ResourceOwner: "orgID",
|
||||||
},
|
},
|
||||||
OrganizationId: "orgID",
|
Id: "orgID",
|
||||||
CreatedAdmins: []*org.CreateOrganizationResponse_CreatedAdmin{
|
CreatedAdmins: []*org.CreateOrganizationResponse_CreatedAdmin{
|
||||||
{
|
{
|
||||||
UserId: "id",
|
UserId: "id",
|
||||||
|
@@ -598,7 +598,16 @@ message CreateOrganizationResponse{
|
|||||||
optional string phone_code = 3;
|
optional string phone_code = 3;
|
||||||
}
|
}
|
||||||
zitadel.object.v2beta.Details details = 1;
|
zitadel.object.v2beta.Details details = 1;
|
||||||
string organization_id = 2;
|
string id = 2 [
|
||||||
|
(validate.rules).string = {min_len: 1, max_len: 200},
|
||||||
|
(google.api.field_behavior) = REQUIRED,
|
||||||
|
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||||
|
min_length: 1;
|
||||||
|
max_length: 200;
|
||||||
|
example: "\"69629012906488334\"";
|
||||||
|
description: "Organization ID of the newly created organization."
|
||||||
|
}
|
||||||
|
];
|
||||||
repeated CreatedAdmin created_admins = 3;
|
repeated CreatedAdmin created_admins = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -722,7 +731,16 @@ message ReactivateOrganizationResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
message AddOrganizationDomainRequest {
|
message AddOrganizationDomainRequest {
|
||||||
string organization_id = 1;
|
string id = 1 [
|
||||||
|
(validate.rules).string = {min_len: 1, max_len: 200},
|
||||||
|
(google.api.field_behavior) = REQUIRED,
|
||||||
|
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||||
|
min_length: 1;
|
||||||
|
max_length: 200;
|
||||||
|
example: "\"69629012906488334\"";
|
||||||
|
description: "Organization ID of the organization you want to add a domain to."
|
||||||
|
}
|
||||||
|
];
|
||||||
string domain = 2 [
|
string domain = 2 [
|
||||||
(validate.rules).string = {min_len: 1, max_len: 200},
|
(validate.rules).string = {min_len: 1, max_len: 200},
|
||||||
(google.api.field_behavior) = REQUIRED,
|
(google.api.field_behavior) = REQUIRED,
|
||||||
@@ -739,7 +757,16 @@ message AddOrganizationDomainResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
message ListOrganizationDomainsRequest {
|
message ListOrganizationDomainsRequest {
|
||||||
string organization_id = 1;
|
string id = 1 [
|
||||||
|
(validate.rules).string = {min_len: 1, max_len: 200},
|
||||||
|
(google.api.field_behavior) = REQUIRED,
|
||||||
|
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||||
|
min_length: 1;
|
||||||
|
max_length: 200;
|
||||||
|
example: "\"69629012906488334\"";
|
||||||
|
description: "Organization ID of the organization you want the domains of."
|
||||||
|
}
|
||||||
|
];
|
||||||
//list limitations and ordering
|
//list limitations and ordering
|
||||||
zitadel.object.v2beta.ListQuery query = 2;
|
zitadel.object.v2beta.ListQuery query = 2;
|
||||||
//criteria the client is looking for
|
//criteria the client is looking for
|
||||||
@@ -752,8 +779,16 @@ message ListOrganizationDomainsResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
message DeleteOrganizationDomainRequest {
|
message DeleteOrganizationDomainRequest {
|
||||||
// TODO maybe change organization_id to just Id
|
string id = 1 [
|
||||||
string organization_id = 1;
|
(validate.rules).string = {min_len: 1, max_len: 200},
|
||||||
|
(google.api.field_behavior) = REQUIRED,
|
||||||
|
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||||
|
min_length: 1;
|
||||||
|
max_length: 200;
|
||||||
|
example: "\"69629012906488334\"";
|
||||||
|
description: "Organization ID of the organization you want to delete."
|
||||||
|
}
|
||||||
|
];
|
||||||
string domain = 2 [
|
string domain = 2 [
|
||||||
(validate.rules).string = {min_len: 1, max_len: 200},
|
(validate.rules).string = {min_len: 1, max_len: 200},
|
||||||
(google.api.field_behavior) = REQUIRED,
|
(google.api.field_behavior) = REQUIRED,
|
||||||
@@ -770,7 +805,16 @@ message DeleteOrganizationDomainResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
message GenerateOrganizationDomainValidationRequest {
|
message GenerateOrganizationDomainValidationRequest {
|
||||||
string organization_id = 1;
|
string id = 1 [
|
||||||
|
(validate.rules).string = {min_len: 1, max_len: 200},
|
||||||
|
(google.api.field_behavior) = REQUIRED,
|
||||||
|
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||||
|
min_length: 1;
|
||||||
|
max_length: 200;
|
||||||
|
example: "\"69629012906488334\"";
|
||||||
|
description: "Organization ID of the organization you want to generate a validation request for."
|
||||||
|
}
|
||||||
|
];
|
||||||
string domain = 2 [
|
string domain = 2 [
|
||||||
(validate.rules).string = {min_len: 1, max_len: 200},
|
(validate.rules).string = {min_len: 1, max_len: 200},
|
||||||
(google.api.field_behavior) = REQUIRED,
|
(google.api.field_behavior) = REQUIRED,
|
||||||
@@ -797,7 +841,16 @@ message GenerateOrganizationDomainValidationResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
message VerifyOrganizationDomainRequest {
|
message VerifyOrganizationDomainRequest {
|
||||||
string organization_id = 1;
|
string id = 1 [
|
||||||
|
(validate.rules).string = {min_len: 1, max_len: 200},
|
||||||
|
(google.api.field_behavior) = REQUIRED,
|
||||||
|
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||||
|
min_length: 1;
|
||||||
|
max_length: 200;
|
||||||
|
example: "\"69629012906488334\"";
|
||||||
|
description: "Organization ID of the organization you want to veryify the domain on."
|
||||||
|
}
|
||||||
|
];
|
||||||
string domain = 2 [
|
string domain = 2 [
|
||||||
(validate.rules).string = {min_len: 1, max_len: 200},
|
(validate.rules).string = {min_len: 1, max_len: 200},
|
||||||
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||||
|
Reference in New Issue
Block a user