package features import ( "net/http" "testing" "github.com/stretchr/testify/require" "github.com/grafana/grafana/pkg/services/featuremgmt" "github.com/grafana/grafana/pkg/tests/apis" "github.com/grafana/grafana/pkg/tests/testinfra" "github.com/grafana/grafana/pkg/tests/testsuite" "github.com/grafana/grafana/pkg/util/testutil" ) func TestMain(m *testing.M) { testsuite.Run(m) } func TestIntegrationFeatures(t *testing.T) { testutil.SkipIntegrationTestInShortMode(t) // Enable a random flag -- check that it is reported as enabled flag := featuremgmt.FlagGrafanaAPIServerWithExperimentalAPIs // the test below tests using enable_api = true, without that, the runtime_config has been instructed to skip the API helper := apis.NewK8sTestHelper(t, testinfra.GrafanaOpts{ OpenFeatureAPIEnabled: true, AppModeProduction: true, DisableAnonymous: false, // allow anon user EnableFeatureToggles: []string{ flag, // used in test below }, }) t.Run("Test evaluate flags", func(t *testing.T) { rsp := apis.DoRequest(helper, apis.RequestParams{ Method: http.MethodPost, Path: "/apis/features.grafana.app/v0alpha1/namespaces/default/ofrep/v1/evaluate/flags/" + flag, User: helper.Org1.Admin, }, &map[string]any{}) require.Equal(t, 200, rsp.Response.StatusCode) require.JSONEq(t, `{ "value": true, "key":"`+flag+`", "reason":"static provider evaluation result", "variant":"enabled"}`, string(rsp.Body)) }) }