90 lines
1.6 KiB
Go
90 lines
1.6 KiB
Go
package structs
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestEventSink_Valid(t *testing.T) {
|
|
cases := []struct {
|
|
desc string
|
|
e *EventSink
|
|
err error
|
|
}{
|
|
{
|
|
desc: "valid",
|
|
e: &EventSink{
|
|
|
|
ID: "sink",
|
|
Type: SinkWebhook,
|
|
Address: "http://127.0.0.1/",
|
|
Topics: map[Topic][]string{
|
|
TopicAll: {"*"},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
desc: "bad type",
|
|
e: &EventSink{
|
|
ID: "sink",
|
|
Type: "custom",
|
|
Address: "http://127.0.0.1/",
|
|
Topics: map[Topic][]string{
|
|
TopicAll: {"*"},
|
|
},
|
|
},
|
|
err: fmt.Errorf("Sink type invalid"),
|
|
},
|
|
{
|
|
desc: "bad ID",
|
|
e: &EventSink{
|
|
ID: "sink id",
|
|
Type: SinkWebhook,
|
|
Address: "http://127.0.0.1/",
|
|
Topics: map[Topic][]string{
|
|
TopicAll: {"*"},
|
|
},
|
|
},
|
|
err: fmt.Errorf("Sink ID contains a space"),
|
|
},
|
|
}
|
|
|
|
for _, tc := range cases {
|
|
t.Run(tc.desc, func(t *testing.T) {
|
|
err := tc.e.Validate()
|
|
if tc.err != nil {
|
|
require.Error(t, err)
|
|
require.Contains(t, err.Error(), tc.err.Error())
|
|
return
|
|
}
|
|
require.NoError(t, err)
|
|
})
|
|
}
|
|
|
|
}
|
|
|
|
func TestEventSink_Changed(t *testing.T) {
|
|
a := &EventSink{
|
|
ID: "sink",
|
|
Type: SinkWebhook,
|
|
Address: "http://127.0.0.1/",
|
|
Topics: map[Topic][]string{
|
|
TopicAll: {"*"},
|
|
},
|
|
}
|
|
b := new(EventSink)
|
|
*b = *a
|
|
require.True(t, b.EqualSubscriptionValues(a))
|
|
|
|
b.Address = "http://127.0.0.1:8080/sink"
|
|
require.False(t, b.EqualSubscriptionValues(a))
|
|
|
|
c := new(EventSink)
|
|
*c = *a
|
|
c.Topics = make(map[Topic][]string)
|
|
c.Topics["Deployment"] = []string{"5bccc81a-2514-48d3-890b-03bea3c84856"}
|
|
require.False(t, c.EqualSubscriptionValues(a))
|
|
}
|