APIv4 post /teams/search (#5931)
Этот коммит содержится в:
коммит произвёл
Corey Hulen
родитель
6b61834ab1
Коммит
43e795448f
30
api4/team.go
30
api4/team.go
@@ -20,6 +20,7 @@ func InitTeam() {
|
||||
|
||||
BaseRoutes.Teams.Handle("", ApiSessionRequired(createTeam)).Methods("POST")
|
||||
BaseRoutes.Teams.Handle("", ApiSessionRequired(getAllTeams)).Methods("GET")
|
||||
BaseRoutes.Teams.Handle("/search", ApiSessionRequired(searchTeams)).Methods("POST")
|
||||
BaseRoutes.TeamsForUser.Handle("", ApiSessionRequired(getTeamsForUser)).Methods("GET")
|
||||
BaseRoutes.TeamsForUser.Handle("/unread", ApiSessionRequired(getTeamsUnreadForUser)).Methods("GET")
|
||||
|
||||
@@ -456,6 +457,35 @@ func getAllTeams(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
w.Write([]byte(model.TeamListToJson(teams)))
|
||||
}
|
||||
|
||||
func searchTeams(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
props := model.TeamSearchFromJson(r.Body)
|
||||
if props == nil {
|
||||
c.SetInvalidParam("team_search")
|
||||
return
|
||||
}
|
||||
|
||||
if len(props.Term) == 0 {
|
||||
c.SetInvalidParam("term")
|
||||
return
|
||||
}
|
||||
|
||||
var teams []*model.Team
|
||||
var err *model.AppError
|
||||
|
||||
if app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) {
|
||||
teams, err = app.SearchAllTeams(props.Term)
|
||||
} else {
|
||||
teams, err = app.SearchOpenTeams(props.Term)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
c.Err = err
|
||||
return
|
||||
}
|
||||
|
||||
w.Write([]byte(model.TeamListToJson(teams)))
|
||||
}
|
||||
|
||||
func teamExists(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
c.RequireTeamName()
|
||||
if c.Err != nil {
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"encoding/binary"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"reflect"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
@@ -405,6 +406,81 @@ func TestGetTeamByName(t *testing.T) {
|
||||
CheckForbiddenStatus(t, resp)
|
||||
}
|
||||
|
||||
func TestSearchAllTeams(t *testing.T) {
|
||||
th := Setup().InitBasic().InitSystemAdmin()
|
||||
defer TearDown()
|
||||
Client := th.Client
|
||||
oTeam := th.BasicTeam
|
||||
|
||||
pTeam := &model.Team{DisplayName: "PName", Name: GenerateTestTeamName(), Email: GenerateTestEmail(), Type: model.TEAM_INVITE}
|
||||
Client.CreateTeam(pTeam)
|
||||
|
||||
rteams, resp := Client.SearchTeams(&model.TeamSearch{Term: oTeam.Name})
|
||||
CheckNoError(t, resp)
|
||||
|
||||
if len(rteams) != 1 {
|
||||
t.Fatal("should have returned 1 team")
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(rteams[0], oTeam) {
|
||||
t.Fatal("invalid team")
|
||||
}
|
||||
|
||||
rteams, resp = Client.SearchTeams(&model.TeamSearch{Term: oTeam.DisplayName})
|
||||
CheckNoError(t, resp)
|
||||
|
||||
if len(rteams) != 1 {
|
||||
t.Fatal("should have returned 1 team")
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(rteams[0], oTeam) {
|
||||
t.Fatal("invalid team")
|
||||
}
|
||||
|
||||
rteams, resp = Client.SearchTeams(&model.TeamSearch{Term: pTeam.Name})
|
||||
CheckNoError(t, resp)
|
||||
|
||||
if len(rteams) != 0 {
|
||||
t.Fatal("should have not returned team")
|
||||
}
|
||||
|
||||
rteams, resp = Client.SearchTeams(&model.TeamSearch{Term: pTeam.DisplayName})
|
||||
CheckNoError(t, resp)
|
||||
|
||||
if len(rteams) != 0 {
|
||||
t.Fatal("should have not returned team")
|
||||
}
|
||||
|
||||
rteams, resp = th.SystemAdminClient.SearchTeams(&model.TeamSearch{Term: oTeam.Name})
|
||||
CheckNoError(t, resp)
|
||||
|
||||
if len(rteams) != 1 {
|
||||
t.Fatal("should have returned 1 team")
|
||||
}
|
||||
|
||||
rteams, resp = th.SystemAdminClient.SearchTeams(&model.TeamSearch{Term: pTeam.DisplayName})
|
||||
CheckNoError(t, resp)
|
||||
|
||||
if len(rteams) != 1 {
|
||||
t.Fatal("should have returned 1 team")
|
||||
}
|
||||
|
||||
rteams, resp = Client.SearchTeams(&model.TeamSearch{Term: "junk"})
|
||||
CheckNoError(t, resp)
|
||||
|
||||
if len(rteams) != 0 {
|
||||
t.Fatal("should have not returned team")
|
||||
}
|
||||
|
||||
Client.Logout()
|
||||
|
||||
rteams, resp = Client.SearchTeams(&model.TeamSearch{Term: pTeam.Name})
|
||||
CheckUnauthorizedStatus(t, resp)
|
||||
|
||||
rteams, resp = Client.SearchTeams(&model.TeamSearch{Term: pTeam.DisplayName})
|
||||
CheckUnauthorizedStatus(t, resp)
|
||||
}
|
||||
|
||||
func TestGetTeamsForUser(t *testing.T) {
|
||||
th := Setup().InitBasic().InitSystemAdmin()
|
||||
defer TearDown()
|
||||
|
||||
Ссылка в новой задаче
Block a user