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