From 924deda589d7150cdb668a25b255ee4168dc2763 Mon Sep 17 00:00:00 2001 From: George Robinson Date: Wed, 2 Feb 2022 13:28:41 +0000 Subject: [PATCH] Fix Discord Webhook URL for invalid template (#44763) This commit fixes an issue where an invalid template for Discord would change the Webhook URL to "" and cause "unsupported protocol scheme" errors. --- pkg/services/ngalert/notifier/channels/discord.go | 1 + pkg/services/ngalert/notifier/channels/discord_test.go | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/pkg/services/ngalert/notifier/channels/discord.go b/pkg/services/ngalert/notifier/channels/discord.go index 22cb9bd23b3..3937a1cfe4e 100644 --- a/pkg/services/ngalert/notifier/channels/discord.go +++ b/pkg/services/ngalert/notifier/channels/discord.go @@ -103,6 +103,7 @@ func (d DiscordNotifier) Notify(ctx context.Context, as ...*types.Alert) (bool, u := tmpl(d.WebhookURL) if tmplErr != nil { d.log.Warn("failed to template Discord message", "err", tmplErr.Error()) + return false, tmplErr } body, err := json.Marshal(bodyJSON) diff --git a/pkg/services/ngalert/notifier/channels/discord_test.go b/pkg/services/ngalert/notifier/channels/discord_test.go index 3a7efd27c22..51a89589e64 100644 --- a/pkg/services/ngalert/notifier/channels/discord_test.go +++ b/pkg/services/ngalert/notifier/channels/discord_test.go @@ -3,6 +3,7 @@ package channels import ( "context" "encoding/json" + "errors" "net/url" "testing" @@ -99,6 +100,14 @@ func TestDiscordNotifier(t *testing.T) { settings: `{}`, expInitError: `failed to validate receiver "discord_testing" of type "discord": could not find webhook url property in settings`, }, + { + name: "Invalid template returns error", + settings: `{ + "url": "http://localhost", + "message": "{{ template \"invalid.template\" }}" + }`, + expMsgError: errors.New("template: :1:12: executing \"\" at <{{template \"invalid.template\"}}>: template \"invalid.template\" not defined"), + }, { name: "Default config with one alert, use default discord username", settings: `{