diff --git a/tests/testutils/test_utils.go b/tests/testutils/test_utils.go index 57cd6b592bc..1641be93820 100644 --- a/tests/testutils/test_utils.go +++ b/tests/testutils/test_utils.go @@ -449,3 +449,23 @@ func DisableManager(inst *instance.Instance, shouldRemoveUUID bool) error { return instance.Update(inst) } + +func WithOAuthClientsLimit(t *testing.T, inst *instance.Instance, limit float64) { + flags := inst.FeatureFlags + if flags == nil { + flags = map[string]interface{}{} + } + + was := flags["cozy.oauthclients.max"] + + flags["cozy.oauthclients.max"] = limit + inst.FeatureFlags = flags + err := instance.Update(inst) + require.NoError(t, err, "Could not set OAuth clients limit") + + t.Cleanup(func() { + flags["cozy.oauthclients.max"] = was + inst.FeatureFlags = flags + require.NoError(t, instance.Update(inst)) + }) +} diff --git a/web/apps/apps_test.go b/web/apps/apps_test.go index d2a440db4b9..21b31a6d17f 100644 --- a/web/apps/apps_test.go +++ b/web/apps/apps_test.go @@ -146,9 +146,7 @@ func TestApps(t *testing.T) { } require.Nil(t, flagship.Create(testInstance, oauth.NotPending)) - var limit float64 - testInstance.FeatureFlags = map[string]interface{}{"cozy.oauthclients.max": limit} - require.NoError(t, instance.Update(testInstance)) + testutils.WithOAuthClientsLimit(t, testInstance, 0) e = e.Builder(func(r *httpexpect.Request) { r.WithCookie("cozysessid", cozysessID) diff --git a/web/settings/clients_usage_test.go b/web/settings/clients_usage_test.go index cad49b41f74..4db7199ade6 100644 --- a/web/settings/clients_usage_test.go +++ b/web/settings/clients_usage_test.go @@ -3,7 +3,6 @@ package settings_test import ( "testing" - "github.com/cozy/cozy-stack/model/instance" "github.com/cozy/cozy-stack/model/instance/lifecycle" "github.com/cozy/cozy-stack/model/oauth" csettings "github.com/cozy/cozy-stack/model/settings" @@ -14,11 +13,6 @@ import ( "github.com/stretchr/testify/require" ) -func setClientsLimit(t *testing.T, inst *instance.Instance, limit float64) { - inst.FeatureFlags = map[string]interface{}{"cozy.oauthclients.max": limit} - require.NoError(t, instance.Update(inst)) -} - func TestClientsUsage(t *testing.T) { config.UseTestFile(t) testutils.NeedCouchdb(t) @@ -45,7 +39,7 @@ func TestClientsUsage(t *testing.T) { require.Nil(t, flagship.Create(testInstance, oauth.NotPending)) t.Run("WithoutLimit", func(t *testing.T) { - setClientsLimit(t, testInstance, -1) + testutils.WithOAuthClientsLimit(t, testInstance, -1) e := testutils.CreateTestClient(t, ts.URL) obj := e.GET("/settings/clients-usage"). @@ -66,7 +60,7 @@ func TestClientsUsage(t *testing.T) { }) t.Run("WithLimitNotReached", func(t *testing.T) { - setClientsLimit(t, testInstance, 2) + testutils.WithOAuthClientsLimit(t, testInstance, 2) e := testutils.CreateTestClient(t, ts.URL) obj := e.GET("/settings/clients-usage"). @@ -87,7 +81,7 @@ func TestClientsUsage(t *testing.T) { }) t.Run("WithLimitReached", func(t *testing.T) { - setClientsLimit(t, testInstance, 1) + testutils.WithOAuthClientsLimit(t, testInstance, 1) e := testutils.CreateTestClient(t, ts.URL) obj := e.GET("/settings/clients-usage"). @@ -108,7 +102,7 @@ func TestClientsUsage(t *testing.T) { }) t.Run("WithLimitExceeded", func(t *testing.T) { - setClientsLimit(t, testInstance, 0) + testutils.WithOAuthClientsLimit(t, testInstance, 0) e := testutils.CreateTestClient(t, ts.URL) obj := e.GET("/settings/clients-usage"). diff --git a/web/settings/settings_test.go b/web/settings/settings_test.go index 91dd4664a3b..6705d5c1da1 100644 --- a/web/settings/settings_test.go +++ b/web/settings/settings_test.go @@ -906,9 +906,7 @@ func TestSettings(t *testing.T) { t.Run("ClientsLimitExceededWithLimitExceeded", func(t *testing.T) { e := testutils.CreateTestClient(t, tsURL) - var limit float64 - testInstance.FeatureFlags = map[string]interface{}{"cozy.oauthclients.max": limit} - require.NoError(t, instance.Update(testInstance)) + testutils.WithOAuthClientsLimit(t, testInstance, 0) // Create the OAuth client for the flagship app flagship := oauth.Client{ @@ -964,9 +962,7 @@ func TestSettings(t *testing.T) { clients, _, err := oauth.GetConnectedUserClients(testInstance, 100, "") require.NoError(t, err) - limit := float64(len(clients)) - testInstance.FeatureFlags = map[string]interface{}{"cozy.oauthclients.max": limit} - require.NoError(t, instance.Update(testInstance)) + testutils.WithOAuthClientsLimit(t, testInstance, float64(len(clients))) e.GET("/settings/clients/limit-exceeded"). WithHeader("Authorization", "Bearer "+token).