User: support setting org and help flags though update function (#86535)
* User: Support setting active org through update function * User: add support to update help flags through update function
This commit is contained in:
@@ -27,81 +27,6 @@ func TestMain(m *testing.M) {
|
||||
testsuite.Run(m)
|
||||
}
|
||||
|
||||
func TestIntegrationUserGet(t *testing.T) {
|
||||
testCases := []struct {
|
||||
name string
|
||||
wantErr error
|
||||
searchLogin string
|
||||
searchEmail string
|
||||
}{
|
||||
{
|
||||
name: "user found non exact",
|
||||
wantErr: nil,
|
||||
searchLogin: "test",
|
||||
searchEmail: "Test@email.com",
|
||||
},
|
||||
{
|
||||
name: "user found exact",
|
||||
wantErr: nil,
|
||||
searchLogin: "test",
|
||||
searchEmail: "test@email.com",
|
||||
},
|
||||
{
|
||||
name: "user found exact - case insensitive",
|
||||
wantErr: nil,
|
||||
searchLogin: "Test",
|
||||
searchEmail: "Test@email.com",
|
||||
},
|
||||
{
|
||||
name: "user not found - case insensitive",
|
||||
wantErr: user.ErrUserNotFound,
|
||||
searchLogin: "Test_login",
|
||||
searchEmail: "Test*@email.com",
|
||||
},
|
||||
}
|
||||
|
||||
if testing.Short() {
|
||||
t.Skip("skipping integration test")
|
||||
}
|
||||
|
||||
ss, cfg := db.InitTestDBWithCfg(t)
|
||||
userStore := ProvideStore(ss, cfg)
|
||||
|
||||
_, errUser := userStore.Insert(context.Background(),
|
||||
&user.User{
|
||||
Email: "test@email.com",
|
||||
Name: "test",
|
||||
Login: "test",
|
||||
Created: time.Now(),
|
||||
Updated: time.Now(),
|
||||
},
|
||||
)
|
||||
require.NoError(t, errUser)
|
||||
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
if db.IsTestDbMySQL() {
|
||||
t.Skip("mysql is always case insensitive")
|
||||
}
|
||||
usr, err := userStore.Get(context.Background(),
|
||||
&user.User{
|
||||
Email: tc.searchEmail,
|
||||
Login: tc.searchLogin,
|
||||
},
|
||||
)
|
||||
|
||||
if tc.wantErr != nil {
|
||||
require.Error(t, err)
|
||||
require.Nil(t, usr)
|
||||
} else {
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, usr)
|
||||
require.NotEmpty(t, usr.UID)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestIntegrationUserDataAccess(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("skipping integration test")
|
||||
@@ -120,12 +45,8 @@ func TestIntegrationUserDataAccess(t *testing.T) {
|
||||
}
|
||||
|
||||
t.Run("user not found", func(t *testing.T) {
|
||||
_, err := userStore.Get(context.Background(),
|
||||
&user.User{
|
||||
Email: "test@email.com",
|
||||
Name: "test1",
|
||||
Login: "test1",
|
||||
},
|
||||
_, err := userStore.GetByEmail(context.Background(),
|
||||
&user.GetUserByEmailQuery{Email: "test@email.com"},
|
||||
)
|
||||
require.Error(t, err, user.ErrUserNotFound)
|
||||
})
|
||||
@@ -143,6 +64,13 @@ func TestIntegrationUserDataAccess(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("get user", func(t *testing.T) {
|
||||
_, err := userStore.GetByEmail(context.Background(),
|
||||
&user.GetUserByEmailQuery{Email: "test@email.com"},
|
||||
)
|
||||
require.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("insert user (with known UID)", func(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
id, err := userStore.Insert(ctx,
|
||||
@@ -169,17 +97,6 @@ func TestIntegrationUserDataAccess(t *testing.T) {
|
||||
require.Equal(t, "abcd", siu.UserUID)
|
||||
})
|
||||
|
||||
t.Run("get user", func(t *testing.T) {
|
||||
_, err := userStore.Get(context.Background(),
|
||||
&user.User{
|
||||
Email: "test@email.com",
|
||||
Name: "test1",
|
||||
Login: "test1",
|
||||
},
|
||||
)
|
||||
require.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("Testing DB - creates and loads user", func(t *testing.T) {
|
||||
ss := db.InitTestDB(t)
|
||||
_, usrSvc := createOrgAndUserSvc(t, ss, cfg)
|
||||
@@ -458,15 +375,6 @@ func TestIntegrationUserDataAccess(t *testing.T) {
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("update user", func(t *testing.T) {
|
||||
err := userStore.UpdateUser(context.Background(), &user.User{ID: 1, Name: "testtestest", Login: "loginloginlogin"})
|
||||
require.NoError(t, err)
|
||||
result, err := userStore.GetByID(context.Background(), 1)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, result.Name, "testtestest")
|
||||
assert.Equal(t, result.Login, "loginloginlogin")
|
||||
})
|
||||
|
||||
t.Run("Testing DB - grafana admin users", func(t *testing.T) {
|
||||
ss := db.InitTestDB(t)
|
||||
_, usrSvc := createOrgAndUserSvc(t, ss, cfg)
|
||||
@@ -483,7 +391,7 @@ func TestIntegrationUserDataAccess(t *testing.T) {
|
||||
UserID: usr.ID,
|
||||
IsGrafanaAdmin: boolPtr(false),
|
||||
})
|
||||
require.ErrorIs(t, user.ErrLastGrafanaAdmin, err)
|
||||
require.ErrorIs(t, err, user.ErrLastGrafanaAdmin)
|
||||
|
||||
usr, err = userStore.GetByID(context.Background(), usr.ID)
|
||||
require.NoError(t, err)
|
||||
@@ -518,9 +426,28 @@ func TestIntegrationUserDataAccess(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("SetHelpFlag", func(t *testing.T) {
|
||||
err := userStore.SetHelpFlag(context.Background(), &user.SetUserHelpFlagCommand{UserID: 1, HelpFlags1: user.HelpFlags1(1)})
|
||||
t.Run("Update HelpFlags", func(t *testing.T) {
|
||||
id, err := userStore.Insert(context.Background(), &user.User{
|
||||
Email: "help@test.com",
|
||||
Name: "help",
|
||||
Login: "help",
|
||||
Updated: time.Now(),
|
||||
Created: time.Now(),
|
||||
LastSeenAt: time.Now(),
|
||||
})
|
||||
require.NoError(t, err)
|
||||
original, err := userStore.GetByID(context.Background(), id)
|
||||
require.NoError(t, err)
|
||||
|
||||
helpflags := user.HelpFlags1(1)
|
||||
err = userStore.Update(context.Background(), &user.UpdateUserCommand{UserID: id, HelpFlags1: &helpflags})
|
||||
require.NoError(t, err)
|
||||
|
||||
got, err := userStore.GetByID(context.Background(), id)
|
||||
require.NoError(t, err)
|
||||
|
||||
original.HelpFlags1 = helpflags
|
||||
assertEqualUser(t, original, got)
|
||||
})
|
||||
|
||||
t.Run("Testing DB - return list users based on their is_disabled flag", func(t *testing.T) {
|
||||
@@ -1013,6 +940,18 @@ func TestMetricsUsage(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func assertEqualUser(t *testing.T, expected, got *user.User) {
|
||||
// zero out time fields
|
||||
expected.Updated = time.Time{}
|
||||
expected.Created = time.Time{}
|
||||
expected.LastSeenAt = time.Time{}
|
||||
got.Updated = time.Time{}
|
||||
got.Created = time.Time{}
|
||||
got.LastSeenAt = time.Time{}
|
||||
|
||||
assert.Equal(t, expected, got)
|
||||
}
|
||||
|
||||
func createOrgAndUserSvc(t *testing.T, store db.DB, cfg *setting.Cfg) (org.Service, user.Service) {
|
||||
t.Helper()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user