mirror of
https://github.com/grafana/grafana.git
synced 2024-11-30 04:34:23 -06:00
6768c6c059
Removes the public variable setting.SecretKey plus some other ones. Introduces some new functions for creating setting.Cfg.
100 lines
3.4 KiB
Go
100 lines
3.4 KiB
Go
package notifiers
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/grafana/grafana/pkg/components/simplejson"
|
|
"github.com/grafana/grafana/pkg/services/alerting"
|
|
"github.com/grafana/grafana/pkg/services/alerting/models"
|
|
"github.com/grafana/grafana/pkg/services/annotations/annotationstest"
|
|
encryptionservice "github.com/grafana/grafana/pkg/services/encryption/service"
|
|
"github.com/grafana/grafana/pkg/services/validations"
|
|
"github.com/grafana/grafana/pkg/setting"
|
|
)
|
|
|
|
func TestPushoverNotifier(t *testing.T) {
|
|
encryptionService := encryptionservice.SetupTestService(t)
|
|
|
|
t.Run("Parsing alert notification from settings", func(t *testing.T) {
|
|
t.Run("empty settings should return error", func(t *testing.T) {
|
|
json := `{ }`
|
|
|
|
settingsJSON, _ := simplejson.NewJson([]byte(json))
|
|
model := &models.AlertNotification{
|
|
Name: "Pushover",
|
|
Type: "pushover",
|
|
Settings: settingsJSON,
|
|
}
|
|
|
|
_, err := NewPushoverNotifier(setting.NewCfg(), model, encryptionService.GetDecryptedValue, nil)
|
|
require.Error(t, err)
|
|
})
|
|
|
|
t.Run("from settings", func(t *testing.T) {
|
|
json := `
|
|
{
|
|
"apiToken": "4SrUFQL4A5V5TQ1z5Pg9nxHXPXSTve",
|
|
"userKey": "tzNZYf36y0ohWwXo4XoUrB61rz1A4o",
|
|
"priority": "1",
|
|
"okPriority": "2",
|
|
"sound": "pushover",
|
|
"okSound": "magic"
|
|
}`
|
|
|
|
settingsJSON, _ := simplejson.NewJson([]byte(json))
|
|
model := &models.AlertNotification{
|
|
Name: "Pushover",
|
|
Type: "pushover",
|
|
Settings: settingsJSON,
|
|
}
|
|
|
|
not, err := NewPushoverNotifier(setting.NewCfg(), model, encryptionService.GetDecryptedValue, nil)
|
|
pushoverNotifier := not.(*PushoverNotifier)
|
|
|
|
require.Nil(t, err)
|
|
require.Equal(t, "Pushover", pushoverNotifier.Name)
|
|
require.Equal(t, "pushover", pushoverNotifier.Type)
|
|
require.Equal(t, "4SrUFQL4A5V5TQ1z5Pg9nxHXPXSTve", pushoverNotifier.APIToken)
|
|
require.Equal(t, "tzNZYf36y0ohWwXo4XoUrB61rz1A4o", pushoverNotifier.UserKey)
|
|
require.Equal(t, 1, pushoverNotifier.AlertingPriority)
|
|
require.Equal(t, 2, pushoverNotifier.OKPriority)
|
|
require.Equal(t, "pushover", pushoverNotifier.AlertingSound)
|
|
require.Equal(t, "magic", pushoverNotifier.OKSound)
|
|
})
|
|
})
|
|
}
|
|
|
|
func TestGenPushoverBody(t *testing.T) {
|
|
t.Run("Given common sounds", func(t *testing.T) {
|
|
sirenSound := "siren_sound_tst"
|
|
successSound := "success_sound_tst"
|
|
notifier := &PushoverNotifier{AlertingSound: sirenSound, OKSound: successSound}
|
|
|
|
t.Run("When alert is firing - should use siren sound", func(t *testing.T) {
|
|
evalContext := alerting.NewEvalContext(context.Background(),
|
|
&alerting.Rule{
|
|
State: models.AlertStateAlerting,
|
|
}, &validations.OSSPluginRequestValidator{}, nil, nil, nil, annotationstest.NewFakeAnnotationsRepo())
|
|
_, pushoverBody, err := notifier.genPushoverBody(evalContext, "", "")
|
|
|
|
require.Nil(t, err)
|
|
require.True(t, strings.Contains(pushoverBody.String(), sirenSound))
|
|
})
|
|
|
|
t.Run("When alert is ok - should use success sound", func(t *testing.T) {
|
|
evalContext := alerting.NewEvalContext(context.Background(),
|
|
&alerting.Rule{
|
|
State: models.AlertStateOK,
|
|
}, &validations.OSSPluginRequestValidator{}, nil, nil, nil, annotationstest.NewFakeAnnotationsRepo())
|
|
_, pushoverBody, err := notifier.genPushoverBody(evalContext, "", "")
|
|
|
|
require.Nil(t, err)
|
|
require.True(t, strings.Contains(pushoverBody.String(), successSound))
|
|
})
|
|
})
|
|
}
|