fixup! fixup! fixup! fixup! 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:
Iraq Jaber
2025-05-05 10:46:41 +02:00
parent 2105dd232a
commit c7b6a2f4df

View File

@@ -11,11 +11,11 @@ import (
"testing" "testing"
"time" "time"
"github.com/brianvoe/gofakeit/v6"
"github.com/muhlemmer/gu" "github.com/muhlemmer/gu"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
gofakeit "github.com/brianvoe/gofakeit/v6"
"github.com/zitadel/zitadel/internal/integration" "github.com/zitadel/zitadel/internal/integration"
"github.com/zitadel/zitadel/pkg/grpc/admin" "github.com/zitadel/zitadel/pkg/grpc/admin"
@@ -265,53 +265,7 @@ func TestServer_UpdateOrganization(t *testing.T) {
} }
} }
func TestServer_GetOrganizationByID(t *testing.T) { // // TODO: finish off qyery testing in ListOrganizations
orgs, orgsName, err := createOrgs(1)
if err != nil {
assert.Fail(t, "unable to create org")
}
orgId := orgs[0].Id
orgName := orgsName[0]
tests := []struct {
name string
ctx context.Context
req *v2beta_org.GetOrganizationByIDRequest
want *v2beta_org.GetOrganizationByIDResponse
wantErr bool
}{
{
name: "get organization happy path",
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner),
req: &v2beta_org.GetOrganizationByIDRequest{
Id: orgId,
},
},
{
name: "get organization that doesn't exist",
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner),
req: &v2beta_org.GetOrganizationByIDRequest{
Id: "non existing organization",
},
wantErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := Client.GetOrganizationByID(tt.ctx, tt.req)
if tt.wantErr {
require.Error(t, err)
return
}
require.NoError(t, err)
require.Equal(t, orgId, got.Organization.Id)
require.Equal(t, orgName, got.Organization.Name)
})
}
}
// TODO: finish off qyery testing in ListOrganizations
func TestServer_ListOrganization(t *testing.T) { func TestServer_ListOrganization(t *testing.T) {
noOfOrgs := 3 noOfOrgs := 3
orgs, orgsName, err := createOrgs(noOfOrgs) orgs, orgsName, err := createOrgs(noOfOrgs)
@@ -431,10 +385,22 @@ func TestServer_DeleteOrganization(t *testing.T) {
assert.WithinRange(t, gotCD, now.Add(-time.Minute), now.Add(time.Minute)) assert.WithinRange(t, gotCD, now.Add(-time.Minute), now.Add(time.Minute))
assert.NotEmpty(t, got.GetDetails().GetResourceOwner()) assert.NotEmpty(t, got.GetDetails().GetResourceOwner())
_, err = Client.GetOrganizationByID(tt.ctx, &v2beta_org.GetOrganizationByIDRequest{ // _, err = Client.ListOrganizations(tt.ctx, &v2beta_org.GetOrganizationByIDRequest{
Id: tt.req.Id, // Id: tt.req.Id,
// })
listOrgRes, err := Client.ListOrganizations(tt.ctx, &v2beta_org.ListOrganizationsRequest{
Queries: []*v2beta_org.OrgQuery{
{
Query: &v2beta_org.OrgQuery_IdQuery{
IdQuery: &v2beta_org.OrgIDQuery{
Id: tt.req.Id,
},
},
},
},
}) })
require.Contains(t, err.Error(), "Organisation not found") require.NoError(t, err)
require.Nil(t, listOrgRes.Result)
}) })
} }
} }
@@ -465,11 +431,19 @@ func TestServer_DeactivateReactivateOrganization(t *testing.T) {
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
res, err := Client.GetOrganizationByID(ctx, &org.GetOrganizationByIDRequest{ listOrgRes, err := Client.ListOrganizations(ctx, &v2beta_org.ListOrganizationsRequest{
Id: orgId, Queries: []*v2beta_org.OrgQuery{
{
Query: &v2beta_org.OrgQuery_IdQuery{
IdQuery: &v2beta_org.OrgIDQuery{
Id: orgId,
},
},
},
},
}) })
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, v2beta_org.OrgState_ORG_STATE_ACTIVE, res.Organization.State) require.Equal(t, v2beta_org.OrgState_ORG_STATE_ACTIVE, listOrgRes.Result[0].State)
// 3. deactivate organization once // 3. deactivate organization once
deactivate_res, err := Client.DeactivateOrganization(ctx, &v2beta_org.DeactivateOrganizationRequest{ deactivate_res, err := Client.DeactivateOrganization(ctx, &v2beta_org.DeactivateOrganizationRequest{
@@ -483,26 +457,44 @@ func TestServer_DeactivateReactivateOrganization(t *testing.T) {
assert.NotEmpty(t, deactivate_res.GetDetails().GetResourceOwner()) assert.NotEmpty(t, deactivate_res.GetDetails().GetResourceOwner())
// 4. check organization state is deactivated // 4. check organization state is deactivated
res, err = Client.GetOrganizationByID(ctx, &v2beta_org.GetOrganizationByIDRequest{ listOrgRes, err = Client.ListOrganizations(ctx, &v2beta_org.ListOrganizationsRequest{
Id: orgId, Queries: []*v2beta_org.OrgQuery{
{
Query: &v2beta_org.OrgQuery_IdQuery{
IdQuery: &v2beta_org.OrgIDQuery{
Id: orgId,
},
},
},
},
}) })
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, v2beta_org.OrgState_ORG_STATE_INACTIVE, res.Organization.State) require.Equal(t, v2beta_org.OrgState_ORG_STATE_INACTIVE, listOrgRes.Result[0].State)
// 5. repeat deactivate organization once // // 5. repeat deactivate organization once
deactivate_res, err = Client.DeactivateOrganization(ctx, &v2beta_org.DeactivateOrganizationRequest{ // deactivate_res, err = Client.DeactivateOrganization(ctx, &v2beta_org.DeactivateOrganizationRequest{
_, err = Client.DeactivateOrganization(ctx, &v2beta_org.DeactivateOrganizationRequest{
Id: orgId, Id: orgId,
}) })
// TODO this error message needs to be reoved
require.Contains(t, err.Error(), "Organisation is already deactivated") require.Contains(t, err.Error(), "Organisation is already deactivated")
// 6. repeat check organization state is still deactivated // 6. repeat check organization state is still deactivated
res, err = Client.GetOrganizationByID(ctx, &v2beta_org.GetOrganizationByIDRequest{ listOrgRes, err = Client.ListOrganizations(ctx, &v2beta_org.ListOrganizationsRequest{
Id: orgId, Queries: []*v2beta_org.OrgQuery{
{
Query: &v2beta_org.OrgQuery_IdQuery{
IdQuery: &v2beta_org.OrgIDQuery{
Id: orgId,
},
},
},
},
}) })
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, v2beta_org.OrgState_ORG_STATE_INACTIVE, res.Organization.State) require.Equal(t, v2beta_org.OrgState_ORG_STATE_INACTIVE, listOrgRes.Result[0].State)
// 7. reactivate organization // // 7. reactivate organization
reactivate_res, err := Client.ReactivateOrganization(ctx, &v2beta_org.ReactivateOrganizationRequest{ reactivate_res, err := Client.ReactivateOrganization(ctx, &v2beta_org.ReactivateOrganizationRequest{
Id: orgId, Id: orgId,
}) })
@@ -513,46 +505,42 @@ func TestServer_DeactivateReactivateOrganization(t *testing.T) {
assert.WithinRange(t, gotCD, now.Add(-time.Minute), now.Add(time.Minute)) assert.WithinRange(t, gotCD, now.Add(-time.Minute), now.Add(time.Minute))
assert.NotEmpty(t, reactivate_res.GetDetails().GetResourceOwner()) assert.NotEmpty(t, reactivate_res.GetDetails().GetResourceOwner())
// 8. check organization state is active // // 8. check organization state is active
res, err = Client.GetOrganizationByID(ctx, &v2beta_org.GetOrganizationByIDRequest{ listOrgRes, err = Client.ListOrganizations(ctx, &v2beta_org.ListOrganizationsRequest{
Id: orgId, Queries: []*v2beta_org.OrgQuery{
{
Query: &v2beta_org.OrgQuery_IdQuery{
IdQuery: &v2beta_org.OrgIDQuery{
Id: orgId,
},
},
},
},
}) })
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, v2beta_org.OrgState_ORG_STATE_ACTIVE, res.Organization.State) require.Equal(t, v2beta_org.OrgState_ORG_STATE_ACTIVE, listOrgRes.Result[0].State)
// 9. repeat reactivate organization // // 9. repeat reactivate organization
reactivate_res, err = Client.ReactivateOrganization(ctx, &v2beta_org.ReactivateOrganizationRequest{ reactivate_res, err = Client.ReactivateOrganization(ctx, &v2beta_org.ReactivateOrganizationRequest{
Id: orgId, Id: orgId,
}) })
// TODO remove this error message
require.Contains(t, err.Error(), "Organisation is already active") require.Contains(t, err.Error(), "Organisation is already active")
// 10. repeat check organization state is still active // // 10. repeat check organization state is still active
res, err = Client.GetOrganizationByID(ctx, &v2beta_org.GetOrganizationByIDRequest{ listOrgRes, err = Client.ListOrganizations(ctx, &v2beta_org.ListOrganizationsRequest{
Id: orgId, Queries: []*v2beta_org.OrgQuery{
{
Query: &v2beta_org.OrgQuery_IdQuery{
IdQuery: &v2beta_org.OrgIDQuery{
Id: orgId,
},
},
},
},
}) })
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, v2beta_org.OrgState_ORG_STATE_ACTIVE, res.Organization.State) require.Equal(t, v2beta_org.OrgState_ORG_STATE_ACTIVE, listOrgRes.Result[0].State)
}
func createOrgs(noOfOrgs int) ([]*v2beta_org.CreateOrganizationResponse, []string, error) {
var err error
orgs := make([]*v2beta_org.CreateOrganizationResponse, noOfOrgs)
orgsName := make([]string, noOfOrgs)
for i := range noOfOrgs {
orgName := gofakeit.Name()
orgsName[i] = orgName
orgs[i], err = Client.CreateOrganization(CTX,
&v2beta_org.CreateOrganizationRequest{
Name: orgName,
},
)
if err != nil {
return nil, nil, err
}
}
return orgs, orgsName, nil
} }
func TestServer_AddOListDeleterganizationDomain(t *testing.T) { func TestServer_AddOListDeleterganizationDomain(t *testing.T) {
@@ -730,7 +718,6 @@ func TestServer_ValidateOrganizationDomain(t *testing.T) {
Type: org.DomainValidationType_DOMAIN_VALIDATION_TYPE_DNS, 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", name: "validate org dns non existnetn org id",
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner), ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner),
@@ -742,7 +729,6 @@ func TestServer_ValidateOrganizationDomain(t *testing.T) {
// BUG: this should be 'organization does not exist' // BUG: this should be 'organization does not exist'
err: errors.New("Domain doesn't exist on organization"), 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", name: "validate org non existnetn domain",
ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner), ctx: Instance.WithAuthorization(context.Background(), integration.UserTypeIAMOwner),
@@ -1245,6 +1231,27 @@ func TestServer_DeleteOrganizationMetadata(t *testing.T) {
} }
} }
func createOrgs(noOfOrgs int) ([]*v2beta_org.CreateOrganizationResponse, []string, error) {
var err error
orgs := make([]*v2beta_org.CreateOrganizationResponse, noOfOrgs)
orgsName := make([]string, noOfOrgs)
for i := range noOfOrgs {
orgName := gofakeit.Name()
orgsName[i] = orgName
orgs[i], err = Client.CreateOrganization(CTX,
&v2beta_org.CreateOrganizationRequest{
Name: orgName,
},
)
if err != nil {
return nil, nil, err
}
}
return orgs, orgsName, nil
}
func assertCreatedAdmin(t *testing.T, expected, got *v2beta_org.CreateOrganizationResponse_CreatedAdmin) { func assertCreatedAdmin(t *testing.T, expected, got *v2beta_org.CreateOrganizationResponse_CreatedAdmin) {
if expected.GetUserId() != "" { if expected.GetUserId() != "" {
assert.NotEmpty(t, got.GetUserId()) assert.NotEmpty(t, got.GetUserId())