github.com/argoproj/argo-events@v1.9.1/eventsources/sources/redis/start_test.go (about) 1 package redis 2 3 import ( 4 "encoding/json" 5 "testing" 6 7 "github.com/go-redis/redis/v8" 8 "github.com/stretchr/testify/assert" 9 "go.uber.org/zap/zaptest" 10 11 eventsourcecommon "github.com/argoproj/argo-events/eventsources/common" 12 metrics "github.com/argoproj/argo-events/metrics" 13 "github.com/argoproj/argo-events/pkg/apis/events" 14 "github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1" 15 ) 16 17 func Test_HandleOne(t *testing.T) { 18 el := &EventListener{ 19 EventSourceName: "esName", 20 EventName: "eName", 21 RedisEventSource: v1alpha1.RedisEventSource{}, 22 Metrics: metrics.NewMetrics("ns"), 23 } 24 25 msg := &redis.Message{ 26 Channel: "ch", 27 Pattern: "p", 28 Payload: `{"a": "b"}`, 29 } 30 31 getDispatcher := func(isJson bool) func(d []byte, opts ...eventsourcecommon.Option) error { 32 return func(d []byte, opts ...eventsourcecommon.Option) error { 33 eventData := &events.RedisEventData{} 34 err := json.Unmarshal(d, eventData) 35 assert.NoError(t, err) 36 assert.Equal(t, msg.Pattern, eventData.Pattern) 37 assert.Equal(t, msg.Channel, eventData.Channel) 38 if !isJson { 39 s, ok := eventData.Body.(string) 40 assert.True(t, ok) 41 assert.Equal(t, msg.Payload, s) 42 } else { 43 s, ok := eventData.Body.(map[string]interface{}) 44 assert.True(t, ok) 45 assert.Equal(t, "b", s["a"]) 46 } 47 return nil 48 } 49 } 50 51 err := el.handleOne(msg, getDispatcher(el.RedisEventSource.JSONBody), zaptest.NewLogger(t).Sugar()) 52 assert.NoError(t, err) 53 54 el.RedisEventSource.JSONBody = true 55 err = el.handleOne(msg, getDispatcher(el.RedisEventSource.JSONBody), zaptest.NewLogger(t).Sugar()) 56 assert.NoError(t, err) 57 }