From 3836f9992056410e00041004132f5d53b4e43300 Mon Sep 17 00:00:00 2001 From: Joey Lee Date: Sat, 18 Nov 2017 03:17:59 +1100 Subject: PLT-7824 Added support for mentions with <@userid> and (#7615) (#7737) --- model/command_response.go | 3 +-- model/incoming_webhook.go | 3 +-- model/incoming_webhook_test.go | 58 ------------------------------------------ model/slack_attachment.go | 25 ++---------------- model/slack_attachment_test.go | 38 --------------------------- 5 files changed, 4 insertions(+), 123 deletions(-) delete mode 100644 model/slack_attachment_test.go (limited to 'model') diff --git a/model/command_response.go b/model/command_response.go index f5c628b71..a3a171ce4 100644 --- a/model/command_response.go +++ b/model/command_response.go @@ -59,8 +59,7 @@ func CommandResponseFromJson(data io.Reader) *CommandResponse { return nil } - o.Text = ExpandAnnouncement(o.Text) - o.Attachments = ProcessSlackAttachments(o.Attachments) + o.Attachments = StringifySlackFieldValue(o.Attachments) return &o } diff --git a/model/incoming_webhook.go b/model/incoming_webhook.go index e8ed6dc82..e9468e87b 100644 --- a/model/incoming_webhook.go +++ b/model/incoming_webhook.go @@ -208,8 +208,7 @@ func IncomingWebhookRequestFromJson(data io.Reader) (*IncomingWebhookRequest, *A } } - o.Text = ExpandAnnouncement(o.Text) - o.Attachments = ProcessSlackAttachments(o.Attachments) + o.Attachments = StringifySlackFieldValue(o.Attachments) return o, nil } diff --git a/model/incoming_webhook_test.go b/model/incoming_webhook_test.go index a716432f2..5b78f877f 100644 --- a/model/incoming_webhook_test.go +++ b/model/incoming_webhook_test.go @@ -101,64 +101,6 @@ func TestIncomingWebhookPreUpdate(t *testing.T) { o.PreUpdate() } -func TestIncomingWebhookRequestFromJson_Announcements(t *testing.T) { - text := "This message will send a notification to all team members in the channel where you post the message, because it contains: " - expected := "This message will send a notification to all team members in the channel where you post the message, because it contains: @channel" - - // simple payload - payload := `{"text": "` + text + `"}` - data := strings.NewReader(payload) - iwr, _ := IncomingWebhookRequestFromJson(data) - - if iwr == nil { - t.Fatal("IncomingWebhookRequest should not be nil") - } - if iwr.Text != expected { - t.Fatalf("Sample text should be: %s, got: %s", expected, iwr.Text) - } - - // payload with attachment (pretext, title, text, value) - payload = `{ - "attachments": [ - { - "pretext": "` + text + `", - "title": "` + text + `", - "text": "` + text + `", - "fields": [ - { - "title": "A title", - "value": "` + text + `", - "short": false - } - ] - } - ] - }` - - data = strings.NewReader(payload) - iwr, _ = IncomingWebhookRequestFromJson(data) - - if iwr == nil { - t.Fatal("IncomingWebhookRequest should not be nil") - } - - attachment := iwr.Attachments[0] - if attachment.Pretext != expected { - t.Fatalf("Sample attachment pretext should be:%s, got: %s", expected, attachment.Pretext) - } - if attachment.Text != expected { - t.Fatalf("Sample attachment text should be: %s, got: %s", expected, attachment.Text) - } - if attachment.Title != expected { - t.Fatalf("Sample attachment title should be: %s, got: %s", expected, attachment.Title) - } - - field := attachment.Fields[0] - if field.Value != expected { - t.Fatalf("Sample attachment field value should be: %s, got: %s", expected, field.Value) - } -} - func TestIncomingWebhookRequestFromJson(t *testing.T) { texts := []string{ `this is a test`, diff --git a/model/slack_attachment.go b/model/slack_attachment.go index fe3958316..197d3f0f9 100644 --- a/model/slack_attachment.go +++ b/model/slack_attachment.go @@ -5,7 +5,6 @@ package model import ( "fmt" - "strings" ) type SlackAttachment struct { @@ -34,23 +33,7 @@ type SlackAttachmentField struct { Short bool `json:"short"` } -// To mention @channel via a webhook in Slack, the message should contain -// , as explained at the bottom of this article: -// https://get.slack.help/hc/en-us/articles/202009646-Making-announcements -func ExpandAnnouncement(text string) string { - c1 := "" - c2 := "@channel" - if strings.Contains(text, c1) { - return strings.Replace(text, c1, c2, -1) - } - return text -} - -// Expand announcements in incoming webhooks from Slack. Those announcements -// can be found in the text attribute, or in the pretext, text, title and value -// attributes of the attachment structure. The Slack attachment structure is -// documented here: https://api.slack.com/docs/attachments -func ProcessSlackAttachments(a []*SlackAttachment) []*SlackAttachment { +func StringifySlackFieldValue(a []*SlackAttachment) []*SlackAttachment { var nonNilAttachments []*SlackAttachment for _, attachment := range a { if attachment == nil { @@ -58,10 +41,6 @@ func ProcessSlackAttachments(a []*SlackAttachment) []*SlackAttachment { } nonNilAttachments = append(nonNilAttachments, attachment) - attachment.Pretext = ExpandAnnouncement(attachment.Pretext) - attachment.Text = ExpandAnnouncement(attachment.Text) - attachment.Title = ExpandAnnouncement(attachment.Title) - var nonNilFields []*SlackAttachmentField for _, field := range attachment.Fields { if field == nil { @@ -71,7 +50,7 @@ func ProcessSlackAttachments(a []*SlackAttachment) []*SlackAttachment { if field.Value != nil { // Ensure the value is set to a string if it is set - field.Value = ExpandAnnouncement(fmt.Sprintf("%v", field.Value)) + field.Value = fmt.Sprintf("%v", field.Value) } } attachment.Fields = nonNilFields diff --git a/model/slack_attachment_test.go b/model/slack_attachment_test.go deleted file mode 100644 index 2ba32baf2..000000000 --- a/model/slack_attachment_test.go +++ /dev/null @@ -1,38 +0,0 @@ -package model - -import ( - "testing" -) - -func TestExpandAnnouncement(t *testing.T) { - if ExpandAnnouncement(" foo ") != "@channel foo @channel" { - t.Fail() - } -} - -func TestProcessSlackAnnouncement(t *testing.T) { - attachments := []*SlackAttachment{ - { - Pretext: " pretext", - Text: " text", - Title: " title", - Fields: []*SlackAttachmentField{ - { - Title: "foo", - Value: " bar", - Short: true, - }, nil, - }, - }, nil, - } - attachments = ProcessSlackAttachments(attachments) - if len(attachments) != 1 || len(attachments[0].Fields) != 1 { - t.Fail() - } - if attachments[0].Pretext != "@channel pretext" || - attachments[0].Text != "@channel text" || - attachments[0].Title != "@channel title" || - attachments[0].Fields[0].Value != "@channel bar" { - t.Fail() - } -} -- cgit v1.2.3-1-g7c22