mirror of https://github.com/statping/statping
86 lines
1.5 KiB
Go
86 lines
1.5 KiB
Go
package notifiers
|
|
|
|
import (
|
|
"github.com/statping/statping/types/services"
|
|
"github.com/stretchr/testify/assert"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestAllNotifiers(t *testing.T) {
|
|
|
|
notifiers := []notifierTest{
|
|
{
|
|
Notifier: Command,
|
|
RequiredENV: nil,
|
|
},
|
|
{
|
|
Notifier: Discorder,
|
|
RequiredENV: []string{"DISCORD_URL"},
|
|
},
|
|
{
|
|
Notifier: email,
|
|
RequiredENV: []string{"EMAIL_HOST", "EMAIL_USER", "EMAIL_PASS", "EMAIL_OUTGOING", "EMAIL_SEND_TO", "EMAIL_PORT"},
|
|
},
|
|
{
|
|
Notifier: Mobile,
|
|
RequiredENV: []string{"MOBILE_ID", "MOBILE_NUMBER"},
|
|
},
|
|
{
|
|
Notifier: Pushover,
|
|
RequiredENV: []string{"PUSHOVER_TOKEN", "PUSHOVER_API"},
|
|
},
|
|
{
|
|
Notifier: slacker,
|
|
RequiredENV: []string{"SLACK_URL"},
|
|
},
|
|
{
|
|
Notifier: Telegram,
|
|
RequiredENV: []string{"TELEGRAM_TOKEN", "TELEGRAM_CHANNEL"},
|
|
},
|
|
{
|
|
Notifier: Twilio,
|
|
RequiredENV: []string{"TWILIO_SID", "TWILIO_SECRET", "TWILIO_FROM", "TWILIO_TO"},
|
|
},
|
|
{
|
|
Notifier: Webhook,
|
|
RequiredENV: nil,
|
|
},
|
|
}
|
|
|
|
for _, n := range notifiers {
|
|
|
|
if !getEnvs(n.RequiredENV) {
|
|
t.Skip()
|
|
continue
|
|
}
|
|
|
|
Add(n.Notifier)
|
|
|
|
err := n.Notifier.OnSuccess(exampleService)
|
|
assert.Nil(t, err)
|
|
|
|
err = n.Notifier.OnFailure(exampleService, exampleFailure)
|
|
assert.Nil(t, err)
|
|
|
|
_, err = n.Notifier.OnTest()
|
|
assert.Nil(t, err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
func getEnvs(env []string) bool {
|
|
for _, v := range env {
|
|
if os.Getenv(v) == "" {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
type notifierTest struct {
|
|
Notifier services.ServiceNotifier
|
|
RequiredENV []string
|
|
}
|