|
|
'use strict'; |
|
|
|
|
|
var express = require('express'); |
|
|
var request = require('supertest'); |
|
|
var proxy = require('../'); |
|
|
var http = require('http'); |
|
|
var assert = require('assert'); |
|
|
|
|
|
describe('when skipToNextHandlerFilter is defined', function () { |
|
|
|
|
|
this.timeout(10000); |
|
|
|
|
|
var app; |
|
|
var slowTarget; |
|
|
var serverReference; |
|
|
|
|
|
beforeEach(function () { |
|
|
app = express(); |
|
|
slowTarget = express(); |
|
|
slowTarget.use(function (req, res) { res.sendStatus(404); }); |
|
|
serverReference = slowTarget.listen(12345); |
|
|
}); |
|
|
|
|
|
afterEach(function () { |
|
|
serverReference.close(); |
|
|
}); |
|
|
|
|
|
var OUTCOMES = [ |
|
|
{ shouldSkip: true, expectedStatus: 200 }, |
|
|
{ shouldSkip: false, expectedStatus: 404 } |
|
|
]; |
|
|
|
|
|
OUTCOMES.forEach(function (outcome) { |
|
|
describe('and returns ' + outcome.shouldSkip, function () { |
|
|
it('express-http-proxy' + (outcome.shouldSkip ? ' skips ' : ' doesnt skip ') + 'to next()', function (done) { |
|
|
|
|
|
app.use('/proxy', proxy('http://127.0.0.1:12345', { |
|
|
skipToNextHandlerFilter: function () { |
|
|
return outcome.shouldSkip; |
|
|
} |
|
|
})); |
|
|
|
|
|
app.use(function (req, res) { |
|
|
assert(res.expressHttpProxy instanceof Object); |
|
|
assert(res.expressHttpProxy.res instanceof http.IncomingMessage); |
|
|
assert(res.expressHttpProxy.req instanceof Object); |
|
|
res.sendStatus(200); |
|
|
}); |
|
|
|
|
|
request(app) |
|
|
.get('/proxy') |
|
|
.expect(outcome.expectedStatus) |
|
|
.end(done); |
|
|
}); |
|
|
}); |
|
|
}); |
|
|
}); |
|
|
|