Этот коммит содержится в:
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
}
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 {
c.SetInvalidParam("terms")

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

@@ -1790,6 +1790,10 @@
"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."
},
{
"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",
"translation": " notified the channel."

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

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

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

@@ -856,3 +856,31 @@ func TestPostPatchDisableMentionHighlights(t *testing.T) {
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)
})
}