
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 bodyParser = require('body-parser');
var express = require('express');
var nock = require('nock');
var request = require('supertest');
var proxy = require('../');
function createLocalApplicationServer() {
var app = express();
return app;
}
describe('when proxy request is a POST', function () {
this.timeout(10000);
var localServer;
beforeEach(function () {
localServer = createLocalApplicationServer();
localServer.use(bodyParser.json());
});
afterEach(function () {
nock.cleanAll();
});
var testCases = [
{ name: 'form encoded', encoding: 'application/x-www-form-urlencoded' },
{ name: 'JSON encoded', encoding: 'application/json' }
];
testCases.forEach(function (test) {
it('should deliver the post query when ' + test.name, function (done) {
var nockedPostWithEncoding = nock('http://127.0.0.1:12345')
.post('/')
.query({ name: 'tobi' })
.matchHeader('Content-Type', test.encoding)
.reply(200, {
name: 'tobi'
});
localServer.use('/proxy', proxy('http://127.0.0.1:12345'));
localServer.use(function (req, res) { res.sendStatus(200); });
localServer.use(function (err, req, res, next) { throw new Error(err, req, res, next); });
request(localServer)
.post('/proxy')
.query({ name: 'tobi' })
.set('Content-Type', test.encoding)
.expect(function (res) {
assert(res.body.name === 'tobi');
nockedPostWithEncoding.done();
})
.end(done);
});
it('should deliver the post body when ' + test.name, function (done) {
var nockedPostWithEncoding = nock('http://127.0.0.1:12345')
.post('/', test.encoding.includes('json') ? { name: 'tobi' } : {})
.matchHeader('Content-Type', test.encoding)
.reply(200, {
name: 'tobi'
});
localServer.use('/proxy', proxy('http://127.0.0.1:12345'));
localServer.use(function (req, res) { res.sendStatus(200); });
localServer.use(function (err, req, res, next) { throw new Error(err, req, res, next); });
request(localServer)
.post('/proxy')
.send({ name: 'tobi' })
.set('Content-Type', test.encoding)
.expect(function (res) {
assert(res.body.name === 'tobi');
nockedPostWithEncoding.done();
})
.end(done);
});
});
it('should deliver empty string post body', function (done) {
var nockedPostWithoutBody = nock('http://127.0.0.1:12345')
.post('/')
.matchHeader('Content-Type', 'application/json')
.reply(200, {
name: 'tobi'
});
localServer.use('/proxy', proxy('http://127.0.0.1:12345'));
localServer.use(function (req, res) { res.sendStatus(200); });
localServer.use(function (err, req, res, next) { throw new Error(err, req, res, next); });
request(localServer)
.post('/proxy')
.send('')
.set('Content-Type', 'application/json')
.expect(function (res) {
assert(res.body.name === 'tobi');
nockedPostWithoutBody.done();
})
.end(done);
});
it('should deliver empty object post body', function (done) {
var nockedPostWithoutBody = nock('http://127.0.0.1:12345')
.post('/', {})
.matchHeader('Content-Type', 'application/json')
.reply(200, {
name: 'tobi'
});
localServer.use('/proxy', proxy('http://127.0.0.1:12345'));
localServer.use(function (req, res) { res.sendStatus(200); });
localServer.use(function (err, req, res, next) { throw new Error(err, req, res, next); });
request(localServer)
.post('/proxy')
.send({})
.set('Content-Type', 'application/json')
.expect(function (res) {
assert(res.body.name === 'tobi');
nockedPostWithoutBody.done();
})
.end(done);
});
});