diff --git a/pkg/notifications/notifier_test.go b/pkg/notifications/notifier_test.go index 3ddb7f8..1b004dc 100644 --- a/pkg/notifications/notifier_test.go +++ b/pkg/notifications/notifier_test.go @@ -149,6 +149,8 @@ var _ = Describe("notifications", func() { color := notifications.ColorInt data := notifications.GetTemplateData(command) title := url.QueryEscape(data.Title) + username := "containrrrbot" + iconURL := "https://containrrr.dev/watchtower-sq180.png" expected := fmt.Sprintf("discord://%s@%s?color=0x%x&colordebug=0x0&colorerror=0x0&colorinfo=0x0&colorwarn=0x0&title=%s&username=watchtower", token, channel, color, title) buildArgs := func(url string) []string { return []string{ @@ -167,6 +169,27 @@ var _ = Describe("notifications", func() { hookURL := fmt.Sprintf("https://%s/api/webhooks/%s/%s/slack", "discordapp.com", channel, token) testURL(buildArgs(hookURL), expected, time.Duration(0)) }) + When("icon URL and username are specified", func() { + It("should return the expected URL", func() { + hookURL := fmt.Sprintf("https://%s/api/webhooks/%s/%s/slack", "discord.com", channel, token) + expectedOutput := fmt.Sprintf("discord://%s@%s?avatar=%s&color=0x%x&colordebug=0x0&colorerror=0x0&colorinfo=0x0&colorwarn=0x0&title=%s&username=%s", token, channel, url.QueryEscape(iconURL), color, title, username) + expectedDelay := time.Duration(7) * time.Second + args := []string{ + "--notifications", + "slack", + "--notification-slack-hook-url", + hookURL, + "--notification-slack-identifier", + username, + "--notification-slack-icon-url", + iconURL, + "--notifications-delay", + fmt.Sprint(expectedDelay.Seconds()), + } + + testURL(args, expectedOutput, expectedDelay) + }) + }) }) When("converting a slack service config into a shoutrrr url", func() { command := cmd.NewRootCommand() diff --git a/pkg/notifications/slack.go b/pkg/notifications/slack.go index faff944..f4fa158 100644 --- a/pkg/notifications/slack.go +++ b/pkg/notifications/slack.go @@ -56,6 +56,11 @@ func (s *slackTypeNotifier) GetURL(c *cobra.Command, title string) (string, erro SplitLines: true, Username: s.Username, } + + if s.IconURL != "" { + conf.Avatar = s.IconURL + } + return conf.GetURL().String(), nil }