Этот коммит содержится в:
Claudio Costa
2020-09-08 20:36:59 +02:00
коммит произвёл GitHub
родитель 4c518055f4
Коммит 7612888052
4 изменённых файлов: 41 добавлений и 6 удалений

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

@@ -466,7 +466,11 @@ func searchPosts(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
params := model.SearchParameterFromJson(r.Body) params, jsonErr := model.SearchParameterFromJson(r.Body)
if jsonErr != nil {
c.Err = model.NewAppError("searchPosts", "api.post.search_posts.invalid_body.app_error", nil, jsonErr.Error(), http.StatusBadRequest)
return
}
if params.Terms == nil || len(*params.Terms) == 0 { if params.Terms == nil || len(*params.Terms) == 0 {
c.SetInvalidParam("terms") c.SetInvalidParam("terms")

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

@@ -1790,6 +1790,10 @@
"id": "api.post.save_is_pinned_post.town_square_read_only", "id": "api.post.save_is_pinned_post.town_square_read_only",
"translation": "This channel is read-only. Only members with permission can pin or unpin posts here." "translation": "This channel is read-only. Only members with permission can pin or unpin posts here."
}, },
{
"id": "api.post.search_posts.invalid_body.app_error",
"translation": "Unable to parse the request body."
},
{ {
"id": "api.post.send_notification_and_forget.push_channel_mention", "id": "api.post.send_notification_and_forget.push_channel_mention",
"translation": " notified the channel." "translation": " notified the channel."

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

@@ -497,15 +497,14 @@ func (o *SearchParameter) SearchParameterToJson() string {
return string(b) return string(b)
} }
func SearchParameterFromJson(data io.Reader) *SearchParameter { func SearchParameterFromJson(data io.Reader) (*SearchParameter, error) {
decoder := json.NewDecoder(data) decoder := json.NewDecoder(data)
var searchParam SearchParameter var searchParam SearchParameter
err := decoder.Decode(&searchParam) if err := decoder.Decode(&searchParam); err != nil {
if err != nil { return nil, err
return nil
} }
return &searchParam return &searchParam, nil
} }
func (o *Post) ChannelMentions() []string { func (o *Post) ChannelMentions() []string {

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

@@ -856,3 +856,31 @@ func TestPostPatchDisableMentionHighlights(t *testing.T) {
assert.Nil(t, patch.Message) assert.Nil(t, patch.Message)
}) })
} }
func TestSearchParameterFromJson(t *testing.T) {
t.Run("empty input", func(t *testing.T) {
params, err := SearchParameterFromJson(strings.NewReader(""))
require.Nil(t, params)
require.Error(t, err)
})
t.Run("invalid json", func(t *testing.T) {
params, err := SearchParameterFromJson(strings.NewReader("invalid"))
require.Nil(t, params)
require.Error(t, err)
})
t.Run("valid empty input", func(t *testing.T) {
params, err := SearchParameterFromJson(strings.NewReader("{}"))
require.NoError(t, err)
require.NotNil(t, params)
require.Equal(t, &SearchParameter{}, params)
})
t.Run("valid non-empty input", func(t *testing.T) {
params, err := SearchParameterFromJson(strings.NewReader("{\"terms\": \"test\"}"))
require.NoError(t, err)
require.NotNil(t, params)
require.Equal(t, "test", *params.Terms)
})
}