2022-03-16 10:54:34 -05:00
|
|
|
package database
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"testing"
|
|
|
|
|
2023-01-30 02:34:18 -06:00
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
|
2023-03-30 10:04:10 -05:00
|
|
|
"github.com/grafana/grafana/pkg/components/satokengen"
|
2023-08-16 03:56:47 -05:00
|
|
|
"github.com/grafana/grafana/pkg/services/org"
|
2022-04-13 11:11:03 -05:00
|
|
|
"github.com/grafana/grafana/pkg/services/serviceaccounts"
|
2022-03-16 10:54:34 -05:00
|
|
|
"github.com/grafana/grafana/pkg/services/serviceaccounts/tests"
|
|
|
|
)
|
|
|
|
|
2023-03-16 10:36:31 -05:00
|
|
|
func TestIntegrationStore_UsageStats(t *testing.T) {
|
2022-03-16 10:54:34 -05:00
|
|
|
saToCreate := tests.TestUser{Login: "servicetestwithTeam@admin", IsServiceAccount: true}
|
|
|
|
db, store := setupTestDatabase(t)
|
|
|
|
sa := tests.SetupUserServiceAccount(t, db, saToCreate)
|
|
|
|
|
2023-03-16 10:36:31 -05:00
|
|
|
db.Cfg.SATokenExpirationDayLimit = 4
|
|
|
|
|
2022-03-16 10:54:34 -05:00
|
|
|
keyName := t.Name()
|
2023-03-30 10:04:10 -05:00
|
|
|
key, err := satokengen.New(keyName)
|
2022-03-16 10:54:34 -05:00
|
|
|
require.NoError(t, err)
|
|
|
|
|
2022-04-13 11:11:03 -05:00
|
|
|
cmd := serviceaccounts.AddServiceAccountTokenCommand{
|
2022-03-16 10:54:34 -05:00
|
|
|
Name: keyName,
|
2022-06-28 07:32:25 -05:00
|
|
|
OrgId: sa.OrgID,
|
2022-03-16 10:54:34 -05:00
|
|
|
Key: key.HashedKey,
|
|
|
|
SecondsToLive: 0,
|
|
|
|
}
|
|
|
|
|
2023-01-31 02:51:55 -06:00
|
|
|
_, err = store.AddServiceAccountToken(context.Background(), sa.ID, &cmd)
|
2022-03-16 10:54:34 -05:00
|
|
|
require.NoError(t, err)
|
|
|
|
|
2023-08-16 03:56:47 -05:00
|
|
|
role := org.RoleNone
|
|
|
|
form := serviceaccounts.UpdateServiceAccountForm{
|
|
|
|
Role: &role,
|
|
|
|
}
|
|
|
|
_, err = store.UpdateServiceAccount(context.Background(), sa.OrgID, sa.ID, &form)
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
2022-03-16 10:54:34 -05:00
|
|
|
stats, err := store.GetUsageMetrics(context.Background())
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
2022-08-23 07:24:55 -05:00
|
|
|
assert.Equal(t, int64(1), stats.ServiceAccounts)
|
2023-08-16 03:56:47 -05:00
|
|
|
assert.Equal(t, int64(1), stats.ServiceAccountsWithNoRole)
|
2022-08-23 07:24:55 -05:00
|
|
|
assert.Equal(t, int64(1), stats.Tokens)
|
2023-03-16 10:36:31 -05:00
|
|
|
assert.Equal(t, true, stats.ForcedExpiryEnabled)
|
2022-03-16 10:54:34 -05:00
|
|
|
}
|