[MM-37898] Exclude bots from initial user store emptiness check (#18139)
* Exclude bots from initial user store emptiness check * Add test
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
cbba2f1cca
Коммит
308a88efb1
@@ -43,7 +43,7 @@ func (us *UserService) CreateUser(user *model.User, opts UserCreateOptions) (*mo
|
||||
|
||||
// Below is a special case where the first user in the entire
|
||||
// system is granted the system_admin role
|
||||
if ok, err := us.store.IsEmpty(); err != nil {
|
||||
if ok, err := us.store.IsEmpty(true); err != nil {
|
||||
return nil, errors.Wrap(UserStoreIsEmptyError, err.Error())
|
||||
} else if ok {
|
||||
user.Roles = model.SystemAdminRoleId + " " + model.SystemUserRoleId
|
||||
|
||||
@@ -5,6 +5,10 @@ package users
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/model"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestIsUsernameTaken(t *testing.T) {
|
||||
@@ -27,3 +31,59 @@ func TestIsUsernameTaken(t *testing.T) {
|
||||
t.FailNow()
|
||||
}
|
||||
}
|
||||
|
||||
func TestFirstUserPromoted(t *testing.T) {
|
||||
th := Setup(t)
|
||||
defer th.TearDown()
|
||||
|
||||
user, err := th.service.CreateUser(&model.User{
|
||||
Username: model.NewId(),
|
||||
Password: model.NewId(),
|
||||
Email: "user@example.com",
|
||||
}, UserCreateOptions{})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, user)
|
||||
|
||||
require.Equal(t, model.SystemAdminRoleId+" "+model.SystemUserRoleId, user.Roles)
|
||||
|
||||
user2, err := th.service.CreateUser(&model.User{
|
||||
Username: model.NewId(),
|
||||
Password: model.NewId(),
|
||||
Email: "user2@example.com",
|
||||
}, UserCreateOptions{})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, user2)
|
||||
|
||||
require.Equal(t, model.SystemUserRoleId, user2.Roles)
|
||||
|
||||
th.dbStore.User().PermanentDelete(user.Id)
|
||||
|
||||
b := &model.Bot{
|
||||
UserId: user2.Id,
|
||||
OwnerId: model.NewId(),
|
||||
Username: model.NewId(),
|
||||
}
|
||||
|
||||
_, err = th.dbStore.Bot().Save(b)
|
||||
require.NoError(t, err)
|
||||
|
||||
user3, err := th.service.CreateUser(&model.User{
|
||||
Username: model.NewId(),
|
||||
Password: model.NewId(),
|
||||
Email: "user3@example.com",
|
||||
}, UserCreateOptions{})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, user3)
|
||||
|
||||
require.Equal(t, model.SystemAdminRoleId+" "+model.SystemUserRoleId, user3.Roles)
|
||||
|
||||
user4, err := th.service.CreateUser(&model.User{
|
||||
Username: model.NewId(),
|
||||
Password: model.NewId(),
|
||||
Email: "user4@example.com",
|
||||
}, UserCreateOptions{})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, user4)
|
||||
|
||||
require.Equal(t, model.SystemUserRoleId, user4.Roles)
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user