//go:build integration package system_test import ( "testing" "github.com/muhlemmer/gu" "github.com/stretchr/testify/require" "github.com/zitadel/zitadel/internal/integration" "github.com/zitadel/zitadel/pkg/grpc/system" ) func TestServer_Limits_Bulk(t *testing.T) { const len = 5 type instance struct{ domain, id string } instances := make([]*instance, len) for i := 0; i < len; i++ { domain := integration.RandString(5) + ".integration.localhost" resp, err := Tester.Client.System.CreateInstance(SystemCTX, &system.CreateInstanceRequest{ InstanceName: "testinstance", CustomDomain: domain, Owner: &system.CreateInstanceRequest_Machine_{ Machine: &system.CreateInstanceRequest_Machine{ UserName: "owner", Name: "owner", }, }, }) require.NoError(t, err) instances[i] = &instance{domain, resp.GetInstanceId()} } resp, err := Tester.Client.System.BulkSetLimits(SystemCTX, &system.BulkSetLimitsRequest{ Limits: []*system.SetLimitsRequest{{ InstanceId: instances[0].id, Block: gu.Ptr(true), }, { InstanceId: instances[1].id, Block: gu.Ptr(false), }, { InstanceId: instances[2].id, Block: gu.Ptr(true), }, { InstanceId: instances[3].id, Block: gu.Ptr(false), }, { InstanceId: instances[4].id, Block: gu.Ptr(true), }}, }) require.NoError(t, err) details := resp.GetTargetDetails() require.Len(t, details, len) t.Run("the first instance is blocked", func(t *testing.T) { require.Equal(t, instances[0].id, details[0].GetResourceOwner(), "resource owner must be instance id") testBlockingAPI(t, publicAPIBlockingTest(instances[0].domain), true, true) }) t.Run("the second instance isn't blocked", func(t *testing.T) { require.Equal(t, instances[1].id, details[1].GetResourceOwner(), "resource owner must be instance id") testBlockingAPI(t, publicAPIBlockingTest(instances[1].domain), false, true) }) t.Run("the third instance is blocked", func(t *testing.T) { require.Equal(t, instances[2].id, details[2].GetResourceOwner(), "resource owner must be instance id") testBlockingAPI(t, publicAPIBlockingTest(instances[2].domain), true, true) }) t.Run("the fourth instance isn't blocked", func(t *testing.T) { require.Equal(t, instances[3].id, details[3].GetResourceOwner(), "resource owner must be instance id") testBlockingAPI(t, publicAPIBlockingTest(instances[3].domain), false, true) }) t.Run("the fifth instance is blocked", func(t *testing.T) { require.Equal(t, instances[4].id, details[4].GetResourceOwner(), "resource owner must be instance id") testBlockingAPI(t, publicAPIBlockingTest(instances[4].domain), true, true) }) }