MM-19337 Enable users to view archived channels (#12995)
* First pass at searching archived channels * Create endpoint for archived channels * Update test for GetPublicChannelsForTeam * Fix unit test for archived channels * Rename includeDeleted to onlyDeleted * Remove new /archived endpoint in favour of existing /deleted endpoint * Fix broken test * Remove manage team permission from /deleted endpoint * Fix deletedChannels test * Test for searching archived channels * Only return private deleted channels user was a member of * SearchArchivedChannels also searches private channels (user is a member of) * Remove for loop to simplify append * Remove userId from Client4 searcArchivedChannels
Этот коммит содержится в:
коммит произвёл
Saturnino Abril
родитель
1930cc6a11
Коммит
36f3b14420
@@ -678,9 +678,6 @@ func TestGetDeletedChannelsForTeam(t *testing.T) {
|
||||
Client := th.Client
|
||||
team := th.BasicTeam
|
||||
|
||||
_, resp := Client.GetDeletedChannelsForTeam(team.Id, 0, 100, "")
|
||||
CheckForbiddenStatus(t, resp)
|
||||
|
||||
th.LoginTeamAdmin()
|
||||
|
||||
channels, resp := Client.GetDeletedChannelsForTeam(team.Id, 0, 100, "")
|
||||
@@ -706,6 +703,31 @@ func TestGetDeletedChannelsForTeam(t *testing.T) {
|
||||
t.Fatal("should be 2 deleted channels")
|
||||
}
|
||||
|
||||
th.LoginBasic()
|
||||
|
||||
privateChannel1 := th.CreatePrivateChannel()
|
||||
Client.DeleteChannel(privateChannel1.Id)
|
||||
|
||||
channels, resp = Client.GetDeletedChannelsForTeam(team.Id, 0, 100, "")
|
||||
CheckNoError(t, resp)
|
||||
if len(channels) != numInitialChannelsForTeam+3 {
|
||||
t.Fatal("should be 3 deleted channels")
|
||||
}
|
||||
|
||||
// Login as different user and create private channel
|
||||
th.LoginBasic2()
|
||||
privateChannel2 := th.CreatePrivateChannel()
|
||||
Client.DeleteChannel(privateChannel2.Id)
|
||||
|
||||
// Log back in as first user
|
||||
th.LoginBasic()
|
||||
|
||||
channels, resp = Client.GetDeletedChannelsForTeam(team.Id, 0, 100, "")
|
||||
CheckNoError(t, resp)
|
||||
if len(channels) != numInitialChannelsForTeam+3 {
|
||||
t.Fatal("should still be 3 deleted channels", len(channels), numInitialChannelsForTeam+3)
|
||||
}
|
||||
|
||||
channels, resp = Client.GetDeletedChannelsForTeam(team.Id, 0, 1, "")
|
||||
CheckNoError(t, resp)
|
||||
if len(channels) != 1 {
|
||||
@@ -1060,6 +1082,100 @@ func TestSearchChannels(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func TestSearchArchivedChannels(t *testing.T) {
|
||||
th := Setup().InitBasic()
|
||||
defer th.TearDown()
|
||||
Client := th.Client
|
||||
|
||||
search := &model.ChannelSearch{Term: th.BasicChannel.Name}
|
||||
|
||||
Client.DeleteChannel(th.BasicChannel.Id)
|
||||
|
||||
channels, resp := Client.SearchArchivedChannels(th.BasicTeam.Id, search)
|
||||
CheckNoError(t, resp)
|
||||
|
||||
found := false
|
||||
for _, c := range channels {
|
||||
if c.Type != model.CHANNEL_OPEN {
|
||||
t.Fatal("should only return public channels")
|
||||
}
|
||||
|
||||
if c.Id == th.BasicChannel.Id {
|
||||
found = true
|
||||
}
|
||||
}
|
||||
|
||||
if !found {
|
||||
t.Fatal("didn't find channel")
|
||||
}
|
||||
|
||||
search.Term = th.BasicPrivateChannel.Name
|
||||
Client.DeleteChannel(th.BasicPrivateChannel.Id)
|
||||
|
||||
channels, resp = Client.SearchArchivedChannels(th.BasicTeam.Id, search)
|
||||
CheckNoError(t, resp)
|
||||
|
||||
found = false
|
||||
for _, c := range channels {
|
||||
if c.Id == th.BasicPrivateChannel.Id {
|
||||
found = true
|
||||
}
|
||||
}
|
||||
|
||||
if !found {
|
||||
t.Fatal("couldn't find private channel")
|
||||
}
|
||||
|
||||
search.Term = ""
|
||||
_, resp = Client.SearchArchivedChannels(th.BasicTeam.Id, search)
|
||||
CheckNoError(t, resp)
|
||||
|
||||
search.Term = th.BasicDeletedChannel.Name
|
||||
_, resp = Client.SearchArchivedChannels(model.NewId(), search)
|
||||
CheckNotFoundStatus(t, resp)
|
||||
|
||||
_, resp = Client.SearchArchivedChannels("junk", search)
|
||||
CheckBadRequestStatus(t, resp)
|
||||
|
||||
_, resp = th.SystemAdminClient.SearchArchivedChannels(th.BasicTeam.Id, search)
|
||||
CheckNoError(t, resp)
|
||||
|
||||
// Check the appropriate permissions are enforced.
|
||||
defaultRolePermissions := th.SaveDefaultRolePermissions()
|
||||
defer func() {
|
||||
th.RestoreDefaultRolePermissions(defaultRolePermissions)
|
||||
}()
|
||||
|
||||
// Remove list channels permission from the user
|
||||
th.RemovePermissionFromRole(model.PERMISSION_LIST_TEAM_CHANNELS.Id, model.TEAM_USER_ROLE_ID)
|
||||
|
||||
t.Run("Search for a BasicDeletedChannel, which the user is a member of", func(t *testing.T) {
|
||||
search.Term = th.BasicDeletedChannel.Name
|
||||
channelList, resp := Client.SearchArchivedChannels(th.BasicTeam.Id, search)
|
||||
CheckNoError(t, resp)
|
||||
|
||||
channelNames := []string{}
|
||||
for _, c := range channelList {
|
||||
channelNames = append(channelNames, c.Name)
|
||||
}
|
||||
require.Contains(t, channelNames, th.BasicDeletedChannel.Name)
|
||||
})
|
||||
|
||||
t.Run("Remove the user from BasicDeletedChannel and search again, should still return", func(t *testing.T) {
|
||||
th.App.RemoveUserFromChannel(th.BasicUser.Id, th.BasicUser.Id, th.BasicDeletedChannel)
|
||||
|
||||
search.Term = th.BasicDeletedChannel.Name
|
||||
channelList, resp := Client.SearchArchivedChannels(th.BasicTeam.Id, search)
|
||||
CheckNoError(t, resp)
|
||||
|
||||
channelNames := []string{}
|
||||
for _, c := range channelList {
|
||||
channelNames = append(channelNames, c.Name)
|
||||
}
|
||||
require.Contains(t, channelNames, th.BasicDeletedChannel.Name)
|
||||
})
|
||||
}
|
||||
|
||||
func TestSearchAllChannels(t *testing.T) {
|
||||
th := Setup().InitBasic()
|
||||
defer th.TearDown()
|
||||
|
||||
Ссылка в новой задаче
Block a user