Fix panicing of ParseSlackAttachment for nil in attachments list (#10141)

Этот коммит содержится в:
Hanzei
2019-01-25 18:31:19 +01:00
коммит произвёл Christopher Speller
родитель c8fab6e313
Коммит 6d733e35f7
2 изменённых файлов: 49 добавлений и 1 удалений

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

@@ -68,7 +68,13 @@ func ParseSlackAttachment(post *Post, attachments []*SlackAttachment) {
post.Type = POST_SLACK_ATTACHMENT
}
postAttachments := []*SlackAttachment{}
for _, attachment := range attachments {
if attachment == nil {
continue
}
attachment.Text = ParseSlackLinksToMarkdown(attachment.Text)
attachment.Pretext = ParseSlackLinksToMarkdown(attachment.Pretext)
@@ -77,8 +83,9 @@ func ParseSlackAttachment(post *Post, attachments []*SlackAttachment) {
field.Value = ParseSlackLinksToMarkdown(value)
}
}
postAttachments = append(postAttachments, attachment)
}
post.AddProp("attachments", attachments)
post.AddProp("attachments", postAttachments)
}
func ParseSlackLinksToMarkdown(text string) string {

41
model/slack_attachment_test.go Обычный файл
Просмотреть файл

@@ -0,0 +1,41 @@
package model
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestParseSlackAttachment(t *testing.T) {
t.Run("empty list", func(t *testing.T) {
post := &Post{}
attachments := []*SlackAttachment{}
ParseSlackAttachment(post, attachments)
expectedPost := &Post{
Type: POST_SLACK_ATTACHMENT,
Props: map[string]interface{}{
"attachments": []*SlackAttachment{},
},
}
assert.Equal(t, expectedPost, post)
})
t.Run("list with nil", func(t *testing.T) {
post := &Post{}
attachments := []*SlackAttachment{
nil,
}
ParseSlackAttachment(post, attachments)
expectedPost := &Post{
Type: POST_SLACK_ATTACHMENT,
Props: map[string]interface{}{
"attachments": []*SlackAttachment{},
},
}
assert.Equal(t, expectedPost, post)
})
}