mirror of
https://gitee.com/java110/MicroCommunityWeb.git
synced 2026-02-24 21:59:12 +08:00
111 lines
2.6 KiB
JavaScript
111 lines
2.6 KiB
JavaScript
'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);
|
|
});
|
|
|
|
});
|