mirror of
https://github.com/andwati/zitadel.git
synced 2026-11-14 09:55:12 +00:00
feat: block instances (#7129)
* docs: fix init description typos * feat: block instances using limits * translate * unit tests * fix translations * redirect /ui/login * fix http interceptor * cleanup * fix http interceptor * fix: delete cookies on gateway 200 * add integration tests * add command test * docs * fix integration tests * add bulk api and integration test * optimize bulk set limits * unit test bulk limits * fix broken link * fix assets middleware * fix broken link * validate instance id format * Update internal/eventstore/search_query.go Co-authored-by: Livio Spring <[email protected]> * remove support for owner bulk limit commands * project limits to instances * migrate instances projection * Revert "migrate instances projection" This reverts commit 214218732a56e6df823beac1972adfcf8beeded5. * join limits, remove owner * remove todo * use optional bool * normally validate instance ids * use 302 * cleanup * cleanup * Update internal/api/grpc/system/limits_converter.go Co-authored-by: Livio Spring <[email protected]> * remove owner * remove owner from reset --------- Co-authored-by: Livio Spring <[email protected]>
This commit is contained in:
co-authored by
Livio Spring
parent
d9d376a275
commit
ed0bc39ea4
@@ -0,0 +1,75 @@
|
||||
//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)
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user