UNPKG

rocky

Version:

Full-featured, middleware-oriented, hackable HTTP and WebSocket proxy

66 lines (55 loc) 1.53 kB
const expect = require('chai').expect const Emitter = require('events').EventEmitter const middleware = require('../../lib/middleware') const noop = function () {} suite('middleware#responseBody', function () { var req, res beforeEach(function () { res = {} Object.setPrototypeOf(res, { setHeader: noop, write: noop, end: noop, socket: { uncork: noop }, connection: { cork: function () {} }, getHeader: function () { return 'application/json' } }) }) beforeEach(function () { req = new Emitter() req.socket = { destroyed: false, once: noop, removeListener: noop } }) function middlewareFn (req, res, next) { const body = res.body.toString() const newBody = body.split(' ').reverse().join(' ') next(null, newBody, 'utf8') } function writeData () { res.write(new Buffer('Ping ')) res.write(new Buffer('Pong')) res.end() } test('transform', function (done) { Object.getPrototypeOf(res).end = function () { expect(res.body).to.be.equal('Pong Ping') done() } middleware.responseBody(middlewareFn)(req, res, noop) writeData() }) test('filter', function (done) { Object.getPrototypeOf(res).end = function () { expect(res.body).to.be.equal('Pong Ping') done() } function filter (res) { return res.getHeader('content-type') === 'application/json' } middleware.responseBody(middlewareFn, filter)(req, res, noop) writeData() }) })