@@ -16,13 +16,14 @@ limitations under the License.
1616SPDX-License-Identifier: Apache-2.0
1717*/
1818
19- package api
19+ package api_test
2020
2121import (
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
6471func 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
170177func 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) {
238245func 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
323330func 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
479486func 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