diff --git a/lib/bindings/http/emitter_binary.js b/lib/bindings/http/emitter_binary.js index 290f11d..6ba41b9 100644 --- a/lib/bindings/http/emitter_binary.js +++ b/lib/bindings/http/emitter_binary.js @@ -38,7 +38,11 @@ BinaryHTTPEmitter.prototype.emit = function(cloudevent) { }); // Set the cloudevent payload - _config[Constants.DATA_ATTRIBUTE] = cloudevent.format().data; + let formatted = cloudevent.format(); + let data = formatted.data; + data = (formatted.data_base64 ? formatted.data_base64: data); + + _config[Constants.DATA_ATTRIBUTE] = data; // Have extensions? var exts = cloudevent.getExtensions(); diff --git a/test/http_binding_1.js b/test/http_binding_1.js index 566368a..47ada93 100644 --- a/test/http_binding_1.js +++ b/test/http_binding_1.js @@ -135,6 +135,25 @@ describe("HTTP Transport Binding - Version 1.0", () => { }); }); + it("the request payload should be correct when event data is binary", () => { + let bindata = Uint32Array.from(dataString, (c) => c.codePointAt(0)); + let expected = asBase64(bindata); + let binevent = + new Cloudevent(v1.Spec) + .type(type) + .source(source) + .dataContentType("text/plain") + .data(bindata) + .addExtension(ext1Name, ext1Value) + .addExtension(ext2Name, ext2Value); + + return binary.emit(binevent) + .then((response) => { + expect(response.config.data) + .to.equal(expected); + }); + }); + it("HTTP Header contains 'ce-type'", () => { return binary.emit(cloudevent) .then((response) => {