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:
Serge Zaitsev 2022-04-06 08:45:01 +02:00 committed by GitHub
parent 8490fd77e3
commit 3a7fc80948
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 23 additions and 34 deletions

View File

@ -55,7 +55,7 @@ func (a *AuthenticatorService) AuthenticateUser(ctx context.Context, query *mode
return err
}
err := loginUsingGrafanaDB(ctx, query)
err := loginUsingGrafanaDB(ctx, query, a.store)
if err == nil || (!errors.Is(err, models.ErrUserNotFound) && !errors.Is(err, ErrInvalidCredentials) &&
!errors.Is(err, ErrUserDisabled)) {
query.AuthModule = "grafana"

View File

@ -183,7 +183,7 @@ type authScenarioContext struct {
type authScenarioFunc func(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
return err
}

View File

@ -4,8 +4,8 @@ import (
"context"
"crypto/subtle"
"github.com/grafana/grafana/pkg/bus"
"github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/services/sqlstore"
"github.com/grafana/grafana/pkg/util"
)
@ -21,10 +21,10 @@ var validatePassword = func(providedPassword string, userPassword string, userSa
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}
if err := bus.Dispatch(ctx, &userQuery); err != nil {
if err := store.GetUserByLogin(ctx, &userQuery); err != nil {
return err
}

View File

@ -4,8 +4,8 @@ import (
"context"
"testing"
"github.com/grafana/grafana/pkg/bus"
"github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/services/sqlstore/mockstore"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@ -13,7 +13,7 @@ import (
func TestLoginUsingGrafanaDB(t *testing.T) {
grafanaLoginScenario(t, "When login with non-existing user", func(sc *grafanaLoginScenarioContext) {
sc.withNonExistingUser()
err := loginUsingGrafanaDB(context.Background(), sc.loginUserQuery)
err := loginUsingGrafanaDB(context.Background(), sc.loginUserQuery, sc.store)
require.EqualError(t, err, models.ErrUserNotFound.Error())
assert.False(t, sc.validatePasswordCalled)
@ -22,7 +22,7 @@ func TestLoginUsingGrafanaDB(t *testing.T) {
grafanaLoginScenario(t, "When login with invalid credentials", func(sc *grafanaLoginScenarioContext) {
sc.withInvalidPassword()
err := loginUsingGrafanaDB(context.Background(), sc.loginUserQuery)
err := loginUsingGrafanaDB(context.Background(), sc.loginUserQuery, sc.store)
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) {
sc.withValidCredentials()
err := loginUsingGrafanaDB(context.Background(), sc.loginUserQuery)
err := loginUsingGrafanaDB(context.Background(), sc.loginUserQuery, sc.store)
require.NoError(t, err)
assert.True(t, sc.validatePasswordCalled)
@ -44,7 +44,7 @@ func TestLoginUsingGrafanaDB(t *testing.T) {
grafanaLoginScenario(t, "When login with disabled user", func(sc *grafanaLoginScenarioContext) {
sc.withDisabledUser()
err := loginUsingGrafanaDB(context.Background(), sc.loginUserQuery)
err := loginUsingGrafanaDB(context.Background(), sc.loginUserQuery, sc.store)
require.EqualError(t, err, ErrUserDisabled.Error())
assert.False(t, sc.validatePasswordCalled)
@ -53,6 +53,7 @@ func TestLoginUsingGrafanaDB(t *testing.T) {
}
type grafanaLoginScenarioContext struct {
store *mockstore.SQLStoreMock
loginUserQuery *models.LoginUserQuery
validatePasswordCalled bool
}
@ -66,6 +67,7 @@ func grafanaLoginScenario(t *testing.T, desc string, fn grafanaLoginScenarioFunc
origValidatePassword := validatePassword
sc := &grafanaLoginScenarioContext{
store: mockstore.NewSQLStoreMock(),
loginUserQuery: &models.LoginUserQuery{
Username: "user",
Password: "pwd",
@ -95,14 +97,10 @@ func mockPasswordValidation(valid bool, sc *grafanaLoginScenarioContext) {
}
func (sc *grafanaLoginScenarioContext) getUserByLoginQueryReturns(user *models.User) {
bus.AddHandler("test", func(ctx context.Context, query *models.GetUserByLoginQuery) error {
if user == nil {
return models.ErrUserNotFound
}
query.Result = user
return nil
})
sc.store.ExpectedUser = user
if user == nil {
sc.store.ExpectedError = models.ErrUserNotFound
}
}
func (sc *grafanaLoginScenarioContext) withValidCredentials() {

View File

@ -4,7 +4,6 @@ import (
"context"
"errors"
"github.com/grafana/grafana/pkg/bus"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/services/ldap"
@ -59,7 +58,7 @@ var loginUsingLDAP = func(ctx context.Context, query *models.LoginUserQuery, log
ExternalUser: externalUser,
SignupAllowed: setting.LDAPAllowSignup,
}
err = bus.Dispatch(ctx, upsert)
err = loginService.UpsertUser(ctx, upsert)
if err != nil {
return true, err
}

View File

@ -79,21 +79,12 @@ func TestMiddlewareBasicAuth(t *testing.T) {
const password = "MyPass"
const salt = "Salt"
login.ProvideService(sc.sqlStore, &logintest.LoginServiceFake{})
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
})
encoded, err := util.EncodePassword(password, salt)
require.NoError(t, err)
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 {
query.Result = &models.SignedInUser{UserId: query.UserId}
return nil

View File

@ -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 {
query.Result = m.ExpectedUser
return m.ExpectedError
}