коммит произвёл
GitHub
родитель
f42d3c83f3
Коммит
1c498996a4
12
api4/team.go
12
api4/team.go
@@ -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 {
|
||||
|
||||
Ссылка в новой задаче
Block a user