mirror of
https://github.com/grafana/grafana.git
synced 2025-02-12 00:25:46 -06:00
* Copy sqlstore methods to suer store * Adjust ProvideService signatures in test * Add xorm tags and tests for search * Remove methods from sqlstore * fix lint in tests
131 lines
3.5 KiB
Go
131 lines
3.5 KiB
Go
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
|
|
}
|