diff options
Diffstat (limited to 'api')
-rw-r--r-- | api/user.go | 22 | ||||
-rw-r--r-- | api/user_test.go | 38 |
2 files changed, 60 insertions, 0 deletions
diff --git a/api/user.go b/api/user.go index 26066dabc..f5f2582b3 100644 --- a/api/user.go +++ b/api/user.go @@ -59,6 +59,7 @@ func InitUser() { BaseRoutes.NeedChannel.Handle("/users/not_in_channel/{offset:[0-9]+}/{limit:[0-9]+}", ApiUserRequired(getProfilesNotInChannel)).Methods("GET") BaseRoutes.Users.Handle("/search", ApiUserRequired(searchUsers)).Methods("POST") BaseRoutes.Users.Handle("/ids", ApiUserRequired(getProfilesByIds)).Methods("POST") + BaseRoutes.Users.Handle("/autocomplete", ApiUserRequired(autocompleteUsers)).Methods("GET") BaseRoutes.NeedTeam.Handle("/users/autocomplete", ApiUserRequired(autocompleteUsersInTeam)).Methods("GET") BaseRoutes.NeedChannel.Handle("/users/autocomplete", ApiUserRequired(autocompleteUsersInChannel)).Methods("GET") @@ -2780,3 +2781,24 @@ func autocompleteUsersInTeam(c *Context, w http.ResponseWriter, r *http.Request) w.Write([]byte(autocomplete.ToJson())) } + +func autocompleteUsers(c *Context, w http.ResponseWriter, r *http.Request) { + term := r.URL.Query().Get("term") + + uchan := Srv.Store.User().Search("", term, map[string]bool{}) + + var profiles []*model.User + + if result := <-uchan; result.Err != nil { + c.Err = result.Err + return + } else { + profiles = result.Data.([]*model.User) + + for _, p := range profiles { + sanitizeProfile(c, p) + } + } + + w.Write([]byte(model.UserListToJson(profiles))) +} diff --git a/api/user_test.go b/api/user_test.go index a10cee961..02ea71c83 100644 --- a/api/user_test.go +++ b/api/user_test.go @@ -2275,6 +2275,44 @@ func TestAutocompleteUsers(t *testing.T) { th := Setup().InitBasic() Client := th.BasicClient + if result, err := Client.AutocompleteUsers(th.BasicUser.Username); err != nil { + t.Fatal(err) + } else { + users := result.Data.([]*model.User) + if len(users) != 1 { + t.Fatal("should have returned 1 user in") + } + } + + if result, err := Client.AutocompleteUsers(""); err != nil { + t.Fatal(err) + } else { + users := result.Data.([]*model.User) + if len(users) == 0 { + t.Fatal("should have many users") + } + } + + notInTeamUser := th.CreateUser(Client) + + if result, err := Client.AutocompleteUsers(notInTeamUser.Username); err != nil { + t.Fatal(err) + } else { + users := result.Data.([]*model.User) + if len(users) != 1 { + t.Fatal("should have returned 1 user in") + } + } + + if result, err := Client.AutocompleteUsersInTeam(notInTeamUser.Username); err != nil { + t.Fatal(err) + } else { + autocomplete := result.Data.(*model.UserAutocompleteInTeam) + if len(autocomplete.InTeam) != 0 { + t.Fatal("should have returned 0 users") + } + } + if result, err := Client.AutocompleteUsersInTeam(th.BasicUser.Username); err != nil { t.Fatal(err) } else { |