Users: Enable case insensitive login by default (#66134)

* enable case insensitive by default

* fix missing case-insensitive query

* fix missing case insensitive query

* fix missing case insensitive query in temp_user

* skip integration testing in mysql

* skip integration testing in mysql

* use t.cleanup

* lowercase only once

* aligned to only using sql as that is what we do in other parts

---------

Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
This commit is contained in:
Jo
2023-04-28 16:38:58 +01:00
committed by GitHub
co-authored by Eric Leijonmarck
parent 7448427739
commit 8df54a6daa
6 changed files with 138 additions and 8 deletions
@@ -15,7 +15,7 @@ func TestIntegrationTempUserCommandsAndQueries(t *testing.T) {
if testing.Short() {
t.Skip("skipping integration test")
}
var store store
var store *xormStore
var tempUser *tempuser.TempUser
var err error
cmd := tempuser.CreateTempUserCommand{
@@ -27,7 +27,7 @@ func TestIntegrationTempUserCommandsAndQueries(t *testing.T) {
}
setup := func(t *testing.T) {
db := db.InitTestDB(t)
store = &xormStore{db: db}
store = &xormStore{db: db, cfg: db.Cfg}
tempUser, err = store.CreateTempUser(context.Background(), &cmd)
require.Nil(t, err)
}
@@ -56,6 +56,31 @@ func TestIntegrationTempUserCommandsAndQueries(t *testing.T) {
require.Nil(t, err)
require.Equal(t, 1, len(queryResult))
})
t.Run("Should not be able to get temp users by case-insentive email - case sensitive", func(t *testing.T) {
if db.IsTestDbMySQL() {
t.Skip("MySQL is case insensitive by default")
}
setup(t)
store.cfg.CaseInsensitiveLogin = false
query := tempuser.GetTempUsersQuery{Email: "E@as.co", Status: tempuser.TmpUserInvitePending}
queryResult, err := store.GetTempUsersQuery(context.Background(), &query)
require.Nil(t, err)
require.Equal(t, 0, len(queryResult))
})
t.Run("Should be able to get temp users by email - case insensitive", func(t *testing.T) {
setup(t)
store.cfg.CaseInsensitiveLogin = true
query := tempuser.GetTempUsersQuery{Email: "E@as.co", Status: tempuser.TmpUserInvitePending}
queryResult, err := store.GetTempUsersQuery(context.Background(), &query)
require.Nil(t, err)
require.Equal(t, 1, len(queryResult))
t.Cleanup(func() {
store.cfg.CaseInsensitiveLogin = false
})
})
t.Run("Should be able to get temp users by code", func(t *testing.T) {
setup(t)