Chore: Remove methods from sqlstore (#57545)
* Remove methods from sqlstore * Remove commented out code * Remove GetUserById from tests * Adjust fake for get user profile * Adjust test * Adjust go mod files * Try fix test * Test adjustment * Adjust test 2 * Remove commented out code
This commit is contained in:
@@ -66,15 +66,6 @@ func TestIntegrationAccountDataAccess(t *testing.T) {
|
||||
_, err = sqlStore.CreateUser(context.Background(), serviceaccountcmd)
|
||||
require.NoError(t, err)
|
||||
|
||||
t.Run("Should be able to read user info projection", func(t *testing.T) {
|
||||
query := models.GetUserProfileQuery{UserId: ac1.ID}
|
||||
err = sqlStore.GetUserProfile(context.Background(), &query)
|
||||
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, query.Result.Email, "ac1@test.com")
|
||||
require.Equal(t, query.Result.Login, "ac1")
|
||||
})
|
||||
|
||||
t.Run("Given an added org user", func(t *testing.T) {
|
||||
cmd := models.AddOrgUserCommand{
|
||||
OrgId: ac1.OrgID,
|
||||
|
||||
@@ -20,7 +20,6 @@ type Store interface {
|
||||
GetDBType() core.DbType
|
||||
GetSystemStats(ctx context.Context, query *models.GetSystemStatsQuery) error
|
||||
CreateUser(ctx context.Context, cmd user.CreateUserCommand) (*user.User, error)
|
||||
GetUserProfile(ctx context.Context, query *models.GetUserProfileQuery) error
|
||||
GetSignedInUser(ctx context.Context, query *models.GetSignedInUserQuery) error
|
||||
WithDbSession(ctx context.Context, callback DBTransactionFunc) error
|
||||
WithNewDbSession(ctx context.Context, callback DBTransactionFunc) error
|
||||
|
||||
@@ -33,21 +33,6 @@ func (ss *SQLStore) getOrgIDForNewUser(sess *DBSession, args user.CreateUserComm
|
||||
return ss.getOrCreateOrg(sess, orgName)
|
||||
}
|
||||
|
||||
func (ss *SQLStore) userCaseInsensitiveLoginConflict(ctx context.Context, sess *DBSession, login, email string) error {
|
||||
users := make([]user.User, 0)
|
||||
|
||||
if err := sess.Where("LOWER(email)=LOWER(?) OR LOWER(login)=LOWER(?)",
|
||||
email, login).Find(&users); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(users) > 1 {
|
||||
return &user.ErrCaseInsensitiveLoginConflict{Users: users}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// createUser creates a user in the database
|
||||
// if autoAssignOrg is enabled then args.OrgID will be used
|
||||
// to add to an existing Org with id=args.OrgID
|
||||
@@ -175,32 +160,6 @@ func NotServiceAccountFilter(ss *SQLStore) string {
|
||||
ss.Dialect.BooleanStr(false))
|
||||
}
|
||||
|
||||
func (ss *SQLStore) GetUserById(ctx context.Context, query *models.GetUserByIdQuery) error {
|
||||
return ss.WithDbSession(ctx, func(sess *DBSession) error {
|
||||
usr := new(user.User)
|
||||
|
||||
has, err := sess.ID(query.Id).
|
||||
Where(NotServiceAccountFilter(ss)).
|
||||
Get(usr)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
} else if !has {
|
||||
return user.ErrUserNotFound
|
||||
}
|
||||
|
||||
if ss.Cfg.CaseInsensitiveLogin {
|
||||
if err := ss.userCaseInsensitiveLoginConflict(ctx, sess, usr.Login, usr.Email); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
query.Result = usr
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
// deprecated method, use only for tests
|
||||
func (ss *SQLStore) SetUsingOrg(ctx context.Context, cmd *models.SetUsingOrgCommand) error {
|
||||
getOrgsForUserCmd := &models.GetUserOrgListQuery{UserId: cmd.UserId}
|
||||
@@ -233,34 +192,6 @@ func setUsingOrgInTransaction(sess *DBSession, userID int64, orgID int64) error
|
||||
return err
|
||||
}
|
||||
|
||||
func (ss *SQLStore) GetUserProfile(ctx context.Context, query *models.GetUserProfileQuery) error {
|
||||
return ss.WithDbSession(ctx, func(sess *DBSession) error {
|
||||
var usr user.User
|
||||
has, err := sess.ID(query.UserId).Where(NotServiceAccountFilter(ss)).Get(&usr)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
} else if !has {
|
||||
return user.ErrUserNotFound
|
||||
}
|
||||
|
||||
query.Result = models.UserProfileDTO{
|
||||
Id: usr.ID,
|
||||
Name: usr.Name,
|
||||
Email: usr.Email,
|
||||
Login: usr.Login,
|
||||
Theme: usr.Theme,
|
||||
IsGrafanaAdmin: usr.IsAdmin,
|
||||
IsDisabled: usr.IsDisabled,
|
||||
OrgId: usr.OrgID,
|
||||
UpdatedAt: usr.Updated,
|
||||
CreatedAt: usr.Created,
|
||||
}
|
||||
|
||||
return err
|
||||
})
|
||||
}
|
||||
|
||||
type byOrgName []*models.UserOrgDTO
|
||||
|
||||
// Len returns the length of an array of organisations.
|
||||
|
||||
@@ -1,130 +0,0 @@
|
||||
package sqlstore
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
"github.com/grafana/grafana/pkg/services/user"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestIntegrationUserDataAccess(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("skipping integration test")
|
||||
}
|
||||
ss := InitTestDB(t)
|
||||
|
||||
t.Run("Testing DB - creates and loads disabled user", func(t *testing.T) {
|
||||
ss = InitTestDB(t)
|
||||
cmd := user.CreateUserCommand{
|
||||
Email: "usertest@test.com",
|
||||
Name: "user name",
|
||||
Login: "user_test_login",
|
||||
IsDisabled: true,
|
||||
}
|
||||
|
||||
user, err := ss.CreateUser(context.Background(), cmd)
|
||||
require.Nil(t, err)
|
||||
|
||||
query := models.GetUserByIdQuery{Id: user.ID}
|
||||
err = ss.GetUserById(context.Background(), &query)
|
||||
require.Nil(t, err)
|
||||
|
||||
require.Equal(t, query.Result.Email, "usertest@test.com")
|
||||
require.Equal(t, query.Result.Password, "")
|
||||
require.Len(t, query.Result.Rands, 10)
|
||||
require.Len(t, query.Result.Salt, 10)
|
||||
require.True(t, query.Result.IsDisabled)
|
||||
})
|
||||
|
||||
t.Run("Testing DB - create user assigned to other organization", func(t *testing.T) {
|
||||
ss = InitTestDB(t)
|
||||
|
||||
autoAssignOrg := ss.Cfg.AutoAssignOrg
|
||||
ss.Cfg.AutoAssignOrg = true
|
||||
defer func() {
|
||||
ss.Cfg.AutoAssignOrg = autoAssignOrg
|
||||
}()
|
||||
|
||||
orgCmd := &models.CreateOrgCommand{Name: "Some Test Org"}
|
||||
err := ss.CreateOrg(context.Background(), orgCmd)
|
||||
require.Nil(t, err)
|
||||
|
||||
cmd := user.CreateUserCommand{
|
||||
Email: "usertest@test.com",
|
||||
Name: "user name",
|
||||
Login: "user_test_login",
|
||||
OrgID: orgCmd.Result.Id,
|
||||
}
|
||||
|
||||
usr, err := ss.CreateUser(context.Background(), cmd)
|
||||
require.Nil(t, err)
|
||||
|
||||
query := models.GetUserByIdQuery{Id: usr.ID}
|
||||
err = ss.GetUserById(context.Background(), &query)
|
||||
require.Nil(t, err)
|
||||
|
||||
require.Equal(t, query.Result.Email, "usertest@test.com")
|
||||
require.Equal(t, query.Result.Password, "")
|
||||
require.Len(t, query.Result.Rands, 10)
|
||||
require.Len(t, query.Result.Salt, 10)
|
||||
require.False(t, query.Result.IsDisabled)
|
||||
require.Equal(t, query.Result.OrgID, orgCmd.Result.Id)
|
||||
|
||||
const nonExistingOrgID = 10000
|
||||
cmd = user.CreateUserCommand{
|
||||
Email: "usertest@test.com",
|
||||
Name: "user name",
|
||||
Login: "user_test_login",
|
||||
OrgID: nonExistingOrgID,
|
||||
}
|
||||
|
||||
_, err = ss.CreateUser(context.Background(), cmd)
|
||||
require.Equal(t, err, models.ErrOrgNotFound)
|
||||
})
|
||||
|
||||
ss = InitTestDB(t)
|
||||
|
||||
t.Run("Testing DB - search users", func(t *testing.T) {
|
||||
// Since previous tests were destructive
|
||||
createFiveTestUsers(t, ss, func(i int) *user.CreateUserCommand {
|
||||
return &user.CreateUserCommand{
|
||||
Email: fmt.Sprint("user", i, "@test.com"),
|
||||
Name: fmt.Sprint("user", i),
|
||||
Login: fmt.Sprint("loginuser", i),
|
||||
IsDisabled: false,
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
func (ss *SQLStore) GetOrgUsersForTest(ctx context.Context, query *models.GetOrgUsersQuery) error {
|
||||
return ss.WithDbSession(ctx, func(dbSess *DBSession) error {
|
||||
query.Result = make([]*models.OrgUserDTO, 0)
|
||||
sess := dbSess.Table("org_user")
|
||||
sess.Join("LEFT ", ss.Dialect.Quote("user"), fmt.Sprintf("org_user.user_id=%s.id", ss.Dialect.Quote("user")))
|
||||
sess.Where("org_user.org_id=?", query.OrgId)
|
||||
sess.Cols("org_user.org_id", "org_user.user_id", "user.email", "user.login", "org_user.role")
|
||||
|
||||
err := sess.Find(&query.Result)
|
||||
return err
|
||||
})
|
||||
}
|
||||
|
||||
func createFiveTestUsers(t *testing.T, sqlStore *SQLStore, fn func(i int) *user.CreateUserCommand) []user.User {
|
||||
t.Helper()
|
||||
|
||||
users := []user.User{}
|
||||
for i := 0; i < 5; i++ {
|
||||
cmd := fn(i)
|
||||
|
||||
user, err := sqlStore.CreateUser(context.Background(), *cmd)
|
||||
users = append(users, *user)
|
||||
|
||||
require.Nil(t, err)
|
||||
}
|
||||
|
||||
return users
|
||||
}
|
||||
Reference in New Issue
Block a user