chore: fix org v2beta integration tests (#10655)

# Which Problems Are Solved

Flakiness in integration tests for organization v2beta service.

# How the Problems Are Solved

Fix eventual consistent handling of integration tests.

# Additional Changes

None

# Additional Context

None

---------

Co-authored-by: Marco A. <marco@zitadel.com>

(cherry picked from commit 75774eb64c)
This commit is contained in:
Stefan Benz
2025-09-08 13:43:16 +02:00
committed by Livio Spring
parent 64bddb328c
commit 268dd1d543

View File

@@ -6,6 +6,7 @@ import (
"context"
"errors"
"os"
"slices"
"strings"
"testing"
"time"
@@ -38,7 +39,7 @@ func TestMain(m *testing.M) {
Instance = integration.NewInstance(ctx)
Client = Instance.Client.OrgV2beta
CTX = Instance.WithAuthorization(ctx, integration.UserTypeIAMOwner)
CTX = Instance.WithAuthorizationToken(ctx, integration.UserTypeIAMOwner)
User = Instance.CreateHumanUser(CTX)
return m.Run()
}())
@@ -60,7 +61,7 @@ func TestServer_CreateOrganization(t *testing.T) {
tests := []test{
{
name: "missing permission",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeOrgOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeOrgOwner),
req: &v2beta_org.CreateOrganizationRequest{
Name: "name",
Admins: nil,
@@ -294,11 +295,7 @@ func TestServer_CreateOrganization(t *testing.T) {
}
func TestServer_UpdateOrganization(t *testing.T) {
orgs, orgsName, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create org")
return
}
orgs, orgsName, _ := createOrgs(CTX, t, Client, 1)
orgId := orgs[0].Id
orgName := orgsName[0]
@@ -311,7 +308,7 @@ func TestServer_UpdateOrganization(t *testing.T) {
}{
{
name: "update org with new name",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
req: &v2beta_org.UpdateOrganizationRequest{
Id: orgId,
Name: "new org name",
@@ -319,7 +316,7 @@ func TestServer_UpdateOrganization(t *testing.T) {
},
{
name: "update org with same name",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
req: &v2beta_org.UpdateOrganizationRequest{
Id: orgId,
Name: orgName,
@@ -327,7 +324,7 @@ func TestServer_UpdateOrganization(t *testing.T) {
},
{
name: "update org with non existent org id",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
req: &v2beta_org.UpdateOrganizationRequest{
Id: "non existant org id",
// Name: "",
@@ -336,7 +333,7 @@ func TestServer_UpdateOrganization(t *testing.T) {
},
{
name: "update org with no id",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
req: &v2beta_org.UpdateOrganizationRequest{
Id: "",
Name: orgName,
@@ -364,18 +361,14 @@ func TestServer_UpdateOrganization(t *testing.T) {
func TestServer_ListOrganizations(t *testing.T) {
testStartTimestamp := time.Now()
ListOrgIinstance := integration.NewInstance(CTX)
listOrgIAmOwnerCtx := ListOrgIinstance.WithAuthorization(CTX, integration.UserTypeIAMOwner)
listOrgIAmOwnerCtx := ListOrgIinstance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner)
listOrgClient := ListOrgIinstance.Client.OrgV2beta
noOfOrgs := 3
orgs, orgsName, err := createOrgs(listOrgIAmOwnerCtx, listOrgClient, noOfOrgs)
if err != nil {
require.NoError(t, err)
return
}
orgs, orgsName, orgsDomain := createOrgs(listOrgIAmOwnerCtx, t, listOrgClient, noOfOrgs)
// deactivat org[1]
_, err = listOrgClient.DeactivateOrganization(listOrgIAmOwnerCtx, &v2beta_org.DeactivateOrganizationRequest{
_, err := listOrgClient.DeactivateOrganization(listOrgIAmOwnerCtx, &v2beta_org.DeactivateOrganizationRequest{
Id: orgs[1].Id,
})
require.NoError(t, err)
@@ -389,7 +382,7 @@ func TestServer_ListOrganizations(t *testing.T) {
}{
{
name: "list organizations, without required permissions",
ctx: ListOrgIinstance.WithAuthorization(CTX, integration.UserTypeNoPermission),
ctx: ListOrgIinstance.WithAuthorizationToken(CTX, integration.UserTypeNoPermission),
err: errors.New("membership not found"),
},
{
@@ -563,22 +556,7 @@ func TestServer_ListOrganizations(t *testing.T) {
{
Filter: &v2beta_org.OrganizationSearchFilter_DomainFilter{
DomainFilter: &v2beta_org.OrgDomainFilter{
Domain: func() string {
listOrgRes, err := listOrgClient.ListOrganizations(listOrgIAmOwnerCtx, &v2beta_org.ListOrganizationsRequest{
Filter: []*v2beta_org.OrganizationSearchFilter{
{
Filter: &v2beta_org.OrganizationSearchFilter_IdFilter{
IdFilter: &v2beta_org.OrgIDFilter{
Id: orgs[1].Id,
},
},
},
},
})
require.NoError(t, err)
domain := listOrgRes.Organizations[0].PrimaryDomain
return domain
}(),
Domain: orgsDomain[1],
Method: v2beta_object.TextQueryMethod_TEXT_QUERY_METHOD_EQUALS,
},
},
@@ -646,7 +624,7 @@ func TestServer_ListOrganizations(t *testing.T) {
Filter: tt.query,
})
if tt.err != nil {
require.ErrorContains(t, err, tt.err.Error())
require.ErrorContains(ttt, err, tt.err.Error())
return
}
require.NoError(ttt, err)
@@ -694,13 +672,9 @@ func TestServer_DeleteOrganization(t *testing.T) {
}{
{
name: "delete org no permission",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeNoPermission),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeNoPermission),
createOrgFunc: func() string {
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create org")
return ""
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
return orgs[0].Id
},
req: &v2beta_org.DeleteOrganizationRequest{},
@@ -708,28 +682,20 @@ func TestServer_DeleteOrganization(t *testing.T) {
},
{
name: "delete org happy path",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
createOrgFunc: func() string {
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create org")
return ""
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
return orgs[0].Id
},
req: &v2beta_org.DeleteOrganizationRequest{},
},
{
name: "delete already deleted org",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
createOrgFunc: func() string {
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create org")
return ""
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
// delete org
_, err = Client.DeleteOrganization(CTX, &v2beta_org.DeleteOrganizationRequest{Id: orgs[0].Id})
_, err := Client.DeleteOrganization(CTX, &v2beta_org.DeleteOrganizationRequest{Id: orgs[0].Id})
require.NoError(t, err)
return orgs[0].Id
@@ -739,7 +705,7 @@ func TestServer_DeleteOrganization(t *testing.T) {
},
{
name: "delete non existent org",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
req: &v2beta_org.DeleteOrganizationRequest{
Id: "non existent org id",
},
@@ -770,7 +736,7 @@ func TestServer_DeleteOrganization(t *testing.T) {
}
func TestServer_DeactivateReactivateNonExistentOrganization(t *testing.T) {
ctx := Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner)
ctx := Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner)
// deactivate non existent organization
_, err := Client.DeactivateOrganization(ctx, &v2beta_org.DeactivateOrganizationRequest{
@@ -797,11 +763,7 @@ func TestServer_ActivateOrganization(t *testing.T) {
ctx: CTX,
testFunc: func() string {
// 1. create organization
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create orgs")
return ""
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
orgId := orgs[0].Id
// 2. deactivate organization once
@@ -828,7 +790,9 @@ func TestServer_ActivateOrganization(t *testing.T) {
},
})
require.NoError(ttt, err)
require.Equal(ttt, v2beta_org.OrgState_ORG_STATE_INACTIVE, listOrgRes.Organizations[0].State)
if assert.GreaterOrEqual(ttt, len(listOrgRes.Organizations), 1) {
require.Equal(ttt, v2beta_org.OrgState_ORG_STATE_INACTIVE, listOrgRes.Organizations[0].State)
}
}, retryDuration, tick, "timeout waiting for expected organizations being created")
return orgId
@@ -836,13 +800,9 @@ func TestServer_ActivateOrganization(t *testing.T) {
},
{
name: "Activate, no permission",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeNoPermission),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeNoPermission),
testFunc: func() string {
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create orgs")
return ""
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
orgId := orgs[0].Id
return orgId
},
@@ -861,11 +821,7 @@ func TestServer_ActivateOrganization(t *testing.T) {
name: "Activate, already activated",
ctx: CTX,
testFunc: func() string {
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create orgs")
return ""
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
orgId := orgs[0].Id
return orgId
},
@@ -903,11 +859,7 @@ func TestServer_DeactivateOrganization(t *testing.T) {
ctx: CTX,
testFunc: func() string {
// 1. create organization
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create orgs")
return ""
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
orgId := orgs[0].Id
return orgId
@@ -915,13 +867,9 @@ func TestServer_DeactivateOrganization(t *testing.T) {
},
{
name: "Deactivate, no permission",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeNoPermission),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeNoPermission),
testFunc: func() string {
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create orgs")
return ""
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
orgId := orgs[0].Id
return orgId
},
@@ -941,11 +889,7 @@ func TestServer_DeactivateOrganization(t *testing.T) {
ctx: CTX,
testFunc: func() string {
// 1. create organization
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create orgs")
return ""
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
orgId := orgs[0].Id
// 2. deactivate organization once
@@ -1009,11 +953,7 @@ func TestServer_AddOrganizationDomain(t *testing.T) {
name: "add org domain, happy path",
domain: gofakeit.URL(),
testFunc: func() string {
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create org")
return ""
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
orgId := orgs[0].Id
return orgId
},
@@ -1023,11 +963,7 @@ func TestServer_AddOrganizationDomain(t *testing.T) {
domain: gofakeit.URL(),
testFunc: func() string {
// 1. create organization
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create org")
return ""
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
orgId := orgs[0].Id
domain := gofakeit.URL()
@@ -1048,14 +984,14 @@ func TestServer_AddOrganizationDomain(t *testing.T) {
queryRes, err := Client.ListOrganizationDomains(CTX, &v2beta_org.ListOrganizationDomainsRequest{
OrganizationId: orgId,
})
require.NoError(t, err)
require.NoError(ttt, err)
found := false
for _, res := range queryRes.Domains {
if res.DomainName == domain {
found = true
}
}
require.True(t, found, "unable to find added domain")
require.True(ttt, found, "unable to find added domain")
}, retryDuration, tick, "timeout waiting for expected organizations being created")
return orgId
@@ -1143,8 +1079,8 @@ func TestServer_AddOrganizationDomain_ClaimDomain(t *testing.T) {
},
},
})
require.NoError(t, err)
require.Len(t, users.GetResult(), 2)
require.NoError(collect, err)
require.Len(collect, users.GetResult(), 2)
for _, u := range users.GetResult() {
if u.GetUserId() == ownUser.GetUserId() {
@@ -1173,11 +1109,7 @@ func TestServer_ListOrganizationDomains(t *testing.T) {
domain: domain,
testFunc: func() string {
// 1. create organization
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create org")
return ""
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
orgId := orgs[0].Id
// 2. add domain
addOrgDomainRes, err := Client.AddOrganizationDomain(CTX, &v2beta_org.AddOrganizationDomainRequest{
@@ -1209,20 +1141,20 @@ func TestServer_ListOrganizationDomains(t *testing.T) {
queryRes, err = Client.ListOrganizationDomains(CTX, &v2beta_org.ListOrganizationDomainsRequest{
OrganizationId: orgId,
})
require.NoError(t, err)
require.NoError(ttt, err)
found := false
for _, res := range queryRes.Domains {
if res.DomainName == tt.domain {
found = true
}
}
require.True(t, found, "unable to find added domain")
require.True(ttt, found, "unable to find added domain")
}, retryDuration, tick, "timeout waiting for adding domain")
}
}
func TestServer_DeleteOerganizationDomain(t *testing.T) {
func TestServer_DeleteOrganizationDomain(t *testing.T) {
domain := gofakeit.URL()
tests := []struct {
name string
@@ -1236,11 +1168,7 @@ func TestServer_DeleteOerganizationDomain(t *testing.T) {
domain: domain,
testFunc: func() string {
// 1. create organization
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create org")
return ""
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
orgId := orgs[0].Id
// 2. add domain
@@ -1260,14 +1188,10 @@ func TestServer_DeleteOerganizationDomain(t *testing.T) {
queryRes, err := Client.ListOrganizationDomains(CTX, &v2beta_org.ListOrganizationDomainsRequest{
OrganizationId: orgId,
})
require.NoError(t, err)
found := false
for _, res := range queryRes.Domains {
if res.DomainName == domain {
found = true
}
}
require.True(t, found, "unable to find added domain")
require.NoError(ttt, err)
found := slices.ContainsFunc(queryRes.Domains, func(d *v2beta_org.Domain) bool { return d.GetDomainName() == domain })
require.True(ttt, found, "unable to find added domain")
}, retryDuration, tick, "timeout waiting for expected organizations being created")
return orgId
@@ -1278,11 +1202,7 @@ func TestServer_DeleteOerganizationDomain(t *testing.T) {
domain: gofakeit.URL(),
testFunc: func() string {
// 1. create organization
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create org")
return ""
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
orgId := orgs[0].Id
domain := gofakeit.URL()
@@ -1303,14 +1223,14 @@ func TestServer_DeleteOerganizationDomain(t *testing.T) {
queryRes, err := Client.ListOrganizationDomains(CTX, &v2beta_org.ListOrganizationDomainsRequest{
OrganizationId: orgId,
})
require.NoError(t, err)
require.NoError(ttt, err)
found := false
for _, res := range queryRes.Domains {
if res.DomainName == domain {
found = true
}
}
require.True(t, found, "unable to find added domain")
require.True(ttt, found, "unable to find added domain")
}, retryDuration, tick, "timeout waiting for expected organizations being created")
_, err = Client.DeleteOrganizationDomain(CTX, &v2beta_org.DeleteOrganizationDomainRequest{
@@ -1362,13 +1282,8 @@ func TestServer_AddListDeleteOrganizationDomain(t *testing.T) {
name: "add org domain, re-add org domain",
testFunc: func() {
// 1. create organization
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create org")
return
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
orgId := orgs[0].Id
// ctx := Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner)
domain := gofakeit.URL()
// 2. add domain
@@ -1413,11 +1328,7 @@ func TestServer_AddListDeleteOrganizationDomain(t *testing.T) {
name: "add org domain, delete org domain, re-delete org domain",
testFunc: func() {
// 1. create organization
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create org")
return
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
orgId := orgs[0].Id
domain := gofakeit.URL()
@@ -1444,19 +1355,19 @@ func TestServer_AddListDeleteOrganizationDomain(t *testing.T) {
assert.WithinRange(t, gotCD, now.Add(-time.Minute), now.Add(time.Minute))
retryDuration, tick := integration.WaitForAndTickWithMaxDuration(CTX, 10*time.Minute)
require.EventuallyWithT(t, func(t *assert.CollectT) {
require.EventuallyWithT(t, func(ttt *assert.CollectT) {
// 3. check organization domain deleted
queryRes, err := Client.ListOrganizationDomains(CTX, &v2beta_org.ListOrganizationDomainsRequest{
OrganizationId: orgId,
})
require.NoError(t, err)
require.NoError(ttt, err)
found := false
for _, res := range queryRes.Domains {
if res.DomainName == domain {
found = true
}
}
require.False(t, found, "deleted domain found")
require.False(ttt, found, "deleted domain found")
}, retryDuration, tick, "timeout waiting for expected organizations being created")
// 4. redelete organisation domain
@@ -1496,14 +1407,10 @@ func TestServer_AddListDeleteOrganizationDomain(t *testing.T) {
}
func TestServer_ValidateOrganizationDomain(t *testing.T) {
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create org")
return
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
orgId := orgs[0].Id
_, err = Instance.Client.Admin.UpdateDomainPolicy(CTX, &admin.UpdateDomainPolicyRequest{
_, err := Instance.Client.Admin.UpdateDomainPolicy(CTX, &admin.UpdateDomainPolicyRequest{
ValidateOrgDomains: true,
})
if err != nil && !strings.Contains(err.Error(), "Organisation is already deactivated") {
@@ -1525,7 +1432,7 @@ func TestServer_ValidateOrganizationDomain(t *testing.T) {
}{
{
name: "validate org http happy path",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
req: &v2beta_org.GenerateOrganizationDomainValidationRequest{
OrganizationId: orgId,
Domain: domain,
@@ -1534,7 +1441,7 @@ func TestServer_ValidateOrganizationDomain(t *testing.T) {
},
{
name: "validate org http non existnetn org id",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
req: &v2beta_org.GenerateOrganizationDomainValidationRequest{
OrganizationId: "non existent org id",
Domain: domain,
@@ -1545,7 +1452,7 @@ func TestServer_ValidateOrganizationDomain(t *testing.T) {
},
{
name: "validate org dns happy path",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
req: &v2beta_org.GenerateOrganizationDomainValidationRequest{
OrganizationId: orgId,
Domain: domain,
@@ -1554,7 +1461,7 @@ func TestServer_ValidateOrganizationDomain(t *testing.T) {
},
{
name: "validate org dns non existnetn org id",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
req: &v2beta_org.GenerateOrganizationDomainValidationRequest{
OrganizationId: "non existent org id",
Domain: domain,
@@ -1565,7 +1472,7 @@ func TestServer_ValidateOrganizationDomain(t *testing.T) {
},
{
name: "validate org non existnetn domain",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
req: &v2beta_org.GenerateOrganizationDomainValidationRequest{
OrganizationId: orgId,
Domain: "non existent domain",
@@ -1590,11 +1497,7 @@ func TestServer_ValidateOrganizationDomain(t *testing.T) {
}
func TestServer_SetOrganizationMetadata(t *testing.T) {
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create org")
return
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
orgId := orgs[0].Id
tests := []struct {
@@ -1608,14 +1511,14 @@ func TestServer_SetOrganizationMetadata(t *testing.T) {
}{
{
name: "set org metadata",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
orgId: orgId,
key: "key1",
value: "value1",
},
{
name: "set org metadata on non existant org",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
orgId: "non existant orgid",
key: "key2",
value: "value2",
@@ -1623,7 +1526,7 @@ func TestServer_SetOrganizationMetadata(t *testing.T) {
},
{
name: "update org metadata",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
setupFunc: func() {
_, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{
OrganizationId: orgId,
@@ -1642,7 +1545,7 @@ func TestServer_SetOrganizationMetadata(t *testing.T) {
},
{
name: "update org metadata with same value",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
setupFunc: func() {
_, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{
OrganizationId: orgId,
@@ -1691,7 +1594,7 @@ func TestServer_SetOrganizationMetadata(t *testing.T) {
listMetadataRes, err := Client.ListOrganizationMetadata(tt.ctx, &v2beta_org.ListOrganizationMetadataRequest{
OrganizationId: orgId,
})
require.NoError(t, err)
require.NoError(ttt, err)
foundMetadata := false
foundMetadataKeyCount := 0
for _, res := range listMetadataRes.Metadata {
@@ -1711,26 +1614,22 @@ func TestServer_SetOrganizationMetadata(t *testing.T) {
}
func TestServer_ListOrganizationMetadata(t *testing.T) {
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create org")
return
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
orgId := orgs[0].Id
tests := []struct {
name string
ctx context.Context
setupFunc func()
orgId string
keyValuPars []struct {
name string
ctx context.Context
setupFunc func()
orgId string
keyValuePairs []struct {
key string
value string
}
}{
{
name: "list org metadata happy path",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
setupFunc: func() {
_, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{
OrganizationId: orgId,
@@ -1744,7 +1643,7 @@ func TestServer_ListOrganizationMetadata(t *testing.T) {
require.NoError(t, err)
},
orgId: orgId,
keyValuPars: []struct{ key, value string }{
keyValuePairs: []struct{ key, value string }{
{
key: "key1",
value: "value1",
@@ -1753,7 +1652,7 @@ func TestServer_ListOrganizationMetadata(t *testing.T) {
},
{
name: "list multiple org metadata happy path",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
setupFunc: func() {
_, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{
OrganizationId: orgId,
@@ -1775,7 +1674,7 @@ func TestServer_ListOrganizationMetadata(t *testing.T) {
require.NoError(t, err)
},
orgId: orgId,
keyValuPars: []struct{ key, value string }{
keyValuePairs: []struct{ key, value string }{
{
key: "key2",
value: "value2",
@@ -1791,10 +1690,10 @@ func TestServer_ListOrganizationMetadata(t *testing.T) {
},
},
{
name: "list org metadata for non existent org",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
orgId: "non existent orgid",
keyValuPars: []struct{ key, value string }{},
name: "list org metadata for non existent org",
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
orgId: "non existent orgid",
keyValuePairs: []struct{ key, value string }{},
},
}
for _, tt := range tests {
@@ -1808,10 +1707,10 @@ func TestServer_ListOrganizationMetadata(t *testing.T) {
got, err := Client.ListOrganizationMetadata(tt.ctx, &v2beta_org.ListOrganizationMetadataRequest{
OrganizationId: tt.orgId,
})
require.NoError(t, err)
require.NoError(ttt, err)
foundMetadataCount := 0
for _, kv := range tt.keyValuPars {
for _, kv := range tt.keyValuePairs {
for _, res := range got.Metadata {
if res.Key == kv.key &&
string(res.Value) == kv.value {
@@ -1819,18 +1718,14 @@ func TestServer_ListOrganizationMetadata(t *testing.T) {
}
}
}
require.Equal(t, len(tt.keyValuPars), foundMetadataCount)
require.Len(ttt, tt.keyValuePairs, foundMetadataCount)
}, retryDuration, tick, "timeout waiting for expected organizations being created")
})
}
}
func TestServer_DeleteOrganizationMetadata(t *testing.T) {
orgs, _, err := createOrgs(CTX, Client, 1)
if err != nil {
assert.Fail(t, "unable to create org")
return
}
orgs, _, _ := createOrgs(CTX, t, Client, 1)
orgId := orgs[0].Id
tests := []struct {
@@ -1850,7 +1745,7 @@ func TestServer_DeleteOrganizationMetadata(t *testing.T) {
}{
{
name: "delete org metadata happy path",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
setupFunc: func() {
_, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{
OrganizationId: orgId,
@@ -1873,7 +1768,7 @@ func TestServer_DeleteOrganizationMetadata(t *testing.T) {
},
{
name: "delete multiple org metadata happy path",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
setupFunc: func() {
_, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{
OrganizationId: orgId,
@@ -1904,7 +1799,7 @@ func TestServer_DeleteOrganizationMetadata(t *testing.T) {
},
{
name: "delete some org metadata but not all",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
setupFunc: func() {
_, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{
OrganizationId: orgId,
@@ -1946,7 +1841,7 @@ func TestServer_DeleteOrganizationMetadata(t *testing.T) {
},
{
name: "delete org metadata that does not exist",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
setupFunc: func() {
_, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{
OrganizationId: orgId,
@@ -1969,7 +1864,7 @@ func TestServer_DeleteOrganizationMetadata(t *testing.T) {
},
{
name: "delete org metadata for org that does not exist",
ctx: Instance.WithAuthorization(CTX, integration.UserTypeIAMOwner),
ctx: Instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner),
setupFunc: func() {
_, err := Client.SetOrganizationMetadata(CTX, &v2beta_org.SetOrganizationMetadataRequest{
OrganizationId: orgId,
@@ -2022,7 +1917,7 @@ func TestServer_DeleteOrganizationMetadata(t *testing.T) {
}
// run delete
_, err = Client.DeleteOrganizationMetadata(tt.ctx, &v2beta_org.DeleteOrganizationMetadataRequest{
_, err := Client.DeleteOrganizationMetadata(tt.ctx, &v2beta_org.DeleteOrganizationMetadataRequest{
OrganizationId: tt.orgId,
Keys: keys,
})
@@ -2070,25 +1965,45 @@ func TestServer_DeleteOrganizationMetadata(t *testing.T) {
}
}
func createOrgs(ctx context.Context, client v2beta_org.OrganizationServiceClient, noOfOrgs int) ([]*v2beta_org.CreateOrganizationResponse, []string, error) {
func createOrgs(ctx context.Context, t *testing.T, client v2beta_org.OrganizationServiceClient, noOfOrgs int) ([]*v2beta_org.CreateOrganizationResponse, []string, []string) {
var err error
orgs := make([]*v2beta_org.CreateOrganizationResponse, noOfOrgs)
orgsName := make([]string, noOfOrgs)
orgNames := make([]string, noOfOrgs)
orgDomains := make([]string, noOfOrgs)
for i := range noOfOrgs {
orgName := gofakeit.Name()
orgsName[i] = orgName
orgName := integration.OrganizationName()
orgNames[i] = orgName
orgs[i], err = client.CreateOrganization(ctx,
&v2beta_org.CreateOrganizationRequest{
Name: orgName,
},
)
if err != nil {
return nil, nil, err
}
require.NoError(t, err)
}
return orgs, orgsName, nil
retryDuration, tick := integration.WaitForAndTickWithMaxDuration(ctx, time.Minute)
for i := range noOfOrgs {
require.EventuallyWithT(t, func(collect *assert.CollectT) {
listOrgRes, err := client.ListOrganizations(ctx, &v2beta_org.ListOrganizationsRequest{
Filter: []*v2beta_org.OrganizationSearchFilter{
{
Filter: &v2beta_org.OrganizationSearchFilter_IdFilter{
IdFilter: &v2beta_org.OrgIDFilter{
Id: orgs[i].Id,
},
},
},
},
})
require.NoError(collect, err)
require.Len(collect, listOrgRes.Organizations, 1)
orgDomains[i] = listOrgRes.Organizations[0].PrimaryDomain
}, retryDuration, tick, "timeout waiting for org creation")
}
return orgs, orgNames, orgDomains
}
func assertCreatedAdmin(t *testing.T, expected, got *v2beta_org.CreatedAdmin) {