diff options
author | Christopher Speller <crspeller@gmail.com> | 2016-11-24 09:08:46 -0500 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2016-11-24 09:08:46 -0500 |
commit | c96ecae6da31aceabf29586cde872876b81d11d9 (patch) | |
tree | 94df09df540da846bb4c6ed50e8bd7879cff63ba /store | |
parent | b212acf312ad640455fa715427ac19e6930dc61d (diff) | |
parent | 36f62c9e82350f58c902f64a5d3304872431ad41 (diff) | |
download | chat-c96ecae6da31aceabf29586cde872876b81d11d9.tar.gz chat-c96ecae6da31aceabf29586cde872876b81d11d9.tar.bz2 chat-c96ecae6da31aceabf29586cde872876b81d11d9.zip |
Merge branch 'release-3.5'
Diffstat (limited to 'store')
-rw-r--r-- | store/sql_user_store.go | 15 | ||||
-rw-r--r-- | store/sql_user_store_test.go | 26 |
2 files changed, 40 insertions, 1 deletions
diff --git a/store/sql_user_store.go b/store/sql_user_store.go index aa3bb4380..1a38e89e8 100644 --- a/store/sql_user_store.go +++ b/store/sql_user_store.go @@ -1217,11 +1217,24 @@ func (us SqlUserStore) SearchInChannel(channelId string, term string, options ma return storeChannel } +var specialUserSearchChar = []string{ + "<", + ">", + "+", + "-", + "(", + ")", + "~", + "@", + ":", + "*", +} + func (us SqlUserStore) performSearch(searchQuery string, term string, options map[string]bool, parameters map[string]interface{}) StoreResult { result := StoreResult{} // these chars have special meaning and can be treated as spaces - for _, c := range specialSearchChar { + for _, c := range specialUserSearchChar { term = strings.Replace(term, c, " ", -1) } diff --git a/store/sql_user_store_test.go b/store/sql_user_store_test.go index e58e1fe40..acd87a036 100644 --- a/store/sql_user_store_test.go +++ b/store/sql_user_store_test.go @@ -981,6 +981,32 @@ func TestUserStoreSearch(t *testing.T) { } } + // * should be treated as a space + if r1 := <-store.User().Search(tid, "jimb*", searchOptions); r1.Err != nil { + t.Fatal(r1.Err) + } else { + profiles := r1.Data.([]*model.User) + found1 := false + found2 := false + for _, profile := range profiles { + if profile.Id == u1.Id { + found1 = true + } + + if profile.Id == u3.Id { + found2 = true + } + } + + if !found1 { + t.Fatal("should have found user") + } + + if found2 { + t.Fatal("should not have found inactive user") + } + } + if r1 := <-store.User().Search(tid, "harol", searchOptions); r1.Err != nil { t.Fatal(r1.Err) } else { |