diff --git a/model/slack_attachment.go b/model/slack_attachment.go index 17abddeb06..405686ed82 100644 --- a/model/slack_attachment.go +++ b/model/slack_attachment.go @@ -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 { diff --git a/model/slack_attachment_test.go b/model/slack_attachment_test.go new file mode 100644 index 0000000000..8043f34245 --- /dev/null +++ b/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) + }) +}