
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
'use strict';
var assert = require('assert');
var express = require('express');
var request = require('supertest');
var bodyParser = require('body-parser');
var proxy = require('../');
var proxyTarget = require('../test/support/proxyTarget');
var proxyRouteFn = [{
method: 'post',
path: '/poster',
fn: function (req, res) {
res.send(req.body);
}
}];
describe('middleware compatibility', function () {
var proxyServer;
beforeEach(function () {
proxyServer = proxyTarget(12346, 100, proxyRouteFn);
});
afterEach(function () {
proxyServer.close();
});
it('should use req.body if defined', function (done) {
var app = express();
// Simulate another middleware that puts req stream into the body
app.use(function (req, res, next) {
var received = [];
req.on('data', function onData(chunk) {
if (!chunk) { return; }
received.push(chunk);
});
req.on('end', function onEnd() {
received = Buffer.concat(received).toString('utf8');
req.body = JSON.parse(received);
req.body.foo = 1;
next();
});
});
app.use(proxy('localhost:12346', {
userResDecorator: function (rsp, data, req) {
assert(req.body);
assert.equal(req.body.foo, 1);
assert.equal(req.body.mypost, 'hello');
return data;
}
}));
request(app)
.post('/poster')
.send({ mypost: 'hello' })
.expect(function (res) {
assert.equal(res.body.foo, 1);
assert.equal(res.body.mypost, 'hello');
})
.end(done);
});
it('should stringify req.body when it is a json body so it is written to proxy request', function (done) {
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(proxy('localhost:12346'));
request(app)
.post('/poster')
.send({
mypost: 'hello',
doorknob: 'wrect'
})
.expect(function (res) {
assert.equal(res.body.doorknob, 'wrect');
assert.equal(res.body.mypost, 'hello');
})
.end(done);
});
it('should convert req.body to a Buffer when reqAsBuffer is set', function (done) {
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(proxy('localhost:12346', {
reqAsBuffer: true
}));
request(app)
.post('/poster')
.send({
mypost: 'hello',
doorknob: 'wrect'
})
.expect(function (res) {
assert.equal(res.body.doorknob, 'wrect');
assert.equal(res.body.mypost, 'hello');
})
.end(done);
});
});