MM-23221: Fix getAllTeams handler returning null (#14045)

Automatic Merge
Этот коммит содержится в:
Agniva De Sarker
2020-03-16 22:58:59 +05:30
коммит произвёл GitHub
родитель f42d3c83f3
Коммит 1c498996a4
3 изменённых файлов: 44 добавлений и 16 удалений

Просмотреть файл

@@ -853,26 +853,30 @@ func getAllTeams(c *Context, w http.ResponseWriter, r *http.Request) {
var err *model.AppError
var teamsWithCount *model.TeamsWithCount
if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_LIST_PRIVATE_TEAMS) && c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_LIST_PUBLIC_TEAMS) {
listPrivate := c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_LIST_PRIVATE_TEAMS)
listPublic := c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_LIST_PUBLIC_TEAMS)
if listPrivate && listPublic {
if c.Params.IncludeTotalCount {
teamsWithCount, err = c.App.GetAllTeamsPageWithCount(c.Params.Page*c.Params.PerPage, c.Params.PerPage)
} else {
teams, err = c.App.GetAllTeamsPage(c.Params.Page*c.Params.PerPage, c.Params.PerPage)
}
} else if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_LIST_PRIVATE_TEAMS) {
} else if listPrivate {
if c.Params.IncludeTotalCount {
teamsWithCount, err = c.App.GetAllPrivateTeamsPageWithCount(c.Params.Page*c.Params.PerPage, c.Params.PerPage)
} else {
teams, err = c.App.GetAllPrivateTeamsPage(c.Params.Page*c.Params.PerPage, c.Params.PerPage)
}
} else if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_LIST_PUBLIC_TEAMS) {
} else if listPublic {
if c.Params.IncludeTotalCount {
teamsWithCount, err = c.App.GetAllPublicTeamsPageWithCount(c.Params.Page*c.Params.PerPage, c.Params.PerPage)
} else {
teams, err = c.App.GetAllPublicTeamsPage(c.Params.Page*c.Params.PerPage, c.Params.PerPage)
}
} else {
// The user doesn't have permissions to list private as well as public teams.
err = model.NewAppError("getAllTeams", "api.team.get_all_teams.insufficient_permissions", nil, "", http.StatusForbidden)
}
if err != nil {
c.Err = err
return

Просмотреть файл

@@ -572,13 +572,16 @@ func TestGetAllTeams(t *testing.T) {
CheckNoError(t, resp)
testCases := []struct {
Name string
Page int
PerPage int
Permissions []string
ExpectedTeams []string
WithCount bool
ExpectedCount int64
Name string
Page int
PerPage int
Permissions []string
ExpectedTeams []string
WithCount bool
ExpectedCount int64
ExpectedError bool
ErrorId string
ExpectedStatusCode int
}{
{
Name: "Get 1 team per page",
@@ -623,11 +626,23 @@ func TestGetAllTeams(t *testing.T) {
ExpectedTeams: []string{th.BasicTeam.Id, team1.Id, team2.Id, team3.Id, team4.Id},
},
{
Name: "Get no teams because permissions",
Page: 0,
PerPage: 10,
Permissions: []string{},
ExpectedTeams: []string{},
Name: "Get no teams because permissions",
Page: 0,
PerPage: 10,
Permissions: []string{},
ExpectedError: true,
ExpectedStatusCode: http.StatusForbidden,
ErrorId: "api.team.get_all_teams.insufficient_permissions",
},
{
Name: "Get no teams because permissions with count",
Page: 0,
PerPage: 10,
Permissions: []string{},
WithCount: true,
ExpectedError: true,
ExpectedStatusCode: http.StatusForbidden,
ErrorId: "api.team.get_all_teams.insufficient_permissions",
},
{
Name: "Get all teams with count",
@@ -679,6 +694,11 @@ func TestGetAllTeams(t *testing.T) {
} else {
teams, resp = Client.GetAllTeams("", tc.Page, tc.PerPage)
}
if tc.ExpectedError {
CheckErrorMessage(t, resp, tc.ErrorId)
checkHTTPStatus(t, resp, tc.ExpectedStatusCode, true)
return
}
CheckNoError(t, resp)
require.Equal(t, len(tc.ExpectedTeams), len(teams))
for idx, team := range teams {

Просмотреть файл

@@ -1966,6 +1966,10 @@
"id": "api.team.demote_user_to_guest.license.error",
"translation": "Your license does not support guest accounts"
},
{
"id": "api.team.get_all_teams.insufficient_permissions",
"translation": "You don't have the appropriate permissions to list all teams"
},
{
"id": "api.team.get_invite_info.not_open_team",
"translation": "Invite is invalid because this is not an open team."