Skip to content

Commit 92f5f98

Browse files
committed
Add the event version name
Add the event version name in the generated filename as well as in the type names, so that we may host different versions within the SDK. Signed-off-by: Andrea Frittoli <[email protected]>
1 parent 6775a37 commit 92f5f98

File tree

54 files changed

+1820
-1789
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+1820
-1789
lines changed

pkg/api/bindings_test.go

Lines changed: 62 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,14 @@ limitations under the License.
1616
SPDX-License-Identifier: Apache-2.0
1717
*/
1818

19-
package api
19+
package api_test
2020

2121
import (
2222
"encoding/json"
2323
"os"
2424
"testing"
2525

26+
"github.com/cdevents/sdk-go/pkg/api"
2627
"github.com/google/go-cmp/cmp"
2728
"github.com/google/go-cmp/cmp/cmpopts"
2829
jsonschema "github.com/santhosh-tekuri/jsonschema/v5"
@@ -47,51 +48,57 @@ var (
4748
testDataXml = []byte("<xml>testData</xml>")
4849
testChangeId = "myChange123"
4950

50-
eventJsonCustomData *FooSubjectBarPredicateEvent
51-
eventNonJsonCustomData *FooSubjectBarPredicateEvent
52-
eventJsonCustomDataUnmarshalled *FooSubjectBarPredicateEvent
51+
eventJsonCustomData *api.FooSubjectBarPredicateEvent
52+
eventNonJsonCustomData *api.FooSubjectBarPredicateEvent
53+
eventJsonCustomDataUnmarshalled *api.FooSubjectBarPredicateEvent
5354

5455
eventJsonCustomDataFile = "json_custom_data"
5556
eventImplicitJsonCustomDataFile = "implicit_json_custom_data"
5657
eventNonJsonCustomDataFile = "non_json_custom_data"
5758
)
5859

59-
func setContext(event CDEventWriter, subjectId string) {
60+
func panicOnError(err error) {
61+
if err != nil {
62+
panic(err.Error())
63+
}
64+
}
65+
66+
func setContext(event api.CDEventWriter, subjectId string) {
6067
event.SetSource(testSource)
6168
event.SetSubjectId(subjectId)
6269
}
6370

6471
func init() {
65-
eventJsonCustomData, _ = NewFooSubjectBarPredicateEvent()
72+
eventJsonCustomData, _ = api.NewFooSubjectBarPredicateEvent()
6673
setContext(eventJsonCustomData, testSubjectId)
67-
eventJsonCustomData.SetSubjectReferenceField(&Reference{Id: testChangeId})
74+
eventJsonCustomData.SetSubjectReferenceField(&api.Reference{Id: testChangeId})
6875
eventJsonCustomData.SetSubjectPlainField(testValue)
6976
eventJsonCustomData.SetSubjectArtifactId(testArtifactId)
70-
eventJsonCustomData.SetSubjectObjectField(&FooSubjectBarPredicateSubjectContentObjectField{Required: testChangeId, Optional: testSource})
77+
eventJsonCustomData.SetSubjectObjectField(&api.FooSubjectBarPredicateSubjectContentObjectField{Required: testChangeId, Optional: testSource})
7178
err := eventJsonCustomData.SetCustomData("application/json", testDataJson)
7279
panicOnError(err)
7380

74-
eventJsonCustomDataUnmarshalled, _ = NewFooSubjectBarPredicateEvent()
81+
eventJsonCustomDataUnmarshalled, _ = api.NewFooSubjectBarPredicateEvent()
7582
setContext(eventJsonCustomDataUnmarshalled, testSubjectId)
76-
eventJsonCustomDataUnmarshalled.SetSubjectReferenceField(&Reference{Id: testChangeId})
83+
eventJsonCustomDataUnmarshalled.SetSubjectReferenceField(&api.Reference{Id: testChangeId})
7784
eventJsonCustomDataUnmarshalled.SetSubjectPlainField(testValue)
7885
eventJsonCustomDataUnmarshalled.SetSubjectArtifactId(testArtifactId)
79-
eventJsonCustomDataUnmarshalled.SetSubjectObjectField(&FooSubjectBarPredicateSubjectContentObjectField{Required: testChangeId, Optional: testSource})
86+
eventJsonCustomDataUnmarshalled.SetSubjectObjectField(&api.FooSubjectBarPredicateSubjectContentObjectField{Required: testChangeId, Optional: testSource})
8087
err = eventJsonCustomDataUnmarshalled.SetCustomData("application/json", testDataJsonUnmarshalled)
8188
panicOnError(err)
8289

83-
eventNonJsonCustomData, _ = NewFooSubjectBarPredicateEvent()
90+
eventNonJsonCustomData, _ = api.NewFooSubjectBarPredicateEvent()
8491
setContext(eventNonJsonCustomData, testSubjectId)
85-
eventNonJsonCustomData.SetSubjectReferenceField(&Reference{Id: testChangeId})
92+
eventNonJsonCustomData.SetSubjectReferenceField(&api.Reference{Id: testChangeId})
8693
eventNonJsonCustomData.SetSubjectPlainField(testValue)
8794
eventNonJsonCustomData.SetSubjectArtifactId(testArtifactId)
88-
eventNonJsonCustomData.SetSubjectObjectField(&FooSubjectBarPredicateSubjectContentObjectField{Required: testChangeId, Optional: testSource})
95+
eventNonJsonCustomData.SetSubjectObjectField(&api.FooSubjectBarPredicateSubjectContentObjectField{Required: testChangeId, Optional: testSource})
8996
err = eventNonJsonCustomData.SetCustomData("application/xml", testDataXml)
9097
panicOnError(err)
9198

9299
// Extend the map of valid events with the test ones
93-
for k, v := range TestCDEventsByUnversionedTypes {
94-
CDEventsByUnversionedTypes[k] = v
100+
for k, v := range api.TestCDEventsByUnversionedTypes {
101+
api.CDEventsByUnversionedTypes[k] = v
95102
}
96103
}
97104

@@ -101,7 +108,7 @@ func TestAsCloudEvent(t *testing.T) {
101108

102109
tests := []struct {
103110
name string
104-
event CDEventReader
111+
event api.CDEventReader
105112
}{{
106113
name: "event with JSON custom data",
107114
event: eventJsonCustomData,
@@ -111,8 +118,8 @@ func TestAsCloudEvent(t *testing.T) {
111118
}}
112119
for _, tc := range tests {
113120
t.Run(tc.name, func(t *testing.T) {
114-
payloadReceiver := &FooSubjectBarPredicateEvent{}
115-
ce, err := AsCloudEvent(tc.event)
121+
payloadReceiver := &api.FooSubjectBarPredicateEvent{}
122+
ce, err := api.AsCloudEvent(tc.event)
116123
if err != nil {
117124
t.Fatalf("didn't expected it to fail, but it did: %v", err)
118125
}
@@ -132,7 +139,7 @@ func TestAsCloudEvent(t *testing.T) {
132139
if err != nil {
133140
t.Fatalf("somehow cannot unmarshal test event %v, %v", ce, err)
134141
}
135-
if d := cmp.Diff(tc.event, payloadReceiver, cmpopts.IgnoreFields(CDEventCustomData{}, "CustomData")); d != "" {
142+
if d := cmp.Diff(tc.event, payloadReceiver, cmpopts.IgnoreFields(api.CDEventCustomData{}, "CustomData")); d != "" {
136143
t.Errorf("args: diff(-want,+got):\n%s", d)
137144
}
138145
if tc.event.GetCustomDataContentType() == "application/json" {
@@ -168,7 +175,7 @@ func TestAsCloudEvent(t *testing.T) {
168175
}
169176

170177
func TestAsCloudEventInvalid(t *testing.T) {
171-
_, err := AsCloudEvent(nil)
178+
_, err := api.AsCloudEvent(nil)
172179
if err == nil {
173180
t.Fatalf("expected it to fail, but it didn't")
174181
}
@@ -182,7 +189,7 @@ func TestAsJsonBytes(t *testing.T) {
182189

183190
tests := []struct {
184191
name string
185-
event CDEvent
192+
event api.CDEvent
186193
fileName string
187194
}{{
188195
name: "json custom data",
@@ -216,7 +223,7 @@ func TestAsJsonBytes(t *testing.T) {
216223
t.Fatalf("Failed to validate events %s", err)
217224
}
218225
// Then test that AsJsonBytes produces a matching JSON from the event
219-
obtainedJsonString, err := AsJsonBytes(tc.event)
226+
obtainedJsonString, err := api.AsJsonBytes(tc.event)
220227
if err != nil {
221228
t.Fatalf("didn't expected it to fail, but it did: %v", err)
222229
}
@@ -238,52 +245,52 @@ func TestAsJsonBytes(t *testing.T) {
238245
func TestInvalidEvent(t *testing.T) {
239246

240247
// mandatory source missing
241-
eventNoSource, _ := NewFooSubjectBarPredicateEvent()
248+
eventNoSource, _ := api.NewFooSubjectBarPredicateEvent()
242249
eventNoSource.SetSubjectId(testSubjectId)
243250

244251
// mandatory subject id missing
245-
eventNoSubjectId, _ := NewFooSubjectBarPredicateEvent()
252+
eventNoSubjectId, _ := api.NewFooSubjectBarPredicateEvent()
246253
eventNoSubjectId.SetSource(testSource)
247254

248255
// forced invalid version
249-
eventBadVersion, _ := NewFooSubjectBarPredicateEvent()
256+
eventBadVersion, _ := api.NewFooSubjectBarPredicateEvent()
250257
eventBadVersion.Context.Version = "invalid"
251258

252259
// mandatory plainField and referenceField missing
253-
eventIncompleteSubject, _ := NewFooSubjectBarPredicateEvent()
260+
eventIncompleteSubject, _ := api.NewFooSubjectBarPredicateEvent()
254261
eventIncompleteSubject.SetSource(testSource)
255262
eventIncompleteSubject.SetSubjectId(testSubjectId)
256263

257264
// invalid source format in context
258-
eventInvalidSource, _ := NewFooSubjectBarPredicateEvent()
265+
eventInvalidSource, _ := api.NewFooSubjectBarPredicateEvent()
259266
eventInvalidSource.SetSource("\\--##@@")
260267

261268
// invalid source format in reference
262-
eventInvalidSourceReference, _ := NewFooSubjectBarPredicateEvent()
269+
eventInvalidSourceReference, _ := api.NewFooSubjectBarPredicateEvent()
263270
eventInvalidSourceReference.SetSubjectReferenceField(
264-
&Reference{Id: "1234", Source: "\\--##@@"})
271+
&api.Reference{Id: "1234", Source: "\\--##@@"})
265272

266273
// invalid format of purl
267-
eventInvalidPurl, _ := NewFooSubjectBarPredicateEvent()
274+
eventInvalidPurl, _ := api.NewFooSubjectBarPredicateEvent()
268275
setContext(eventInvalidPurl, testSubjectId)
269276
eventInvalidPurl.SetSubjectArtifactId("not-a-valid-purl")
270277

271278
// invalid event type
272-
eventInvalidType := &FooSubjectBarPredicateEvent{
273-
Context: Context{
279+
eventInvalidType := &api.FooSubjectBarPredicateEvent{
280+
Context: api.Context{
274281
Type: "not-a-valid-type",
275-
Version: CDEventsSpecVersion,
282+
Version: api.CDEventsSpecVersion,
276283
},
277-
Subject: FooSubjectBarPredicateSubject{
278-
SubjectBase: SubjectBase{
284+
Subject: api.FooSubjectBarPredicateSubject{
285+
SubjectBase: api.SubjectBase{
279286
Type: "notAValidSubjectType",
280287
},
281288
},
282289
}
283290

284291
tests := []struct {
285292
name string
286-
event CDEvent
293+
event api.CDEvent
287294
}{{
288295
name: "missing source",
289296
event: eventNoSource,
@@ -312,7 +319,7 @@ func TestInvalidEvent(t *testing.T) {
312319
for _, tc := range tests {
313320
t.Run(tc.name, func(t *testing.T) {
314321
// First validate that the test JSON compiles against the schema
315-
err := Validate(tc.event)
322+
err := api.Validate(tc.event)
316323
if err == nil {
317324
t.Fatalf("Expected validation to fail, but it succeeded instead")
318325
}
@@ -321,7 +328,7 @@ func TestInvalidEvent(t *testing.T) {
321328
}
322329

323330
func TestAsJsonStringEmpty(t *testing.T) {
324-
obtainedJsonString, err := AsJsonString(nil)
331+
obtainedJsonString, err := api.AsJsonString(nil)
325332
if err != nil {
326333
t.Fatalf("didn't expected it to fail, but it did: %v", err)
327334
}
@@ -334,7 +341,7 @@ func TestNewFromJsonString(t *testing.T) {
334341

335342
tests := []struct {
336343
name string
337-
event CDEvent
344+
event api.CDEvent
338345
fileName string
339346
}{{
340347
name: "json custom data",
@@ -356,7 +363,7 @@ func TestNewFromJsonString(t *testing.T) {
356363
if err != nil {
357364
t.Fatalf("didn't expected it to fail, but it did: %v", err)
358365
}
359-
obtainedEvent, err := NewFromJsonBytes(eventBytes)
366+
obtainedEvent, err := api.NewFromJsonBytes(eventBytes)
360367
if err != nil {
361368
t.Fatalf("didn't expected it to fail, but it did: %v", err)
362369
}
@@ -401,12 +408,12 @@ func TestParseType(t *testing.T) {
401408
tests := []struct {
402409
name string
403410
eventType string
404-
want *CDEventType
411+
want *api.CDEventType
405412
wantError string
406413
}{{
407414
name: "valid",
408415
eventType: "dev.cdevents.foosubject.barpredicate.0.1.2-draft",
409-
want: &CDEventType{
416+
want: &api.CDEventType{
410417
Subject: "foosubject",
411418
Predicate: "barpredicate",
412419
Version: "0.1.2-draft",
@@ -440,7 +447,7 @@ func TestParseType(t *testing.T) {
440447
}}
441448
for _, tc := range tests {
442449
t.Run(tc.name, func(t *testing.T) {
443-
obtained, err := ParseType(tc.eventType)
450+
obtained, err := api.ParseType(tc.eventType)
444451
if err != nil {
445452
if tc.wantError == "" {
446453
t.Fatalf("didn't expected it to fail, but it did: %v", err)
@@ -459,16 +466,16 @@ func TestParseType(t *testing.T) {
459466
}
460467
}
461468

462-
func testEventWithVersion(eventVersion string, specVersion string) *FooSubjectBarPredicateEvent {
463-
event, _ := NewFooSubjectBarPredicateEvent()
469+
func testEventWithVersion(eventVersion string, specVersion string) *api.FooSubjectBarPredicateEvent {
470+
event, _ := api.NewFooSubjectBarPredicateEvent()
464471
setContext(event, testSubjectId)
465-
event.SetSubjectReferenceField(&Reference{Id: testChangeId})
472+
event.SetSubjectReferenceField(&api.Reference{Id: testChangeId})
466473
event.SetSubjectPlainField(testValue)
467474
event.SetSubjectArtifactId(testArtifactId)
468-
event.SetSubjectObjectField(&FooSubjectBarPredicateSubjectContentObjectField{Required: testChangeId, Optional: testSource})
475+
event.SetSubjectObjectField(&api.FooSubjectBarPredicateSubjectContentObjectField{Required: testChangeId, Optional: testSource})
469476
err := event.SetCustomData("application/json", testDataJsonUnmarshalled)
470477
panicOnError(err)
471-
etype, err := ParseType(event.Context.Type)
478+
etype, err := api.ParseType(event.Context.Type)
472479
panicOnError(err)
473480
etype.Version = eventVersion
474481
event.Context.Version = specVersion
@@ -478,16 +485,16 @@ func testEventWithVersion(eventVersion string, specVersion string) *FooSubjectBa
478485

479486
func TestNewFromJsonBytes(t *testing.T) {
480487

481-
minorVersion := testEventWithVersion("1.999.0", CDEventsSpecVersion)
482-
patchVersion := testEventWithVersion("1.2.999", CDEventsSpecVersion)
483-
pastPatchVersion := testEventWithVersion("1.2.0", CDEventsSpecVersion)
488+
minorVersion := testEventWithVersion("1.999.0", api.CDEventsSpecVersion)
489+
patchVersion := testEventWithVersion("1.2.999", api.CDEventsSpecVersion)
490+
pastPatchVersion := testEventWithVersion("1.2.0", api.CDEventsSpecVersion)
484491
pastSpecVersion := testEventWithVersion("1.2.3", "0.1.0")
485492

486493
tests := []struct {
487494
testFile string
488495
description string
489496
wantError string
490-
wantEvent CDEvent
497+
wantEvent api.CDEvent
491498
}{{
492499
testFile: "future_event_major_version",
493500
description: "A newer major version in the event is backward incompatible and cannot be parsed",
@@ -531,7 +538,7 @@ func TestNewFromJsonBytes(t *testing.T) {
531538
if err != nil {
532539
t.Fatalf("didn't expected it to fail, but it did: %v", err)
533540
}
534-
obtained, err := NewFromJsonBytes(eventBytes)
541+
obtained, err := api.NewFromJsonBytes(eventBytes)
535542
if err != nil {
536543
if tc.wantError == "" {
537544
t.Fatalf("didn't expected it to fail, but it did: %v", err)
@@ -547,7 +554,7 @@ func TestNewFromJsonBytes(t *testing.T) {
547554
t.Fatalf("expected an error, but go none")
548555
} else {
549556
// Check the event is what is expected
550-
if d := cmp.Diff(tc.wantEvent, obtained, cmpopts.IgnoreFields(Context{}, "Id", "Timestamp")); d != "" {
557+
if d := cmp.Diff(tc.wantEvent, obtained, cmpopts.IgnoreFields(api.Context{}, "Id", "Timestamp")); d != "" {
551558
t.Errorf("args: diff(-want,+got):\n%s", d)
552559
}
553560
}

0 commit comments

Comments
 (0)