коммит произвёл
GitHub
родитель
219bcf218b
Коммит
2b038db6ad
@@ -2278,7 +2278,9 @@ func (a *App) RemoveUserFromChannel(userIDToRemove string, removerUserId string,
|
||||
}
|
||||
|
||||
if userIDToRemove == removerUserId {
|
||||
a.postLeaveChannelMessage(user, channel)
|
||||
if err := a.postLeaveChannelMessage(user, channel); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
a.Srv().Go(func() {
|
||||
a.postRemoveFromChannelMessage(removerUserId, user, channel)
|
||||
|
||||
@@ -86,29 +86,21 @@ func desanitize(actual, target *model.Config) {
|
||||
}
|
||||
}
|
||||
|
||||
// fixConfig patches invalid or missing data in the configuration, returning true if changed.
|
||||
func fixConfig(cfg *model.Config) bool {
|
||||
changed := false
|
||||
|
||||
// fixConfig patches invalid or missing data in the configuration.
|
||||
func fixConfig(cfg *model.Config) {
|
||||
// Ensure SiteURL has no trailing slash.
|
||||
if strings.HasSuffix(*cfg.ServiceSettings.SiteURL, "/") {
|
||||
*cfg.ServiceSettings.SiteURL = strings.TrimRight(*cfg.ServiceSettings.SiteURL, "/")
|
||||
changed = true
|
||||
}
|
||||
|
||||
// Ensure the directory for a local file store has a trailing slash.
|
||||
if *cfg.FileSettings.DriverName == model.IMAGE_DRIVER_LOCAL {
|
||||
if *cfg.FileSettings.Directory != "" && !strings.HasSuffix(*cfg.FileSettings.Directory, "/") {
|
||||
*cfg.FileSettings.Directory += "/"
|
||||
changed = true
|
||||
}
|
||||
}
|
||||
|
||||
if FixInvalidLocales(cfg) {
|
||||
changed = true
|
||||
}
|
||||
|
||||
return changed
|
||||
FixInvalidLocales(cfg)
|
||||
}
|
||||
|
||||
// FixInvalidLocales checks and corrects the given config for invalid locale-related settings.
|
||||
|
||||
@@ -92,17 +92,17 @@ func (th *SearchTestHelper) SetupBasicFixtures() error {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = th.addUserToChannels(user, []string{channelBasic.Id, channelPrivate.Id, channelDeleted.Id})
|
||||
err = th.addUserToChannels(user, []string{channelBasic.Id, channelPrivate.Id, channelDeleted.Id})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = th.addUserToChannels(user2, []string{channelPrivate.Id, channelDeleted.Id})
|
||||
err = th.addUserToChannels(user2, []string{channelPrivate.Id, channelDeleted.Id})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = th.addUserToChannels(useranother, []string{channelAnotherTeam.Id})
|
||||
err = th.addUserToChannels(useranother, []string{channelAnotherTeam.Id})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -305,7 +305,7 @@ func (th *SearchTestHelper) createGroupChannel(teamID, displayName string, users
|
||||
}
|
||||
|
||||
for _, user := range users {
|
||||
_, err := th.addUserToChannels(user, []string{channel.Id})
|
||||
err := th.addUserToChannels(user, []string{channel.Id})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -415,22 +415,19 @@ func (th *SearchTestHelper) addUserToTeams(user *model.User, teamIDS []string) e
|
||||
return nil
|
||||
}
|
||||
|
||||
func (th *SearchTestHelper) addUserToChannels(user *model.User, channelIDS []string) ([]*model.ChannelMember, error) {
|
||||
|
||||
channelMembers := make([]*model.ChannelMember, len(channelIDS))
|
||||
func (th *SearchTestHelper) addUserToChannels(user *model.User, channelIDS []string) error {
|
||||
for _, channelID := range channelIDS {
|
||||
cm, err := th.Store.Channel().SaveMember(&model.ChannelMember{
|
||||
_, err := th.Store.Channel().SaveMember(&model.ChannelMember{
|
||||
ChannelId: channelID,
|
||||
UserId: user.Id,
|
||||
NotifyProps: model.GetDefaultChannelNotifyProps(),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, errors.New(err.Error())
|
||||
return errors.New(err.Error())
|
||||
}
|
||||
channelMembers = append(channelMembers, cm)
|
||||
}
|
||||
|
||||
return channelMembers, nil
|
||||
return nil
|
||||
}
|
||||
|
||||
func (th *SearchTestHelper) assertUsersMatchInAnyOrder(t *testing.T, expected, actual []*model.User) {
|
||||
|
||||
@@ -212,13 +212,13 @@ func testHonorChannelRestrictionsAutocompletingUsers(t *testing.T, th *SearchTes
|
||||
defer th.deleteUser(userAlternate)
|
||||
err = th.addUserToTeams(userAlternate, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
guest, err := th.createGuest("guest", "guest", "guest", "one")
|
||||
require.NoError(t, err)
|
||||
err = th.addUserToTeams(guest, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(guest, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(guest, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
defer th.deleteUser(guest)
|
||||
t.Run("Autocomplete users with channel restrictions", func(t *testing.T) {
|
||||
@@ -317,7 +317,7 @@ func testAutocompleteUserByUsername(t *testing.T, th *SearchTestHelper) {
|
||||
defer th.deleteUser(userAlternate)
|
||||
err = th.addUserToTeams(userAlternate, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
options := createDefaultOptions(false, false, false)
|
||||
users, err := th.Store.User().AutocompleteUsersInChannel(th.Team.Id, th.ChannelBasic.Id, "basicusername", options)
|
||||
@@ -331,7 +331,7 @@ func testAutocompleteUserByFirstName(t *testing.T, th *SearchTestHelper) {
|
||||
defer th.deleteUser(userAlternate)
|
||||
err = th.addUserToTeams(userAlternate, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
t.Run("Should autocomplete users when the first name is unique", func(t *testing.T) {
|
||||
options := createDefaultOptions(true, false, false)
|
||||
@@ -354,7 +354,7 @@ func testAutocompleteUserByLastName(t *testing.T, th *SearchTestHelper) {
|
||||
defer th.deleteUser(userAlternate)
|
||||
err = th.addUserToTeams(userAlternate, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
t.Run("Should return results when the last name is unique", func(t *testing.T) {
|
||||
options := createDefaultOptions(true, false, false)
|
||||
@@ -377,7 +377,7 @@ func testAutocompleteUserByNickName(t *testing.T, th *SearchTestHelper) {
|
||||
defer th.deleteUser(userAlternate)
|
||||
err = th.addUserToTeams(userAlternate, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
t.Run("Should return results when the nickname is unique", func(t *testing.T) {
|
||||
options := createDefaultOptions(true, false, false)
|
||||
@@ -403,7 +403,7 @@ func testAutocompleteUserByEmail(t *testing.T, th *SearchTestHelper) {
|
||||
defer th.deleteUser(userAlternate)
|
||||
err = th.addUserToTeams(userAlternate, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
t.Run("Should autocomplete users when the email is unique", func(t *testing.T) {
|
||||
options := createDefaultOptions(false, true, false)
|
||||
@@ -458,7 +458,7 @@ func testAutocompleteUserByUsernameWithDot(t *testing.T, th *SearchTestHelper) {
|
||||
defer th.deleteUser(userAlternate)
|
||||
err = th.addUserToTeams(userAlternate, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
t.Run("Should return results when searching for the whole username with Dot", func(t *testing.T) {
|
||||
options := createDefaultOptions(false, false, false)
|
||||
@@ -488,7 +488,7 @@ func testAutocompleteUserByUsernameWithUnderscore(t *testing.T, th *SearchTestHe
|
||||
defer th.deleteUser(userAlternate)
|
||||
err = th.addUserToTeams(userAlternate, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
t.Run("Should return results when searching for the whole username with underscore", func(t *testing.T) {
|
||||
options := createDefaultOptions(false, false, false)
|
||||
@@ -518,7 +518,7 @@ func testAutocompleteUserByUsernameWithHyphen(t *testing.T, th *SearchTestHelper
|
||||
defer th.deleteUser(userAlternate)
|
||||
err = th.addUserToTeams(userAlternate, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
t.Run("Should return results when searching for the whole username with hyphen", func(t *testing.T) {
|
||||
options := createDefaultOptions(false, false, false)
|
||||
@@ -549,7 +549,7 @@ func testShouldEscapePercentageCharacter(t *testing.T, th *SearchTestHelper) {
|
||||
defer th.deleteUser(userAlternate)
|
||||
err = th.addUserToTeams(userAlternate, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
t.Run("Should autocomplete users escaping percentage symbol", func(t *testing.T) {
|
||||
options := createDefaultOptions(false, false, false)
|
||||
@@ -571,7 +571,7 @@ func testShouldEscapeUnderscoreCharacter(t *testing.T, th *SearchTestHelper) {
|
||||
defer th.deleteUser(userAlternate)
|
||||
err = th.addUserToTeams(userAlternate, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
t.Run("Should autocomplete users escaping underscore symbol", func(t *testing.T) {
|
||||
options := createDefaultOptions(false, false, false)
|
||||
@@ -597,7 +597,7 @@ func testShouldBeAbleToSearchInactiveUsers(t *testing.T, th *SearchTestHelper) {
|
||||
defer th.deleteUser(userAlternate)
|
||||
err = th.addUserToTeams(userAlternate, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
t.Run("Should autocomplete inactive users if we allow it", func(t *testing.T) {
|
||||
options := createDefaultOptions(false, false, true)
|
||||
@@ -644,7 +644,7 @@ func testShouldBeAbleToSearchFilteringByRole(t *testing.T, th *SearchTestHelper)
|
||||
require.NoError(t, err)
|
||||
err = th.addUserToTeams(userAlternate2, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
t.Run("Should autocomplete users filtering by roles", func(t *testing.T) {
|
||||
options := createDefaultOptions(false, false, true)
|
||||
@@ -694,7 +694,7 @@ func testSearchOneTwoCharUsersnameAndFirstLastNames(t *testing.T, th *SearchTest
|
||||
defer th.deleteUser(userAlternate)
|
||||
err = th.addUserToTeams(userAlternate, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
t.Run("Should support two characters in the full name", func(t *testing.T) {
|
||||
options := createDefaultOptions(true, false, false)
|
||||
@@ -719,7 +719,7 @@ func testShouldSupportKoreanCharacters(t *testing.T, th *SearchTestHelper) {
|
||||
|
||||
err = th.addUserToTeams(userAlternate, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
t.Run("Should support hanja korean characters", func(t *testing.T) {
|
||||
options := createDefaultOptions(true, false, false)
|
||||
@@ -743,7 +743,7 @@ func testSearchWithHyphenAtTheEndOfTheTerm(t *testing.T, th *SearchTestHelper) {
|
||||
defer th.deleteUser(userAlternate)
|
||||
err = th.addUserToTeams(userAlternate, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
options := createDefaultOptions(true, false, false)
|
||||
users, err := th.Store.User().AutocompleteUsersInChannel(th.Team.Id, th.ChannelBasic.Id, "alternate-", options)
|
||||
@@ -808,7 +808,7 @@ func testSearchUsersInTeamUsernameWithDot(t *testing.T, th *SearchTestHelper) {
|
||||
defer th.deleteUser(userAlternate)
|
||||
err = th.addUserToTeams(userAlternate, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
options := createDefaultOptions(true, false, false)
|
||||
users, err := th.Store.User().Search(th.Team.Id, "alternate.", options)
|
||||
@@ -822,7 +822,7 @@ func testSearchUsersInTeamUsernameWithHyphen(t *testing.T, th *SearchTestHelper)
|
||||
defer th.deleteUser(userAlternate)
|
||||
err = th.addUserToTeams(userAlternate, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
options := createDefaultOptions(true, false, false)
|
||||
users, err := th.Store.User().Search(th.Team.Id, "alternate-", options)
|
||||
@@ -836,7 +836,7 @@ func testSearchUsersInTeamUsernameWithUnderscore(t *testing.T, th *SearchTestHel
|
||||
defer th.deleteUser(userAlternate)
|
||||
err = th.addUserToTeams(userAlternate, []string{th.Team.Id})
|
||||
require.NoError(t, err)
|
||||
_, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id})
|
||||
require.NoError(t, err)
|
||||
options := createDefaultOptions(true, false, false)
|
||||
users, err := th.Store.User().Search(th.Team.Id, "alternate_", options)
|
||||
|
||||
Ссылка в новой задаче
Block a user