keel/extension/notification/notification_test.go

130 lines
2.5 KiB
Go
Raw Normal View History

2017-10-03 19:22:01 +00:00
package notification
import (
"context"
"fmt"
"testing"
2017-11-01 18:25:28 +00:00
"github.com/keel-hq/keel/types"
2017-10-03 19:22:01 +00:00
)
type fakeSender struct {
sent *types.EventNotification
shouldConfigure bool
shouldError error
}
func (s *fakeSender) Configure(*Config) (bool, error) {
return s.shouldConfigure, nil
}
func (s *fakeSender) Send(event types.EventNotification) error {
s.sent = &event
fmt.Println("sending event")
return s.shouldError
}
func TestSend(t *testing.T) {
sndr := New(context.Background())
sndr.Configure(&Config{
Level: types.LevelDebug,
Attempts: 1,
})
fs := &fakeSender{
shouldConfigure: true,
shouldError: nil,
}
RegisterSender("fakeSender", fs)
defer sndr.UnregisterSender("fakeSender")
err := sndr.Send(types.EventNotification{
Level: types.LevelInfo,
Type: types.NotificationPreDeploymentUpdate,
Message: "foo",
})
if err != nil {
t.Errorf("unexpected error: %s", err)
}
if fs.sent.Message != "foo" {
t.Errorf("unexpected notification message: %s", fs.sent.Message)
}
if fs.sent.Level != types.LevelInfo {
t.Errorf("unexpected level: %s", fs.sent.Level)
}
}
// test when configured level is higher than the event
func TestSendLevelNotificationA(t *testing.T) {
sndr := New(context.Background())
sndr.Configure(&Config{
Level: types.LevelInfo,
Attempts: 1,
})
fs := &fakeSender{
shouldConfigure: true,
shouldError: nil,
}
RegisterSender("fakeSender", fs)
defer sndr.UnregisterSender("fakeSender")
err := sndr.Send(types.EventNotification{
Level: types.LevelDebug,
Type: types.NotificationPreDeploymentUpdate,
Message: "foo",
})
if err != nil {
t.Errorf("unexpected error: %s", err)
}
if fs.sent != nil {
t.Errorf("didn't expect to find sent even for this level")
}
}
// event level is higher than the configured
func TestSendLevelNotificationB(t *testing.T) {
sndr := New(context.Background())
sndr.Configure(&Config{
Level: types.LevelInfo,
Attempts: 1,
})
fs := &fakeSender{
shouldConfigure: true,
shouldError: nil,
}
RegisterSender("fakeSender", fs)
defer sndr.UnregisterSender("fakeSender")
err := sndr.Send(types.EventNotification{
Level: types.LevelSuccess,
Type: types.NotificationPreDeploymentUpdate,
Message: "foo",
})
if err != nil {
t.Errorf("unexpected error: %s", err)
}
if fs.sent.Message != "foo" {
t.Errorf("unexpected notification message: %s", fs.sent.Message)
}
if fs.sent.Level != types.LevelSuccess {
t.Errorf("unexpected level: %s", fs.sent.Level)
}
}