-
Notifications
You must be signed in to change notification settings - Fork 216
/
transcoder.go
45 lines (37 loc) · 1.14 KB
/
transcoder.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package test
import (
"context"
"testing"
"github.com/stretchr/testify/require"
cloudevents "github.com/cloudevents/sdk-go"
"github.com/cloudevents/sdk-go/pkg/binding"
)
type TranscoderTestArgs struct {
Name string
InputMessage binding.Message
WantEvent cloudevents.Event
Transformers []binding.TransformerFactory
}
func RunTranscoderTests(t *testing.T, ctx context.Context, tests []TranscoderTestArgs) {
for _, tt := range tests {
tt := tt // Don't use range variable inside scope
t.Run(tt.Name, func(t *testing.T) {
mockStructured := MockStructuredMessage{}
mockBinary := MockBinaryMessage{}
enc, err := binding.Encode(ctx, tt.InputMessage, &mockStructured, &mockBinary, tt.Transformers)
require.NoError(t, err)
var e cloudevents.Event
if enc == binding.EncodingStructured {
e, _, err = binding.ToEvent(ctx, &mockStructured)
require.NoError(t, err)
} else if enc == binding.EncodingBinary {
e, _, err = binding.ToEvent(ctx, &mockBinary)
require.NoError(t, err)
} else {
t.Fatalf("Unexpected encoding %v", enc)
}
require.NoError(t, err)
AssertEventEquals(t, tt.WantEvent, e)
})
}
}