mirror of https://github.com/grafana/grafana
Alerting: Fix stats that display alert count when using unified alerting (#64852)
* Alerting: Fix stats when using unified alertingpull/64906/head
parent
f4c62a5c5d
commit
02a8f62021
@ -0,0 +1,92 @@ |
||||
package stats |
||||
|
||||
import ( |
||||
"context" |
||||
"fmt" |
||||
"net/http" |
||||
"testing" |
||||
|
||||
"github.com/stretchr/testify/require" |
||||
|
||||
"github.com/grafana/grafana/pkg/services/org" |
||||
"github.com/grafana/grafana/pkg/services/org/orgimpl" |
||||
"github.com/grafana/grafana/pkg/services/quota/quotaimpl" |
||||
"github.com/grafana/grafana/pkg/services/sqlstore" |
||||
"github.com/grafana/grafana/pkg/services/supportbundles/supportbundlestest" |
||||
"github.com/grafana/grafana/pkg/services/user" |
||||
"github.com/grafana/grafana/pkg/services/user/userimpl" |
||||
"github.com/grafana/grafana/pkg/tests/testinfra" |
||||
) |
||||
|
||||
func TestIntegrationAdminStats(t *testing.T) { |
||||
t.Run("with unified alerting enabled", func(t *testing.T) { |
||||
url := grafanaSetup(t, testinfra.GrafanaOpts{ |
||||
DisableLegacyAlerting: true, |
||||
EnableUnifiedAlerting: true, |
||||
AppModeProduction: true, |
||||
}) |
||||
|
||||
// nolint:gosec
|
||||
resp, err := http.Get(url) |
||||
defer func() { |
||||
_ = resp.Body.Close() |
||||
}() |
||||
require.NoError(t, err) |
||||
require.Equal(t, http.StatusOK, resp.StatusCode) |
||||
}) |
||||
|
||||
t.Run("with legacy alerting enabled", func(t *testing.T) { |
||||
url := grafanaSetup(t, testinfra.GrafanaOpts{ |
||||
DisableLegacyAlerting: false, |
||||
EnableUnifiedAlerting: false, |
||||
AppModeProduction: true, |
||||
}) |
||||
|
||||
// nolint:gosec
|
||||
resp, err := http.Get(url) |
||||
defer func() { |
||||
_ = resp.Body.Close() |
||||
}() |
||||
require.NoError(t, err) |
||||
require.Equal(t, http.StatusOK, resp.StatusCode) |
||||
}) |
||||
} |
||||
|
||||
// grafanaSetup creates the grafana server, user and returns the URL with credentials of the api/admin/stats endpoint.
|
||||
func grafanaSetup(t *testing.T, opts testinfra.GrafanaOpts) string { |
||||
t.Helper() |
||||
|
||||
testinfra.SQLiteIntegrationTest(t) |
||||
|
||||
// Setup Grafana and its Database
|
||||
dir, path := testinfra.CreateGrafDir(t, opts) |
||||
|
||||
grafanaListedAddr, store := testinfra.StartGrafana(t, dir, path) |
||||
|
||||
// Create a user to make authenticated requests
|
||||
createUser(t, store, user.CreateUserCommand{ |
||||
DefaultOrgRole: string(org.RoleAdmin), |
||||
Login: "grafana", |
||||
Password: "password", |
||||
IsAdmin: true, |
||||
}) |
||||
|
||||
return fmt.Sprintf("http://%s:%s@%s/api/admin/stats", "grafana", "password", grafanaListedAddr) |
||||
} |
||||
|
||||
func createUser(t *testing.T, store *sqlstore.SQLStore, cmd user.CreateUserCommand) int64 { |
||||
t.Helper() |
||||
|
||||
store.Cfg.AutoAssignOrg = true |
||||
store.Cfg.AutoAssignOrgId = 1 |
||||
|
||||
quotaService := quotaimpl.ProvideService(store, store.Cfg) |
||||
orgService, err := orgimpl.ProvideService(store, store.Cfg, quotaService) |
||||
require.NoError(t, err) |
||||
usrSvc, err := userimpl.ProvideService(store, orgService, store.Cfg, nil, nil, quotaService, supportbundlestest.NewFakeBundleService()) |
||||
require.NoError(t, err) |
||||
|
||||
u, err := usrSvc.Create(context.Background(), &cmd) |
||||
require.NoError(t, err) |
||||
return u.ID |
||||
} |
Loading…
Reference in new issue