[MM-42191]: Include deleted posts (#19985)
* MM-42191: Include deleted posts: Add includeDeleted query parameter for getPostsForChannel * MM-42191: Fix error typo for includeDeleted query parameter * MM-42191: Include deleted posts: Set permission error when deleted posts are requested by non system admins * MM-42191: Include deleted posts: Refactor replyCountSubQuery and conditions when includeDeleted is not presented, refactor getRootPosts * MM-42191: Include deleted posts: Refactor getRootPosts function along with skipFetchThreads and includeDeleted * MM-42191: Include deleted posts: Rename includeDeleted to include_deleted param * MM-42191: Include deleted posts: Fix failed posts unit tests * MM-42191: Include deleted posts: Add missing include deleted option in multiple queries * MM-42191: Include deleted posts: Add tests for include deleted option in TestGetPostsForChannel, TestGetPostsBefore, TestGetPostsAfter * MM-42191: include deleted posts: Add tests cases for post store test * MM-42191: Include deleted posts: Add extra unit test to ensure not returning deleted posts when IncludeDelete is false Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
1d8bb0605c
Коммит
b9834a2fc2
@@ -1068,17 +1068,17 @@ func TestGetPostsForChannel(t *testing.T) {
|
||||
post4 := th.CreatePost()
|
||||
|
||||
th.TestForAllClients(t, func(t *testing.T, c *model.Client4) {
|
||||
posts, resp, err := c.GetPostsForChannel(th.BasicChannel.Id, 0, 60, "", false)
|
||||
posts, resp, err := c.GetPostsForChannel(th.BasicChannel.Id, 0, 60, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, post4.Id, posts.Order[0], "wrong order")
|
||||
require.Equal(t, post3.Id, posts.Order[1], "wrong order")
|
||||
require.Equal(t, post2.Id, posts.Order[2], "wrong order")
|
||||
require.Equal(t, post1.Id, posts.Order[3], "wrong order")
|
||||
|
||||
posts, resp, _ = c.GetPostsForChannel(th.BasicChannel.Id, 0, 3, resp.Etag, false)
|
||||
posts, resp, _ = c.GetPostsForChannel(th.BasicChannel.Id, 0, 3, resp.Etag, false, false)
|
||||
CheckEtag(t, posts, resp)
|
||||
|
||||
posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 0, 3, "", false)
|
||||
posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 0, 3, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Order, 3, "wrong number returned")
|
||||
|
||||
@@ -1087,11 +1087,11 @@ func TestGetPostsForChannel(t *testing.T) {
|
||||
_, ok = posts.Posts[post1.Id]
|
||||
require.True(t, ok, "missing root post")
|
||||
|
||||
posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 1, 1, "", false)
|
||||
posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 1, 1, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, post3.Id, posts.Order[0], "wrong order")
|
||||
|
||||
posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 10000, 10000, "", false)
|
||||
posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 10000, 10000, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Empty(t, posts.Order, "should be no posts")
|
||||
})
|
||||
@@ -1121,21 +1121,21 @@ func TestGetPostsForChannel(t *testing.T) {
|
||||
require.True(t, f, "missing post")
|
||||
}
|
||||
|
||||
_, resp, err := c.GetPostsForChannel("", 0, 60, "", false)
|
||||
_, resp, err := c.GetPostsForChannel("", 0, 60, "", false, false)
|
||||
require.Error(t, err)
|
||||
CheckBadRequestStatus(t, resp)
|
||||
|
||||
_, resp, err = c.GetPostsForChannel("junk", 0, 60, "", false)
|
||||
_, resp, err = c.GetPostsForChannel("junk", 0, 60, "", false, false)
|
||||
require.Error(t, err)
|
||||
CheckBadRequestStatus(t, resp)
|
||||
})
|
||||
|
||||
_, resp, err := client.GetPostsForChannel(model.NewId(), 0, 60, "", false)
|
||||
_, resp, err := client.GetPostsForChannel(model.NewId(), 0, 60, "", false, false)
|
||||
require.Error(t, err)
|
||||
CheckForbiddenStatus(t, resp)
|
||||
|
||||
client.Logout()
|
||||
_, resp, err = client.GetPostsForChannel(model.NewId(), 0, 60, "", false)
|
||||
_, resp, err = client.GetPostsForChannel(model.NewId(), 0, 60, "", false, false)
|
||||
require.Error(t, err)
|
||||
CheckUnauthorizedStatus(t, resp)
|
||||
|
||||
@@ -1151,12 +1151,12 @@ func TestGetPostsForChannel(t *testing.T) {
|
||||
var posts *model.PostList
|
||||
th.TestForAllClients(t, func(t *testing.T, c *model.Client4) {
|
||||
// get the system post IDs posted before the created posts above
|
||||
posts, _, err = c.GetPostsBefore(th.BasicChannel.Id, post1.Id, 0, 2, "", false)
|
||||
posts, _, err = c.GetPostsBefore(th.BasicChannel.Id, post1.Id, 0, 2, "", false, false)
|
||||
require.NoError(t, err)
|
||||
systemPostId1 := posts.Order[1]
|
||||
|
||||
// similar to '/posts'
|
||||
posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 0, 60, "", false)
|
||||
posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 0, 60, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Order, 12, "expected 12 posts")
|
||||
require.Equal(t, post10.Id, posts.Order[0], "posts not in order")
|
||||
@@ -1165,7 +1165,7 @@ func TestGetPostsForChannel(t *testing.T) {
|
||||
require.Equal(t, "", posts.PrevPostId, "should return an empty PrevPostId")
|
||||
|
||||
// similar to '/posts?per_page=3'
|
||||
posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 0, 3, "", false)
|
||||
posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 0, 3, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Order, 3, "expected 3 posts")
|
||||
require.Equal(t, post10.Id, posts.Order[0], "posts not in order")
|
||||
@@ -1174,7 +1174,7 @@ func TestGetPostsForChannel(t *testing.T) {
|
||||
require.Equal(t, post7.Id, posts.PrevPostId, "should return post7.Id as PrevPostId")
|
||||
|
||||
// similar to '/posts?per_page=3&page=1'
|
||||
posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 1, 3, "", false)
|
||||
posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 1, 3, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Order, 3, "expected 3 posts")
|
||||
require.Equal(t, post7.Id, posts.Order[0], "posts not in order")
|
||||
@@ -1183,7 +1183,7 @@ func TestGetPostsForChannel(t *testing.T) {
|
||||
require.Equal(t, post4.Id, posts.PrevPostId, "should return post4.Id as PrevPostId")
|
||||
|
||||
// similar to '/posts?per_page=3&page=2'
|
||||
posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 2, 3, "", false)
|
||||
posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 2, 3, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Order, 3, "expected 3 posts")
|
||||
require.Equal(t, post4.Id, posts.Order[0], "posts not in order")
|
||||
@@ -1192,7 +1192,7 @@ func TestGetPostsForChannel(t *testing.T) {
|
||||
require.Equal(t, post1.Id, posts.PrevPostId, "should return post1.Id as PrevPostId")
|
||||
|
||||
// similar to '/posts?per_page=3&page=3'
|
||||
posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 3, 3, "", false)
|
||||
posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 3, 3, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Order, 3, "expected 3 posts")
|
||||
require.Equal(t, post1.Id, posts.Order[0], "posts not in order")
|
||||
@@ -1201,7 +1201,7 @@ func TestGetPostsForChannel(t *testing.T) {
|
||||
require.Equal(t, "", posts.PrevPostId, "should return an empty PrevPostId")
|
||||
|
||||
// similar to '/posts?per_page=3&page=4'
|
||||
posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 4, 3, "", false)
|
||||
posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 4, 3, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Empty(t, posts.Order, "should return 0 post")
|
||||
require.Equal(t, "", posts.NextPostId, "should return an empty NextPostId")
|
||||
@@ -1220,15 +1220,37 @@ func TestGetPostsForChannel(t *testing.T) {
|
||||
})
|
||||
|
||||
// the endpoint should work fine when viewing archived channels is enabled
|
||||
_, _, err = c.GetPostsForChannel(channel.Id, 0, 10, "", false)
|
||||
_, _, err = c.GetPostsForChannel(channel.Id, 0, 10, "", false, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
// the endpoint should return forbidden if viewing archived channels is disabled
|
||||
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.ExperimentalViewArchivedChannels = false })
|
||||
_, resp, err = c.GetPostsForChannel(channel.Id, 0, 10, "", false)
|
||||
_, resp, err = c.GetPostsForChannel(channel.Id, 0, 10, "", false, false)
|
||||
require.Error(t, err)
|
||||
CheckForbiddenStatus(t, resp)
|
||||
}, "Should forbid to retrieve posts if the channel is archived and users are not allowed to view archived messages")
|
||||
|
||||
client.DeletePost(post10.Id)
|
||||
client.DeletePost(post8.Id)
|
||||
|
||||
// include deleted posts for non-admin users.
|
||||
_, resp, err = client.GetPostsForChannel(th.BasicChannel.Id, 0, 100, "", false, true)
|
||||
require.Error(t, err)
|
||||
CheckForbiddenStatus(t, resp)
|
||||
|
||||
th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) {
|
||||
// include deleted posts for admin users.
|
||||
posts, resp, err = c.GetPostsForChannel(th.BasicChannel.Id, 0, 100, "", false, true)
|
||||
require.NoError(t, err)
|
||||
CheckOKStatus(t, resp)
|
||||
require.Len(t, posts.Order, 12, "expected 12 posts")
|
||||
|
||||
// not include deleted posts for admin users.
|
||||
posts, resp, err = c.GetPostsForChannel(th.BasicChannel.Id, 0, 100, "", false, false)
|
||||
require.NoError(t, err)
|
||||
CheckOKStatus(t, resp)
|
||||
require.Len(t, posts.Order, 10, "expected 10 posts")
|
||||
})
|
||||
}
|
||||
|
||||
func TestGetFlaggedPostsForUser(t *testing.T) {
|
||||
@@ -1440,7 +1462,7 @@ func TestGetPostsBefore(t *testing.T) {
|
||||
post4 := th.CreatePost()
|
||||
post5 := th.CreatePost()
|
||||
|
||||
posts, _, err := client.GetPostsBefore(th.BasicChannel.Id, post3.Id, 0, 100, "", false)
|
||||
posts, _, err := client.GetPostsBefore(th.BasicChannel.Id, post3.Id, 0, 100, "", false, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
found := make([]bool, 2)
|
||||
@@ -1462,18 +1484,18 @@ func TestGetPostsBefore(t *testing.T) {
|
||||
require.Equal(t, post3.Id, posts.NextPostId, "should match NextPostId")
|
||||
require.Equal(t, "", posts.PrevPostId, "should match empty PrevPostId")
|
||||
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post4.Id, 1, 1, "", false)
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post4.Id, 1, 1, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Posts, 1, "too many posts returned")
|
||||
require.Equal(t, post2.Id, posts.Order[0], "should match returned post")
|
||||
require.Equal(t, post3.Id, posts.NextPostId, "should match NextPostId")
|
||||
require.Equal(t, post1.Id, posts.PrevPostId, "should match PrevPostId")
|
||||
|
||||
_, resp, err := client.GetPostsBefore(th.BasicChannel.Id, "junk", 1, 1, "", false)
|
||||
_, resp, err := client.GetPostsBefore(th.BasicChannel.Id, "junk", 1, 1, "", false, false)
|
||||
require.Error(t, err)
|
||||
CheckBadRequestStatus(t, resp)
|
||||
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post5.Id, 0, 3, "", false)
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post5.Id, 0, 3, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Posts, 3, "should match length of posts returned")
|
||||
require.Equal(t, post4.Id, posts.Order[0], "should match returned post")
|
||||
@@ -1482,12 +1504,12 @@ func TestGetPostsBefore(t *testing.T) {
|
||||
require.Equal(t, post1.Id, posts.PrevPostId, "should match PrevPostId")
|
||||
|
||||
// get the system post IDs posted before the created posts above
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post1.Id, 0, 2, "", false)
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post1.Id, 0, 2, "", false, false)
|
||||
require.NoError(t, err)
|
||||
systemPostId2 := posts.Order[0]
|
||||
systemPostId1 := posts.Order[1]
|
||||
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post5.Id, 1, 3, "", false)
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post5.Id, 1, 3, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Posts, 3, "should match length of posts returned")
|
||||
require.Equal(t, post1.Id, posts.Order[0], "should match returned post")
|
||||
@@ -1502,10 +1524,10 @@ func TestGetPostsBefore(t *testing.T) {
|
||||
th.CreatePost() // post7
|
||||
post8 := th.CreatePost()
|
||||
post9 := th.CreatePost()
|
||||
th.CreatePost() // post10
|
||||
post10 := th.CreatePost() // post10
|
||||
|
||||
// similar to '/posts?before=post9'
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post9.Id, 0, 60, "", false)
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post9.Id, 0, 60, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Order, 10, "expected 10 posts")
|
||||
require.Equal(t, post8.Id, posts.Order[0], "posts not in order")
|
||||
@@ -1514,7 +1536,7 @@ func TestGetPostsBefore(t *testing.T) {
|
||||
require.Equal(t, "", posts.PrevPostId, "should return an empty PrevPostId")
|
||||
|
||||
// similar to '/posts?before=post9&per_page=3'
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post9.Id, 0, 3, "", false)
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post9.Id, 0, 3, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Order, 3, "expected 3 posts")
|
||||
require.Equal(t, post8.Id, posts.Order[0], "posts not in order")
|
||||
@@ -1523,7 +1545,7 @@ func TestGetPostsBefore(t *testing.T) {
|
||||
require.Equal(t, post5.Id, posts.PrevPostId, "should return post5.Id as PrevPostId")
|
||||
|
||||
// similar to '/posts?before=post9&per_page=3&page=1'
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post9.Id, 1, 3, "", false)
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post9.Id, 1, 3, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Order, 3, "expected 3 posts")
|
||||
require.Equal(t, post5.Id, posts.Order[0], "posts not in order")
|
||||
@@ -1532,7 +1554,7 @@ func TestGetPostsBefore(t *testing.T) {
|
||||
require.Equal(t, post2.Id, posts.PrevPostId, "should return post2.Id as PrevPostId")
|
||||
|
||||
// similar to '/posts?before=post9&per_page=3&page=2'
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post9.Id, 2, 3, "", false)
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post9.Id, 2, 3, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Order, 3, "expected 3 posts")
|
||||
require.Equal(t, post2.Id, posts.Order[0], "posts not in order")
|
||||
@@ -1541,7 +1563,7 @@ func TestGetPostsBefore(t *testing.T) {
|
||||
require.Equal(t, systemPostId1, posts.PrevPostId, "should return systemPostId1 as PrevPostId")
|
||||
|
||||
// similar to '/posts?before=post1&per_page=3'
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post1.Id, 0, 3, "", false)
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post1.Id, 0, 3, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Order, 2, "expected 2 posts")
|
||||
require.Equal(t, systemPostId2, posts.Order[0], "posts not in order")
|
||||
@@ -1550,14 +1572,14 @@ func TestGetPostsBefore(t *testing.T) {
|
||||
require.Equal(t, "", posts.PrevPostId, "should return an empty PrevPostId")
|
||||
|
||||
// similar to '/posts?before=systemPostId1'
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, systemPostId1, 0, 60, "", false)
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, systemPostId1, 0, 60, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Empty(t, posts.Order, "should return 0 post")
|
||||
require.Equal(t, systemPostId1, posts.NextPostId, "should return systemPostId1 as NextPostId")
|
||||
require.Equal(t, "", posts.PrevPostId, "should return an empty PrevPostId")
|
||||
|
||||
// similar to '/posts?before=systemPostId1&per_page=60&page=1'
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, systemPostId1, 1, 60, "", false)
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, systemPostId1, 1, 60, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Empty(t, posts.Order, "should return 0 posts")
|
||||
require.Equal(t, "", posts.NextPostId, "should return an empty NextPostId")
|
||||
@@ -1565,11 +1587,33 @@ func TestGetPostsBefore(t *testing.T) {
|
||||
|
||||
// similar to '/posts?before=non-existent-post'
|
||||
nonExistentPostId := model.NewId()
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, nonExistentPostId, 0, 60, "", false)
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, nonExistentPostId, 0, 60, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Empty(t, posts.Order, "should return 0 post")
|
||||
require.Equal(t, nonExistentPostId, posts.NextPostId, "should return nonExistentPostId as NextPostId")
|
||||
require.Equal(t, "", posts.PrevPostId, "should return an empty PrevPostId")
|
||||
|
||||
client.DeletePost(post9.Id)
|
||||
client.DeletePost(post8.Id)
|
||||
|
||||
// include deleted posts for non-admin users.
|
||||
_, resp, err = client.GetPostsBefore(th.BasicChannel.Id, post9.Id, 0, 60, "", false, true)
|
||||
require.Error(t, err)
|
||||
CheckForbiddenStatus(t, resp)
|
||||
|
||||
th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) {
|
||||
// include deleted posts for admin users.
|
||||
posts, resp, err = c.GetPostsBefore(th.BasicChannel.Id, post10.Id, 0, 60, "", false, true)
|
||||
require.NoError(t, err)
|
||||
CheckOKStatus(t, resp)
|
||||
require.Len(t, posts.Order, 11, "expected 11 posts")
|
||||
|
||||
// not include deleted posts for admin users.
|
||||
posts, resp, err = c.GetPostsBefore(th.BasicChannel.Id, post10.Id, 0, 60, "", false, false)
|
||||
require.NoError(t, err)
|
||||
CheckOKStatus(t, resp)
|
||||
require.Len(t, posts.Order, 9, "expected 9 posts")
|
||||
})
|
||||
}
|
||||
|
||||
func TestGetPostsAfter(t *testing.T) {
|
||||
@@ -1583,7 +1627,7 @@ func TestGetPostsAfter(t *testing.T) {
|
||||
post4 := th.CreatePost()
|
||||
post5 := th.CreatePost()
|
||||
|
||||
posts, _, err := client.GetPostsAfter(th.BasicChannel.Id, post3.Id, 0, 100, "", false)
|
||||
posts, _, err := client.GetPostsAfter(th.BasicChannel.Id, post3.Id, 0, 100, "", false, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
found := make([]bool, 2)
|
||||
@@ -1603,18 +1647,18 @@ func TestGetPostsAfter(t *testing.T) {
|
||||
require.Equal(t, "", posts.NextPostId, "should match empty NextPostId")
|
||||
require.Equal(t, post3.Id, posts.PrevPostId, "should match PrevPostId")
|
||||
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post2.Id, 1, 1, "", false)
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post2.Id, 1, 1, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Posts, 1, "too many posts returned")
|
||||
require.Equal(t, post4.Id, posts.Order[0], "should match returned post")
|
||||
require.Equal(t, post5.Id, posts.NextPostId, "should match NextPostId")
|
||||
require.Equal(t, post3.Id, posts.PrevPostId, "should match PrevPostId")
|
||||
|
||||
_, resp, err := client.GetPostsAfter(th.BasicChannel.Id, "junk", 1, 1, "", false)
|
||||
_, resp, err := client.GetPostsAfter(th.BasicChannel.Id, "junk", 1, 1, "", false, false)
|
||||
require.Error(t, err)
|
||||
CheckBadRequestStatus(t, resp)
|
||||
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post1.Id, 0, 3, "", false)
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post1.Id, 0, 3, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Posts, 3, "should match length of posts returned")
|
||||
require.Equal(t, post4.Id, posts.Order[0], "should match returned post")
|
||||
@@ -1622,7 +1666,7 @@ func TestGetPostsAfter(t *testing.T) {
|
||||
require.Equal(t, post5.Id, posts.NextPostId, "should match NextPostId")
|
||||
require.Equal(t, post1.Id, posts.PrevPostId, "should match PrevPostId")
|
||||
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post1.Id, 1, 3, "", false)
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post1.Id, 1, 3, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Posts, 1, "should match length of posts returned")
|
||||
require.Equal(t, post5.Id, posts.Order[0], "should match returned post")
|
||||
@@ -1638,7 +1682,7 @@ func TestGetPostsAfter(t *testing.T) {
|
||||
post10 := th.CreatePost()
|
||||
|
||||
// similar to '/posts?after=post2'
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post2.Id, 0, 60, "", false)
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post2.Id, 0, 60, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Order, 8, "expected 8 posts")
|
||||
require.Equal(t, post10.Id, posts.Order[0], "should match order")
|
||||
@@ -1647,7 +1691,7 @@ func TestGetPostsAfter(t *testing.T) {
|
||||
require.Equal(t, post2.Id, posts.PrevPostId, "should return post2.Id as PrevPostId")
|
||||
|
||||
// similar to '/posts?after=post2&per_page=3'
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post2.Id, 0, 3, "", false)
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post2.Id, 0, 3, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Order, 3, "expected 3 posts")
|
||||
require.Equal(t, post5.Id, posts.Order[0], "should match order")
|
||||
@@ -1656,7 +1700,7 @@ func TestGetPostsAfter(t *testing.T) {
|
||||
require.Equal(t, post2.Id, posts.PrevPostId, "should return post2.Id as PrevPostId")
|
||||
|
||||
// similar to '/posts?after=post2&per_page=3&page=1'
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post2.Id, 1, 3, "", false)
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post2.Id, 1, 3, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Order, 3, "expected 3 posts")
|
||||
require.Equal(t, post8.Id, posts.Order[0], "should match order")
|
||||
@@ -1665,7 +1709,7 @@ func TestGetPostsAfter(t *testing.T) {
|
||||
require.Equal(t, post5.Id, posts.PrevPostId, "should return post5.Id as PrevPostId")
|
||||
|
||||
// similar to '/posts?after=post2&per_page=3&page=2'
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post2.Id, 2, 3, "", false)
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post2.Id, 2, 3, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts.Order, 2, "expected 2 posts")
|
||||
require.Equal(t, post10.Id, posts.Order[0], "should match order")
|
||||
@@ -1674,14 +1718,14 @@ func TestGetPostsAfter(t *testing.T) {
|
||||
require.Equal(t, post8.Id, posts.PrevPostId, "should return post8.Id as PrevPostId")
|
||||
|
||||
// similar to '/posts?after=post10'
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post10.Id, 0, 60, "", false)
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post10.Id, 0, 60, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Empty(t, posts.Order, "should return 0 post")
|
||||
require.Equal(t, "", posts.NextPostId, "should return an empty NextPostId")
|
||||
require.Equal(t, post10.Id, posts.PrevPostId, "should return post10.Id as PrevPostId")
|
||||
|
||||
// similar to '/posts?after=post10&page=1'
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post10.Id, 1, 60, "", false)
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post10.Id, 1, 60, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Empty(t, posts.Order, "should return 0 post")
|
||||
require.Equal(t, "", posts.NextPostId, "should return an empty NextPostId")
|
||||
@@ -1689,11 +1733,33 @@ func TestGetPostsAfter(t *testing.T) {
|
||||
|
||||
// similar to '/posts?after=non-existent-post'
|
||||
nonExistentPostId := model.NewId()
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, nonExistentPostId, 0, 60, "", false)
|
||||
posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, nonExistentPostId, 0, 60, "", false, false)
|
||||
require.NoError(t, err)
|
||||
require.Empty(t, posts.Order, "should return 0 post")
|
||||
require.Equal(t, "", posts.NextPostId, "should return an empty NextPostId")
|
||||
require.Equal(t, nonExistentPostId, posts.PrevPostId, "should return nonExistentPostId as PrevPostId")
|
||||
|
||||
client.DeletePost(post10.Id)
|
||||
client.DeletePost(post9.Id)
|
||||
|
||||
// include deleted posts for non-admin users.
|
||||
_, resp, err = client.GetPostsAfter(th.BasicChannel.Id, post1.Id, 0, 60, "", false, true)
|
||||
require.Error(t, err)
|
||||
CheckForbiddenStatus(t, resp)
|
||||
|
||||
th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) {
|
||||
// include deleted posts for admin users.
|
||||
posts, resp, err = c.GetPostsAfter(th.BasicChannel.Id, post1.Id, 0, 60, "", false, true)
|
||||
require.NoError(t, err)
|
||||
CheckOKStatus(t, resp)
|
||||
require.Len(t, posts.Order, 9, "expected 9 posts")
|
||||
|
||||
// not include deleted posts for admin users.
|
||||
posts, resp, err = c.GetPostsAfter(th.BasicChannel.Id, post1.Id, 0, 60, "", false, false)
|
||||
require.NoError(t, err)
|
||||
CheckOKStatus(t, resp)
|
||||
require.Len(t, posts.Order, 7, "expected 7 posts")
|
||||
})
|
||||
}
|
||||
|
||||
func TestGetPostsForChannelAroundLastUnread(t *testing.T) {
|
||||
@@ -1798,7 +1864,7 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) {
|
||||
require.Len(t, posts.Order, 12, "Should return 12 posts only since there's no unread post")
|
||||
|
||||
// get the first system post generated before the created posts above
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post1.Id, 0, 2, "", false)
|
||||
posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post1.Id, 0, 2, "", false, false)
|
||||
require.NoError(t, err)
|
||||
systemPost0 := posts.Posts[posts.Order[0]]
|
||||
postIdNames[systemPost0.Id] = "system post 0"
|
||||
|
||||
Ссылка в новой задаче
Block a user