zitadel/internal/api/grpc/system/instance_integration_test.go
Tim Möhlmann ad26ca88d7
feat(system api): list instances by domains (#6806)
Allow to list instances by their domains on the system API.

closes #6785
2023-10-25 19:20:12 +00:00

110 lines
2.3 KiB
Go

//go:build integration
package system_test
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/zitadel/zitadel/pkg/grpc/instance"
"github.com/zitadel/zitadel/pkg/grpc/object"
system_pb "github.com/zitadel/zitadel/pkg/grpc/system"
)
func TestServer_ListInstances(t *testing.T) {
domain, instanceID, _ := Tester.UseIsolatedInstance(CTX, SystemCTX)
tests := []struct {
name string
req *system_pb.ListInstancesRequest
want []*instance.Instance
wantErr bool
}{
{
name: "empty query error",
req: &system_pb.ListInstancesRequest{
Queries: []*instance.Query{{}},
},
wantErr: true,
},
{
name: "non-existing id",
req: &system_pb.ListInstancesRequest{
Queries: []*instance.Query{{
Query: &instance.Query_IdQuery{
IdQuery: &instance.IdsQuery{
Ids: []string{"foo"},
},
},
}},
},
want: []*instance.Instance{},
},
{
name: "get 1 by id",
req: &system_pb.ListInstancesRequest{
Query: &object.ListQuery{
Limit: 1,
},
Queries: []*instance.Query{{
Query: &instance.Query_IdQuery{
IdQuery: &instance.IdsQuery{
Ids: []string{instanceID},
},
},
}},
},
want: []*instance.Instance{{
Id: instanceID,
}},
},
{
name: "non-existing domain",
req: &system_pb.ListInstancesRequest{
Queries: []*instance.Query{{
Query: &instance.Query_DomainQuery{
DomainQuery: &instance.DomainsQuery{
Domains: []string{"foo"},
},
},
}},
},
want: []*instance.Instance{},
},
{
name: "get 1 by domain",
req: &system_pb.ListInstancesRequest{
Query: &object.ListQuery{
Limit: 1,
},
Queries: []*instance.Query{{
Query: &instance.Query_DomainQuery{
DomainQuery: &instance.DomainsQuery{
Domains: []string{domain},
},
},
}},
},
want: []*instance.Instance{{
Id: instanceID,
}},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
resp, err := Tester.Client.System.ListInstances(SystemCTX, tt.req)
if tt.wantErr {
require.Error(t, err)
return
}
require.NoError(t, err)
got := resp.GetResult()
assert.Len(t, got, len(tt.want))
for i := 0; i < len(tt.want); i++ {
assert.Equalf(t, tt.want[i].GetId(), got[i].GetId(), "instance[%d] id", i)
}
})
}
}