UNPKG

microgateway-plugins

Version:
180 lines (136 loc) 5.27 kB
const accumulateRequest = require('../accumulate-request/index'); const assert = require('assert'); const coreObject = require('./microgateway-core'); const logger = coreObject.logger; const stats = coreObject.stats; describe('accumulate request plugin', () => { var plugin = null; beforeEach(() => { var config = {}; plugin = accumulateRequest.init.apply(null, [config, logger, stats]); }); it('exposes an ondata_request handler', () => { assert.ok(plugin.ondata_request); }); it('exposes an onend_request handler', () => { assert.ok(plugin.onend_request); }); it('calls back with two null function arguments in the ondata_request handler', (done) => { var cb = (err, result) => { assert.equal(err, null); assert.equal(result, null); done(); } plugin.ondata_request.apply(null, [{}, {}, Buffer.alloc(5, 'a'), cb]); }); it('will collect all buffers provided to ondata_request handler, concatenate them, and return them as a single buffer', (done) => { var desiredResult = 'aaaaaaaaaaaaaaa'; var ondata_cb = (err, result) => { assert.equal(err, null); assert.equal(result, null); assert.ok(req._chunks); } var onend_cb = (err, result) => { assert.equal(err, null); assert.equal(result.toString(), desiredResult); done(); } var req = {}; plugin.ondata_request.apply(null, [req, {}, Buffer.alloc(5, 'a'), ondata_cb]); plugin.ondata_request.apply(null, [req, {}, Buffer.alloc(5, 'a'), ondata_cb]); plugin.ondata_request.apply(null, [req, {}, Buffer.alloc(5, 'a'), ondata_cb]); plugin.onend_request.apply(null, [req, {}, null, onend_cb]); }); it('will append data included in the end call to the buffer', (done) => { var desiredResult = 'aaaaaaaaaaaaaaaaaaaa'; var ondata_cb = (err, result) => { assert.equal(err, null); assert.equal(result, null); assert.ok(req._chunks); } var onend_cb = (err, result) => { assert.equal(err, null); assert.equal(result.toString(), desiredResult); done(); } var req = {}; plugin.ondata_request.apply(null, [req, {}, Buffer.alloc(5, 'a'), ondata_cb]); plugin.ondata_request.apply(null, [req, {}, Buffer.alloc(5, 'a'), ondata_cb]); plugin.ondata_request.apply(null, [req, {}, Buffer.alloc(5, 'a'), ondata_cb]); plugin.onend_request.apply(null, [req, {}, Buffer.alloc(5, 'a'), onend_cb]); }); it('will create a req._chunks object on the request object', (done) => { var req = {}; var cb = (err, result) => { assert.equal(err, null); assert.equal(result, null); assert.ok(req._chunks); assert.equal(req._chunks.toString(), 'aaaaa'); done(); } plugin.ondata_request.apply(null, [req, {}, Buffer.alloc(5, 'a'), cb]); }); it('will call the callback with null if no data events are provided.', (done) => { var onend_cb = (err, result) => { assert.equal(err, null); assert.equal(result, null); done(); } var req = {}; plugin.onend_request.apply(null, [req, {}, null, onend_cb]); }); it('Will process string data in ondata_request handler ', (done) => { const desiredResult = 'aaa'; const ondata_cb = (err, result) => { assert.equal(err, null); assert.equal(result, null); assert.ok(req._chunks); } const onend_cb = (err, result) => { assert.equal(err, null); assert.equal(result.toString(), desiredResult); done(); } const req = {}; plugin.ondata_request.apply(null, [req, {},'a', ondata_cb]); plugin.ondata_request.apply(null, [req, {},'a', ondata_cb]); plugin.ondata_request.apply(null, [req, {},'a', ondata_cb]); plugin.onend_request.apply(null, [req, {}, null, onend_cb]); }); it('Will process numeric data in ondata_request handler ', (done) => { const desiredResult = '123'; const req = {}; const ondata_cb = (err, result) => { assert.equal(err, null); assert.equal(result, null); assert.ok(req._chunks); } const onend_cb = (err, result) => { assert.equal(err, null); assert.equal(result.toString(), desiredResult); done(); } plugin.ondata_request.apply(null, [req, {}, 1, ondata_cb]); plugin.ondata_request.apply(null, [req, {}, 2, ondata_cb]); plugin.ondata_request.apply(null, [req, {}, 3, ondata_cb]); plugin.onend_request.apply(null, [req, {}, null, onend_cb]); }); it('Will process boolean data in ondata_request handler ', (done) => { const desiredResult = 'truefalsetrue'; const req = {}; const ondata_cb = (err, result) => { assert.equal(err, null); assert.equal(result, null); assert.ok(req._chunks); } const onend_cb = (err, result) => { assert.equal(err, null); assert.equal(result.toString(), desiredResult); done(); } plugin.ondata_request.apply(null, [req, {}, true, ondata_cb]); plugin.ondata_request.apply(null, [req, {}, false, ondata_cb]); plugin.ondata_request.apply(null, [req, {}, true, ondata_cb]); plugin.onend_request.apply(null, [req, {}, null, onend_cb]); }); })