diff --git a/lib/specs/spec_0_1.js b/lib/specs/spec_0_1.js index 3933e40..30465f4 100644 --- a/lib/specs/spec_0_1.js +++ b/lib/specs/spec_0_1.js @@ -57,7 +57,28 @@ Spec_0_1.prototype.time = function(_time){ return this; } -//TODO another attributes . . . +Spec_0_1.prototype.schemaurl = function(_schemaurl){ + this.payload['schemaURL'] = _schemaurl; + return this; +} + +Spec_0_1.prototype.contenttype = function(_contenttype){ + this.payload['contentType'] = _contenttype; + return this; +} + +Spec_0_1.prototype.data = function(_data){ + this.payload['data'] = _data; + return this; +} + +Spec_0_1.prototype.addExtension = function(key, value){ + if(!this.payload['extensions']){ + this.payload['extensions'] = {}; + } + this.payload['extensions'][key] = value; + return this; +} module.exports = Spec_0_1; diff --git a/test/cloudevent_spec_0_1.js b/test/cloudevent_spec_0_1.js index 66bf5b1..a7c060c 100644 --- a/test/cloudevent_spec_0_1.js +++ b/test/cloudevent_spec_0_1.js @@ -4,6 +4,10 @@ var Cloudevent = require("../index.js"); const type = "com.github.pull.create"; const source = "urn:event:from:myapi/resourse/123"; const time = new Date(); +const schemaurl = "http://example.com/registry/myschema.json"; +const contenttype = "application/json"; +const data = {}; +const extensions = {}; var cloudevent = new Cloudevent() .type(type) @@ -18,6 +22,11 @@ describe("CloudEvents Spec 0.1 - JavaScript SDK", () => { expect(cloudevent.format()).to.have.property('eventType'); }); + it("requires 'eventTypeVersion'", () => { + cloudevent.eventTypeVersion("1.0"); + expect(cloudevent.format()).to.have.property('eventTypeVersion'); + }); + it("requires 'cloudEventsVersion'", () => { expect(cloudevent.format()).to.have.property('cloudEventsVersion'); }); @@ -31,11 +40,38 @@ describe("CloudEvents Spec 0.1 - JavaScript SDK", () => { }); }); - describe("Backward compatibility", () => { - it("should have 'eventTypeVersion'", () => { - cloudevent.eventTypeVersion("1.0"); - expect(cloudevent.format()).to.have.property('eventTypeVersion'); + describe("Optional context attributes", () => { + it("contains 'eventTime'", () => { + cloudevent.time(time); + expect(cloudevent.format()).to.have.property('eventTime'); }); + + it("contains 'schemaURL'", () => { + cloudevent.schemaurl(schemaurl); + expect(cloudevent.format()).to.have.property('schemaURL'); + }); + + it("contains 'contentType'", () => { + cloudevent.contenttype(contenttype); + expect(cloudevent.format()).to.have.property('contentType'); + }); + + it("contains 'data'", () => { + cloudevent.data(data); + expect(cloudevent.format()).to.have.property('data'); + }); + + it("contains 'extensions'", () => { + cloudevent.addExtension('foo', 'value'); + expect(cloudevent.format()).to.have.property('extensions'); + }); + + it("'extensions' should have 'bar' extension", () => { + cloudevent.addExtension('bar', 'value'); + expect(cloudevent.format().extensions) + .to.have.property('foo'); + }); + }); describe("The Constraint check", () => {