diff --git a/pkg/services/ngalert/state/compat.go b/pkg/services/ngalert/state/compat.go index 70d97e474d8..fbe934bc344 100644 --- a/pkg/services/ngalert/state/compat.go +++ b/pkg/services/ngalert/state/compat.go @@ -49,7 +49,10 @@ func StateToPostableAlert(alertState *State, appURL *url.URL) *models.PostableAl } if alertState.Image != nil { - nA[alertingModels.ImageTokenAnnotation] = generateImageURI(alertState.Image) + imageURI := generateImageURI(alertState.Image) + if imageURI != "" { + nA[alertingModels.ImageTokenAnnotation] = imageURI + } } if alertState.StateReason != "" { @@ -174,5 +177,9 @@ func generateImageURI(image *ngModels.Image) string { if image.URL != "" { return image.URL } - return "token://" + image.Token + if image.Token != "" { + return "token://" + image.Token + } + + return "" } diff --git a/pkg/services/ngalert/state/compat_test.go b/pkg/services/ngalert/state/compat_test.go index a33551cc27f..f98f32ff7a1 100644 --- a/pkg/services/ngalert/state/compat_test.go +++ b/pkg/services/ngalert/state/compat_test.go @@ -133,6 +133,21 @@ func Test_StateToPostableAlert(t *testing.T) { require.Equal(t, expected, result.Annotations) }) + + t.Run("don't add __alertImageToken__ if there's no image token", func(t *testing.T) { + alertState := randomState(tc.state) + alertState.Annotations = randomMapOfStrings() + alertState.Image = &ngModels.Image{} + + result := StateToPostableAlert(alertState, appURL) + + expected := make(models.LabelSet, len(alertState.Annotations)+1) + for k, v := range alertState.Annotations { + expected[k] = v + } + + require.Equal(t, expected, result.Annotations) + }) }) t.Run("should add state reason annotation if not empty", func(t *testing.T) {