MM-30041: Return correct error message for user save (#16117)
* MM-30041: Return correct error message for user save We were collapsing all types of user conflict into a single error message. Fixed it by inspecting the field of the invalidError type and returning the correct message. https://mattermost.atlassian.net/browse/MM-30041 ```release-note NONE ``` * Fix test errors * Fix wrong message in test when comparing error messages Co-authored-by: Rodrigo Villablanca <villa061004@gmail.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
1aadd36644
Коммит
325bff1176
@@ -6,6 +6,7 @@ package app
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"image"
|
||||
"image/color"
|
||||
"strings"
|
||||
@@ -18,6 +19,7 @@ import (
|
||||
"github.com/mattermost/mattermost-server/v5/einterfaces"
|
||||
"github.com/mattermost/mattermost-server/v5/model"
|
||||
oauthgitlab "github.com/mattermost/mattermost-server/v5/model/gitlab"
|
||||
"github.com/mattermost/mattermost-server/v5/store"
|
||||
"github.com/mattermost/mattermost-server/v5/utils/testutils"
|
||||
)
|
||||
|
||||
@@ -361,6 +363,46 @@ func TestUpdateOAuthUserAttrs(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func TestCreateUserConflict(t *testing.T) {
|
||||
th := Setup(t)
|
||||
defer th.TearDown()
|
||||
|
||||
user := &model.User{
|
||||
Email: "test@localhost",
|
||||
Username: model.NewId(),
|
||||
}
|
||||
user, err := th.App.Srv().Store.User().Save(user)
|
||||
require.NoError(t, err)
|
||||
username := user.Username
|
||||
|
||||
var invErr *store.ErrInvalidInput
|
||||
// Same id
|
||||
_, err = th.App.Srv().Store.User().Save(user)
|
||||
require.Error(t, err)
|
||||
require.True(t, errors.As(err, &invErr))
|
||||
assert.Equal(t, "id", invErr.Field)
|
||||
|
||||
// Same email
|
||||
user = &model.User{
|
||||
Email: "test@localhost",
|
||||
Username: model.NewId(),
|
||||
}
|
||||
_, err = th.App.Srv().Store.User().Save(user)
|
||||
require.Error(t, err)
|
||||
require.True(t, errors.As(err, &invErr))
|
||||
assert.Equal(t, "email", invErr.Field)
|
||||
|
||||
// Same username
|
||||
user = &model.User{
|
||||
Email: "test2@localhost",
|
||||
Username: username,
|
||||
}
|
||||
_, err = th.App.Srv().Store.User().Save(user)
|
||||
require.Error(t, err)
|
||||
require.True(t, errors.As(err, &invErr))
|
||||
assert.Equal(t, "username", invErr.Field)
|
||||
}
|
||||
|
||||
func TestUpdateUserEmail(t *testing.T) {
|
||||
th := Setup(t)
|
||||
defer th.TearDown()
|
||||
|
||||
Ссылка в новой задаче
Block a user