From b1b23079c6a49df29b6f27b85e98d6a9b1d3607c Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Wed, 21 Mar 2018 11:33:47 -0400 Subject: Fix paging for GET /teams and GET /teams/{id}/members endpoints (#8488) --- api4/team.go | 6 +++--- api4/team_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/api4/team.go b/api4/team.go index 8e4c5c312..f8a1c556c 100644 --- a/api4/team.go +++ b/api4/team.go @@ -285,7 +285,7 @@ func getTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) { return } - if members, err := c.App.GetTeamMembers(c.Params.TeamId, c.Params.Page, c.Params.PerPage); err != nil { + if members, err := c.App.GetTeamMembers(c.Params.TeamId, c.Params.Page*c.Params.PerPage, c.Params.PerPage); err != nil { c.Err = err return } else { @@ -543,9 +543,9 @@ func getAllTeams(c *Context, w http.ResponseWriter, r *http.Request) { var err *model.AppError if c.App.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) { - teams, err = c.App.GetAllTeamsPage(c.Params.Page, c.Params.PerPage) + teams, err = c.App.GetAllTeamsPage(c.Params.Page*c.Params.PerPage, c.Params.PerPage) } else { - teams, err = c.App.GetAllOpenTeamsPage(c.Params.Page, c.Params.PerPage) + teams, err = c.App.GetAllOpenTeamsPage(c.Params.Page*c.Params.PerPage, c.Params.PerPage) } if err != nil { diff --git a/api4/team_test.go b/api4/team_test.go index 04a0e9ae4..c2edcdaaa 100644 --- a/api4/team_test.go +++ b/api4/team_test.go @@ -567,6 +567,10 @@ func TestGetAllTeams(t *testing.T) { _, resp := Client.CreateTeam(team) CheckNoError(t, resp) + team2 := &model.Team{DisplayName: "Name2", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), Type: model.TEAM_OPEN, AllowOpenInvite: true} + _, resp = Client.CreateTeam(team2) + CheckNoError(t, resp) + rrteams, resp := Client.GetAllTeams("", 0, 1) CheckNoError(t, resp) @@ -611,6 +615,17 @@ func TestGetAllTeams(t *testing.T) { t.Fatal("wrong number of teams - should be 0") } + rrteams, resp = Client.GetAllTeams("", 0, 2) + CheckNoError(t, resp) + rrteams2, resp = Client.GetAllTeams("", 1, 2) + CheckNoError(t, resp) + + for _, t1 := range rrteams { + for _, t2 := range rrteams2 { + assert.NotEqual(t, t1.Id, t2.Id, "different pages should not have the same teams") + } + } + Client.Logout() _, resp = Client.GetAllTeams("", 1, 10) CheckUnauthorizedStatus(t, resp) @@ -1140,6 +1155,17 @@ func TestGetTeamMembers(t *testing.T) { t.Fatal("should be no member") } + rmembers, resp = Client.GetTeamMembers(team.Id, 0, 2, "") + CheckNoError(t, resp) + rmembers2, resp := Client.GetTeamMembers(team.Id, 1, 2, "") + CheckNoError(t, resp) + + for _, tm1 := range rmembers { + for _, tm2 := range rmembers2 { + assert.NotEqual(t, tm1.UserId+tm1.TeamId, tm2.UserId+tm2.TeamId, "different pages should not have the same members") + } + } + _, resp = Client.GetTeamMembers("junk", 0, 100, "") CheckBadRequestStatus(t, resp) -- cgit v1.2.3-1-g7c22