Support receiving "application/octet-stream" content in binary transport mode
Signed-off-by: Jingwen Peng <pengsrc@outlook.com>
This commit is contained in:
parent
0a56284df2
commit
8418f77a6b
|
@ -2,9 +2,10 @@
|
||||||
module.exports = {
|
module.exports = {
|
||||||
CHARSET_DEFAULT : "utf-8",
|
CHARSET_DEFAULT : "utf-8",
|
||||||
|
|
||||||
MIME_JSON : "application/json",
|
MIME_JSON : "application/json",
|
||||||
MIME_CE : "application/cloudevents",
|
MIME_OCTET_STREAM : "application/octet-stream",
|
||||||
MIME_CE_JSON : "application/cloudevents+json",
|
MIME_CE : "application/cloudevents",
|
||||||
|
MIME_CE_JSON : "application/cloudevents+json",
|
||||||
|
|
||||||
HEADER_CONTENT_TYPE : "content-type",
|
HEADER_CONTENT_TYPE : "content-type",
|
||||||
|
|
||||||
|
|
|
@ -12,9 +12,13 @@ const {
|
||||||
|
|
||||||
const parserByType = {};
|
const parserByType = {};
|
||||||
parserByType[Constants.MIME_JSON] = new JSONParser();
|
parserByType[Constants.MIME_JSON] = new JSONParser();
|
||||||
|
parserByType[Constants.MIME_OCTET_STREAM] = {
|
||||||
|
parse(payload) { return payload; }
|
||||||
|
};
|
||||||
|
|
||||||
const allowedContentTypes = [];
|
const allowedContentTypes = [];
|
||||||
allowedContentTypes.push(Constants.MIME_JSON);
|
allowedContentTypes.push(Constants.MIME_JSON);
|
||||||
|
allowedContentTypes.push(Constants.MIME_OCTET_STREAM);
|
||||||
|
|
||||||
const requiredHeaders = [];
|
const requiredHeaders = [];
|
||||||
requiredHeaders.push(Constants.BINARY_HEADERS_02.TYPE);
|
requiredHeaders.push(Constants.BINARY_HEADERS_02.TYPE);
|
||||||
|
|
|
@ -14,6 +14,7 @@ const receiverByBinding = {
|
||||||
|
|
||||||
const allowedBinaryContentTypes = [];
|
const allowedBinaryContentTypes = [];
|
||||||
allowedBinaryContentTypes.push(Constants.MIME_JSON);
|
allowedBinaryContentTypes.push(Constants.MIME_JSON);
|
||||||
|
allowedBinaryContentTypes.push(Constants.MIME_OCTET_STREAM);
|
||||||
|
|
||||||
const allowedStructuredContentTypes = [];
|
const allowedStructuredContentTypes = [];
|
||||||
allowedStructuredContentTypes.push(Constants.MIME_CE_JSON);
|
allowedStructuredContentTypes.push(Constants.MIME_CE_JSON);
|
||||||
|
|
|
@ -285,7 +285,7 @@ describe("HTTP Transport Binding Binary Receiver for CloudEvents v0.2", () => {
|
||||||
.to.equal("http://schema.registry/v1");
|
.to.equal("http://schema.registry/v1");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Cloudevent contains 'contenttype'", () => {
|
it("Cloudevent contains 'contenttype' (application/json)", () => {
|
||||||
// setup
|
// setup
|
||||||
var payload = {
|
var payload = {
|
||||||
"data" : "dataString"
|
"data" : "dataString"
|
||||||
|
@ -308,7 +308,28 @@ describe("HTTP Transport Binding Binary Receiver for CloudEvents v0.2", () => {
|
||||||
.to.equal("application/json");
|
.to.equal("application/json");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Cloudevent contains 'data'", () => {
|
it("Cloudevent contains 'contenttype' (application/octet-stream)", () => {
|
||||||
|
// setup
|
||||||
|
var payload = "The payload is binary data";
|
||||||
|
var attributes = {
|
||||||
|
"ce-type" : "type",
|
||||||
|
"ce-specversion" : "0.2",
|
||||||
|
"ce-source" : "/source",
|
||||||
|
"ce-id" : "id",
|
||||||
|
"ce-time" : "2019-06-16T11:42:00Z",
|
||||||
|
"ce-schemaurl" : "http://schema.registry/v1",
|
||||||
|
"Content-Type" : "application/octet-stream"
|
||||||
|
};
|
||||||
|
|
||||||
|
// act
|
||||||
|
var actual = receiver.parse(payload, attributes);
|
||||||
|
|
||||||
|
// assert
|
||||||
|
expect(actual.getContenttype())
|
||||||
|
.to.equal("application/json");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Cloudevent contains 'data' (application/json)", () => {
|
||||||
// setup
|
// setup
|
||||||
var payload = {
|
var payload = {
|
||||||
"data" : "dataString"
|
"data" : "dataString"
|
||||||
|
@ -331,6 +352,27 @@ describe("HTTP Transport Binding Binary Receiver for CloudEvents v0.2", () => {
|
||||||
.to.deep.equal(payload);
|
.to.deep.equal(payload);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("Cloudevent contains 'data' (application/octet-stream)", () => {
|
||||||
|
// setup
|
||||||
|
var payload = "The payload is binary data";
|
||||||
|
var attributes = {
|
||||||
|
"ce-type" : "type",
|
||||||
|
"ce-specversion" : "0.2",
|
||||||
|
"ce-source" : "/source",
|
||||||
|
"ce-id" : "id",
|
||||||
|
"ce-time" : "2019-06-16T11:42:00Z",
|
||||||
|
"ce-schemaurl" : "http://schema.registry/v1",
|
||||||
|
"Content-Type" : "application/octet-stream"
|
||||||
|
};
|
||||||
|
|
||||||
|
// act
|
||||||
|
var actual = receiver.parse(payload, attributes);
|
||||||
|
|
||||||
|
// assert
|
||||||
|
expect(actual.getData())
|
||||||
|
.to.deep.equal(payload);
|
||||||
|
});
|
||||||
|
|
||||||
it("No error when all attributes are in place", () => {
|
it("No error when all attributes are in place", () => {
|
||||||
// setup
|
// setup
|
||||||
var payload = {
|
var payload = {
|
||||||
|
|
Loading…
Reference in New Issue