in events/validators.go [196:266]
func validateCloudEvent(name string, gotBytes, wantBytes []byte) *ValidationInfo {
vi := &ValidationInfo{
Name: name,
}
got := &cloudevents.Event{}
err := json.Unmarshal(gotBytes, got)
if err != nil {
vi.Errs = append(vi.Errs, fmt.Errorf("unmarshalling function-received version of cloud event %q: %v", name, err))
}
want := &cloudevents.Event{}
err = json.Unmarshal(wantBytes, want)
if err != nil {
vi.Errs = append(vi.Errs, fmt.Errorf("unmarshalling expected contents of cloud event %q: %v", name, err))
}
// If there were issues extracting the data, bail early.
if vi.Errs != nil {
return vi
}
fields := []struct {
name string
gotValue interface{}
wantValue interface{}
}{
{
name: "ID",
gotValue: got.ID(),
wantValue: want.ID(),
},
{
name: "source",
gotValue: got.Source(),
wantValue: want.Source(),
},
{
name: "subject",
gotValue: got.Subject(),
wantValue: want.Subject(),
},
{
name: "type",
gotValue: got.Type(),
wantValue: want.Type(),
},
{
name: "time",
gotValue: got.Time(),
wantValue: want.Time(),
},
{
name: "datacontenttype",
gotValue: got.DataContentType(),
wantValue: want.DataContentType(),
},
{
name: "data",
gotValue: unmarshalMap(got.Data(), vi),
wantValue: unmarshalMap(want.Data(), vi),
},
}
for _, field := range fields {
if !cmp.Equal(field.gotValue, field.wantValue) {
vi.Errs = append(vi.Errs, fmt.Errorf("unexpected %q field in %q: got %v, want %v", field.name, name, field.gotValue, field.wantValue))
}
}
return vi
}