Files
grafana/pkg/services/sqlstore/stats_test.go
T

131 lines
3.6 KiB
Go
Raw Normal View History

2018-05-25 14:33:37 +02:00
package sqlstore
import (
2018-06-10 23:17:18 +02:00
"context"
"fmt"
2018-05-25 14:33:37 +02:00
"testing"
2019-04-24 13:18:16 +02:00
"github.com/grafana/grafana/pkg/models"
"github.com/stretchr/testify/assert"
2020-03-05 12:34:44 +01:00
"github.com/stretchr/testify/require"
2018-05-25 14:33:37 +02:00
)
func TestStatsDataAccess(t *testing.T) {
t.Run("Testing Stats Data Access", func(t *testing.T) {
2018-05-25 14:33:37 +02:00
InitTestDB(t)
t.Run("Get system stats should not results in error", func(t *testing.T) {
populateDB(t)
2019-04-24 13:18:16 +02:00
query := models.GetSystemStatsQuery{}
2018-05-25 14:33:37 +02:00
err := GetSystemStats(&query)
2020-03-05 12:34:44 +01:00
require.NoError(t, err)
assert.Equal(t, int64(3), query.Result.Users)
assert.Equal(t, 1, query.Result.Editors)
assert.Equal(t, 1, query.Result.Viewers)
assert.Equal(t, 3, query.Result.Admins)
2018-05-25 14:33:37 +02:00
})
t.Run("Get system user count stats should not results in error", func(t *testing.T) {
2019-04-24 13:18:16 +02:00
query := models.GetSystemUserCountStatsQuery{}
2018-06-10 23:17:18 +02:00
err := GetSystemUserCountStats(context.Background(), &query)
2020-03-05 12:34:44 +01:00
assert.NoError(t, err)
2018-05-25 14:33:37 +02:00
})
2018-05-25 16:00:15 +02:00
t.Run("Get datasource stats should not results in error", func(t *testing.T) {
2019-04-24 13:18:16 +02:00
query := models.GetDataSourceStatsQuery{}
2018-05-25 16:00:15 +02:00
err := GetDataSourceStats(&query)
2020-03-05 12:34:44 +01:00
assert.NoError(t, err)
2018-05-25 16:00:15 +02:00
})
t.Run("Get datasource access stats should not results in error", func(t *testing.T) {
2019-04-24 13:18:16 +02:00
query := models.GetDataSourceAccessStatsQuery{}
2018-05-25 16:00:15 +02:00
err := GetDataSourceAccessStats(&query)
2020-03-05 12:34:44 +01:00
assert.NoError(t, err)
2018-05-25 16:00:15 +02:00
})
t.Run("Get alert notifier stats should not results in error", func(t *testing.T) {
2019-04-24 13:18:16 +02:00
query := models.GetAlertNotifierUsageStatsQuery{}
err := GetAlertNotifiersUsageStats(context.Background(), &query)
2020-03-05 12:34:44 +01:00
assert.NoError(t, err)
})
2019-04-24 13:18:16 +02:00
t.Run("Get admin stats should not result in error", func(t *testing.T) {
2019-04-24 13:18:16 +02:00
query := models.GetAdminStatsQuery{}
err := GetAdminStats(&query)
2020-03-05 12:34:44 +01:00
assert.NoError(t, err)
})
t.Run("Get active user count stats should not result in error", func(t *testing.T) {
query := models.GetActiveUserStatsQuery{}
err := GetActiveUserStats(&query)
require.NoError(t, err)
assert.Equal(t, int64(1), query.Result.ActiveUsers)
assert.Equal(t, int64(1), query.Result.ActiveAdmins)
assert.Equal(t, int64(0), query.Result.ActiveEditors)
assert.Equal(t, int64(0), query.Result.ActiveViewers)
2019-04-24 13:18:16 +02:00
})
2018-05-25 14:33:37 +02:00
})
}
func populateDB(t *testing.T) {
users := make([]models.User, 3)
for i := range users {
cmd := &models.CreateUserCommand{
Email: fmt.Sprintf("usertest%v@test.com", i),
Name: fmt.Sprintf("user name %v", i),
Login: fmt.Sprintf("user_test_%v_login", i),
OrgName: fmt.Sprintf("Org #%v", i),
}
err := CreateUser(context.Background(), cmd)
2020-03-05 12:34:44 +01:00
require.NoError(t, err)
users[i] = cmd.Result
}
// get 1st user's organisation
getOrgByIdQuery := &models.GetOrgByIdQuery{Id: users[0].OrgId}
err := GetOrgById(getOrgByIdQuery)
2020-03-05 12:34:44 +01:00
require.NoError(t, err)
org := getOrgByIdQuery.Result
// add 2nd user as editor
cmd := &models.AddOrgUserCommand{
OrgId: org.Id,
UserId: users[1].Id,
Role: models.ROLE_EDITOR,
}
err = AddOrgUser(cmd)
2020-03-05 12:34:44 +01:00
require.NoError(t, err)
// add 3rd user as viewer
cmd = &models.AddOrgUserCommand{
OrgId: org.Id,
UserId: users[2].Id,
Role: models.ROLE_VIEWER,
}
err = AddOrgUser(cmd)
2020-03-05 12:34:44 +01:00
require.NoError(t, err)
// get 2nd user's organisation
getOrgByIdQuery = &models.GetOrgByIdQuery{Id: users[1].OrgId}
err = GetOrgById(getOrgByIdQuery)
2020-03-05 12:34:44 +01:00
require.NoError(t, err)
org = getOrgByIdQuery.Result
// add 1st user as admin
cmd = &models.AddOrgUserCommand{
OrgId: org.Id,
UserId: users[0].Id,
Role: models.ROLE_ADMIN,
}
err = AddOrgUser(cmd)
2020-03-05 12:34:44 +01:00
require.NoError(t, err)
// update 1st user last seen at
updateUserLastSeenAtCmd := &models.UpdateUserLastSeenAtCommand{
UserId: users[0].Id,
}
err = UpdateUserLastSeenAt(updateUserLastSeenAtCmd)
require.NoError(t, err)
}