AuthN: Add password and login form stats (#64868)

* add password and login form stats

* fix method handler

* fix viewers can edit test
pull/64893/head
Jo 2 years ago committed by GitHub
parent 40014f1454
commit 7784782512
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      pkg/services/authn/authnimpl/usage_stats.go
  2. 44
      pkg/services/authn/authnimpl/usage_stats_test.go
  3. 5
      pkg/services/authn/authntest/fake.go

@ -16,6 +16,8 @@ func (s *Service) getUsageStats(ctx context.Context) (map[string]interface{}, er
authTypes["auth_proxy"] = s.cfg.AuthProxyEnabled
authTypes["anonymous"] = s.cfg.AnonymousEnabled
authTypes["jwt"] = s.cfg.JWTAuthEnabled
authTypes["grafana_password"] = !s.cfg.DisableLogin
authTypes["login_form"] = !s.cfg.DisableLoginForm
for authType, enabled := range authTypes {
enabledValue := 0

@ -0,0 +1,44 @@
package authnimpl
import (
"context"
"testing"
"github.com/stretchr/testify/require"
"github.com/grafana/grafana/pkg/services/authn/authntest"
)
func TestService_getUsageStats(t *testing.T) {
svc := setupTests(t, func(svc *Service) {
svc.RegisterClient(
&authntest.FakeClient{ExpectedErr: nil, ExpectedName: "test", ExpectedPriority: 1, ExpectedStats: map[string]interface{}{"stats.test.enabled.count": 1}})
svc.RegisterClient(
&authntest.FakeClient{ExpectedErr: errCantAuthenticateReq, ExpectedName: "failing", ExpectedPriority: 1, ExpectedStats: nil})
})
svc.cfg.DisableLoginForm = false
svc.cfg.DisableLogin = false
svc.cfg.BasicAuthEnabled = true
svc.cfg.AuthProxyEnabled = true
svc.cfg.JWTAuthEnabled = true
svc.cfg.LDAPEnabled = true
svc.cfg.EditorsCanAdmin = true
svc.cfg.ViewersCanEdit = true
got, err := svc.getUsageStats(context.Background())
require.NoError(t, err)
want := map[string]interface{}{"stats.auth_enabled.anonymous.count": 0,
"stats.auth_enabled.auth_proxy.count": 1,
"stats.auth_enabled.basic_auth.count": 1,
"stats.auth_enabled.grafana_password.count": 1,
"stats.auth_enabled.jwt.count": 1,
"stats.auth_enabled.ldap.count": 1,
"stats.auth_enabled.login_form.count": 1,
"stats.authz.editors_can_admin.count": 1,
"stats.authz.viewers_can_edit.count": 1,
"stats.test.enabled.count": 1,
}
require.Equal(t, want, got)
}

@ -18,6 +18,7 @@ type FakeClient struct {
ExpectedTest bool
ExpectedPriority uint
ExpectedIdentity *authn.Identity
ExpectedStats map[string]interface{}
}
func (f *FakeClient) Name() string {
@ -36,6 +37,10 @@ func (f *FakeClient) Priority() uint {
return f.ExpectedPriority
}
func (f *FakeClient) UsageStatFn(ctx context.Context) (map[string]interface{}, error) {
return f.ExpectedStats, f.ExpectedErr
}
var _ authn.PasswordClient = new(FakePasswordClient)
type FakePasswordClient struct {

Loading…
Cancel
Save