Fix panicing of ParseSlackAttachment for nil in attachments list (#10141)
Этот коммит содержится в:
коммит произвёл
Christopher Speller
родитель
c8fab6e313
Коммит
6d733e35f7
@@ -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
Обычный файл
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)
|
||||
})
|
||||
}
|
||||
Ссылка в новой задаче
Block a user