From 877e1b7f9ae59b840eafa082e6fe1c64e1db637b Mon Sep 17 00:00:00 2001 From: George Goldberg Date: Thu, 22 Nov 2018 11:19:47 +0000 Subject: [PATCH] MM-12957: Fix moving a channel with no members. (#9841) --- app/channel.go | 14 ++++++++------ app/channel_test.go | 21 +++++++++++++++++++-- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/app/channel.go b/app/channel.go index 6e4f1b103a..318ceb10cf 100644 --- a/app/channel.go +++ b/app/channel.go @@ -1709,13 +1709,15 @@ func (a *App) MoveChannel(team *model.Team, channel *model.Channel, user *model. channelMemberIds = append(channelMemberIds, channelMember.UserId) } - teamMembers, err2 := a.GetTeamMembersByIds(team.Id, channelMemberIds) - if err2 != nil { - return err2 - } + if len(channelMemberIds) > 0 { + teamMembers, err2 := a.GetTeamMembersByIds(team.Id, channelMemberIds) + if err2 != nil { + return err2 + } - if len(teamMembers) != len(*channelMembers) { - return model.NewAppError("MoveChannel", "app.channel.move_channel.members_do_not_match.error", nil, "", http.StatusInternalServerError) + if len(teamMembers) != len(*channelMembers) { + return model.NewAppError("MoveChannel", "app.channel.move_channel.members_do_not_match.error", nil, "", http.StatusInternalServerError) + } } // keep instance of the previous team diff --git a/app/channel_test.go b/app/channel_test.go index 9acf8a709d..d31318fe3d 100644 --- a/app/channel_test.go +++ b/app/channel_test.go @@ -8,10 +8,11 @@ import ( "strings" "testing" - "github.com/mattermost/mattermost-server/model" - "github.com/mattermost/mattermost-server/store" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + + "github.com/mattermost/mattermost-server/model" + "github.com/mattermost/mattermost-server/store" ) func TestPermanentDeleteChannel(t *testing.T) { @@ -138,6 +139,22 @@ func TestMoveChannel(t *testing.T) { if err := th.App.MoveChannel(targetTeam, channel2, th.BasicUser, true); err != nil { t.Fatal(err) } + + // Test moving a channel with no members. + channel3 := &model.Channel{ + DisplayName: "dn_" + model.NewId(), + Name: "name_" + model.NewId(), + Type: model.CHANNEL_OPEN, + TeamId: sourceTeam.Id, + CreatorId: th.BasicUser.Id, + } + + var err *model.AppError + channel3, err = th.App.CreateChannel(channel3, false) + require.Nil(t, err) + + err = th.App.MoveChannel(targetTeam, channel3, th.BasicUser, false) + assert.Nil(t, err) } func TestJoinDefaultChannelsCreatesChannelMemberHistoryRecordTownSquare(t *testing.T) {