mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Chore: Remove last bus parts from login package (#47313)
* Chore: Remove last bus parts from login package * fix middleware tests
This commit is contained in:
parent
8490fd77e3
commit
3a7fc80948
@ -55,7 +55,7 @@ func (a *AuthenticatorService) AuthenticateUser(ctx context.Context, query *mode
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err := loginUsingGrafanaDB(ctx, query)
|
err := loginUsingGrafanaDB(ctx, query, a.store)
|
||||||
if err == nil || (!errors.Is(err, models.ErrUserNotFound) && !errors.Is(err, ErrInvalidCredentials) &&
|
if err == nil || (!errors.Is(err, models.ErrUserNotFound) && !errors.Is(err, ErrInvalidCredentials) &&
|
||||||
!errors.Is(err, ErrUserDisabled)) {
|
!errors.Is(err, ErrUserDisabled)) {
|
||||||
query.AuthModule = "grafana"
|
query.AuthModule = "grafana"
|
||||||
|
@ -183,7 +183,7 @@ type authScenarioContext struct {
|
|||||||
type authScenarioFunc func(sc *authScenarioContext)
|
type authScenarioFunc func(sc *authScenarioContext)
|
||||||
|
|
||||||
func mockLoginUsingGrafanaDB(err error, sc *authScenarioContext) {
|
func mockLoginUsingGrafanaDB(err error, sc *authScenarioContext) {
|
||||||
loginUsingGrafanaDB = func(ctx context.Context, query *models.LoginUserQuery) error {
|
loginUsingGrafanaDB = func(ctx context.Context, query *models.LoginUserQuery, _ sqlstore.Store) error {
|
||||||
sc.grafanaLoginWasCalled = true
|
sc.grafanaLoginWasCalled = true
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,8 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"crypto/subtle"
|
"crypto/subtle"
|
||||||
|
|
||||||
"github.com/grafana/grafana/pkg/bus"
|
|
||||||
"github.com/grafana/grafana/pkg/models"
|
"github.com/grafana/grafana/pkg/models"
|
||||||
|
"github.com/grafana/grafana/pkg/services/sqlstore"
|
||||||
"github.com/grafana/grafana/pkg/util"
|
"github.com/grafana/grafana/pkg/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -21,10 +21,10 @@ var validatePassword = func(providedPassword string, userPassword string, userSa
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var loginUsingGrafanaDB = func(ctx context.Context, query *models.LoginUserQuery) error {
|
var loginUsingGrafanaDB = func(ctx context.Context, query *models.LoginUserQuery, store sqlstore.Store) error {
|
||||||
userQuery := models.GetUserByLoginQuery{LoginOrEmail: query.Username}
|
userQuery := models.GetUserByLoginQuery{LoginOrEmail: query.Username}
|
||||||
|
|
||||||
if err := bus.Dispatch(ctx, &userQuery); err != nil {
|
if err := store.GetUserByLogin(ctx, &userQuery); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,8 +4,8 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/grafana/grafana/pkg/bus"
|
|
||||||
"github.com/grafana/grafana/pkg/models"
|
"github.com/grafana/grafana/pkg/models"
|
||||||
|
"github.com/grafana/grafana/pkg/services/sqlstore/mockstore"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
@ -13,7 +13,7 @@ import (
|
|||||||
func TestLoginUsingGrafanaDB(t *testing.T) {
|
func TestLoginUsingGrafanaDB(t *testing.T) {
|
||||||
grafanaLoginScenario(t, "When login with non-existing user", func(sc *grafanaLoginScenarioContext) {
|
grafanaLoginScenario(t, "When login with non-existing user", func(sc *grafanaLoginScenarioContext) {
|
||||||
sc.withNonExistingUser()
|
sc.withNonExistingUser()
|
||||||
err := loginUsingGrafanaDB(context.Background(), sc.loginUserQuery)
|
err := loginUsingGrafanaDB(context.Background(), sc.loginUserQuery, sc.store)
|
||||||
require.EqualError(t, err, models.ErrUserNotFound.Error())
|
require.EqualError(t, err, models.ErrUserNotFound.Error())
|
||||||
|
|
||||||
assert.False(t, sc.validatePasswordCalled)
|
assert.False(t, sc.validatePasswordCalled)
|
||||||
@ -22,7 +22,7 @@ func TestLoginUsingGrafanaDB(t *testing.T) {
|
|||||||
|
|
||||||
grafanaLoginScenario(t, "When login with invalid credentials", func(sc *grafanaLoginScenarioContext) {
|
grafanaLoginScenario(t, "When login with invalid credentials", func(sc *grafanaLoginScenarioContext) {
|
||||||
sc.withInvalidPassword()
|
sc.withInvalidPassword()
|
||||||
err := loginUsingGrafanaDB(context.Background(), sc.loginUserQuery)
|
err := loginUsingGrafanaDB(context.Background(), sc.loginUserQuery, sc.store)
|
||||||
|
|
||||||
require.EqualError(t, err, ErrInvalidCredentials.Error())
|
require.EqualError(t, err, ErrInvalidCredentials.Error())
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ func TestLoginUsingGrafanaDB(t *testing.T) {
|
|||||||
|
|
||||||
grafanaLoginScenario(t, "When login with valid credentials", func(sc *grafanaLoginScenarioContext) {
|
grafanaLoginScenario(t, "When login with valid credentials", func(sc *grafanaLoginScenarioContext) {
|
||||||
sc.withValidCredentials()
|
sc.withValidCredentials()
|
||||||
err := loginUsingGrafanaDB(context.Background(), sc.loginUserQuery)
|
err := loginUsingGrafanaDB(context.Background(), sc.loginUserQuery, sc.store)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
assert.True(t, sc.validatePasswordCalled)
|
assert.True(t, sc.validatePasswordCalled)
|
||||||
@ -44,7 +44,7 @@ func TestLoginUsingGrafanaDB(t *testing.T) {
|
|||||||
|
|
||||||
grafanaLoginScenario(t, "When login with disabled user", func(sc *grafanaLoginScenarioContext) {
|
grafanaLoginScenario(t, "When login with disabled user", func(sc *grafanaLoginScenarioContext) {
|
||||||
sc.withDisabledUser()
|
sc.withDisabledUser()
|
||||||
err := loginUsingGrafanaDB(context.Background(), sc.loginUserQuery)
|
err := loginUsingGrafanaDB(context.Background(), sc.loginUserQuery, sc.store)
|
||||||
require.EqualError(t, err, ErrUserDisabled.Error())
|
require.EqualError(t, err, ErrUserDisabled.Error())
|
||||||
|
|
||||||
assert.False(t, sc.validatePasswordCalled)
|
assert.False(t, sc.validatePasswordCalled)
|
||||||
@ -53,6 +53,7 @@ func TestLoginUsingGrafanaDB(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type grafanaLoginScenarioContext struct {
|
type grafanaLoginScenarioContext struct {
|
||||||
|
store *mockstore.SQLStoreMock
|
||||||
loginUserQuery *models.LoginUserQuery
|
loginUserQuery *models.LoginUserQuery
|
||||||
validatePasswordCalled bool
|
validatePasswordCalled bool
|
||||||
}
|
}
|
||||||
@ -66,6 +67,7 @@ func grafanaLoginScenario(t *testing.T, desc string, fn grafanaLoginScenarioFunc
|
|||||||
origValidatePassword := validatePassword
|
origValidatePassword := validatePassword
|
||||||
|
|
||||||
sc := &grafanaLoginScenarioContext{
|
sc := &grafanaLoginScenarioContext{
|
||||||
|
store: mockstore.NewSQLStoreMock(),
|
||||||
loginUserQuery: &models.LoginUserQuery{
|
loginUserQuery: &models.LoginUserQuery{
|
||||||
Username: "user",
|
Username: "user",
|
||||||
Password: "pwd",
|
Password: "pwd",
|
||||||
@ -95,14 +97,10 @@ func mockPasswordValidation(valid bool, sc *grafanaLoginScenarioContext) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (sc *grafanaLoginScenarioContext) getUserByLoginQueryReturns(user *models.User) {
|
func (sc *grafanaLoginScenarioContext) getUserByLoginQueryReturns(user *models.User) {
|
||||||
bus.AddHandler("test", func(ctx context.Context, query *models.GetUserByLoginQuery) error {
|
sc.store.ExpectedUser = user
|
||||||
if user == nil {
|
if user == nil {
|
||||||
return models.ErrUserNotFound
|
sc.store.ExpectedError = models.ErrUserNotFound
|
||||||
}
|
}
|
||||||
|
|
||||||
query.Result = user
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sc *grafanaLoginScenarioContext) withValidCredentials() {
|
func (sc *grafanaLoginScenarioContext) withValidCredentials() {
|
||||||
|
@ -4,7 +4,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"github.com/grafana/grafana/pkg/bus"
|
|
||||||
"github.com/grafana/grafana/pkg/infra/log"
|
"github.com/grafana/grafana/pkg/infra/log"
|
||||||
"github.com/grafana/grafana/pkg/models"
|
"github.com/grafana/grafana/pkg/models"
|
||||||
"github.com/grafana/grafana/pkg/services/ldap"
|
"github.com/grafana/grafana/pkg/services/ldap"
|
||||||
@ -59,7 +58,7 @@ var loginUsingLDAP = func(ctx context.Context, query *models.LoginUserQuery, log
|
|||||||
ExternalUser: externalUser,
|
ExternalUser: externalUser,
|
||||||
SignupAllowed: setting.LDAPAllowSignup,
|
SignupAllowed: setting.LDAPAllowSignup,
|
||||||
}
|
}
|
||||||
err = bus.Dispatch(ctx, upsert)
|
err = loginService.UpsertUser(ctx, upsert)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return true, err
|
return true, err
|
||||||
}
|
}
|
||||||
|
@ -79,21 +79,12 @@ func TestMiddlewareBasicAuth(t *testing.T) {
|
|||||||
const password = "MyPass"
|
const password = "MyPass"
|
||||||
const salt = "Salt"
|
const salt = "Salt"
|
||||||
|
|
||||||
login.ProvideService(sc.sqlStore, &logintest.LoginServiceFake{})
|
encoded, err := util.EncodePassword(password, salt)
|
||||||
|
require.NoError(t, err)
|
||||||
bus.AddHandler("user-query", func(ctx context.Context, query *models.GetUserByLoginQuery) error {
|
|
||||||
encoded, err := util.EncodePassword(password, salt)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
query.Result = &models.User{
|
|
||||||
Password: encoded,
|
|
||||||
Id: id,
|
|
||||||
Salt: salt,
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
|
|
||||||
|
sc.mockSQLStore.ExpectedUser = &models.User{Password: encoded, Id: id, Salt: salt}
|
||||||
|
sc.mockSQLStore.ExpectedSignedInUser = &models.SignedInUser{UserId: id}
|
||||||
|
login.ProvideService(sc.mockSQLStore, &logintest.LoginServiceFake{})
|
||||||
bus.AddHandler("get-sign-user", func(ctx context.Context, query *models.GetSignedInUserQuery) error {
|
bus.AddHandler("get-sign-user", func(ctx context.Context, query *models.GetSignedInUserQuery) error {
|
||||||
query.Result = &models.SignedInUser{UserId: query.UserId}
|
query.Result = &models.SignedInUser{UserId: query.UserId}
|
||||||
return nil
|
return nil
|
||||||
|
@ -156,6 +156,7 @@ func (m *SQLStoreMock) GetUserById(ctx context.Context, query *models.GetUserByI
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *SQLStoreMock) GetUserByLogin(ctx context.Context, query *models.GetUserByLoginQuery) error {
|
func (m *SQLStoreMock) GetUserByLogin(ctx context.Context, query *models.GetUserByLoginQuery) error {
|
||||||
|
query.Result = m.ExpectedUser
|
||||||
return m.ExpectedError
|
return m.ExpectedError
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user