|
|
'use strict'; |
|
|
|
|
|
var express = require('express'); |
|
|
var request = require('supertest'); |
|
|
var proxy = require('../'); |
|
|
var proxyTarget = require('./support/proxyTarget'); |
|
|
|
|
|
describe('honors timeout option', function () { |
|
|
|
|
|
var other; |
|
|
var http; |
|
|
|
|
|
beforeEach(function () { |
|
|
http = express(); |
|
|
other = proxyTarget(56001, 1000, [{ |
|
|
method: 'get', |
|
|
path: '/', |
|
|
fn: function (req, res) { res.sendStatus(200); } |
|
|
}]); |
|
|
}); |
|
|
|
|
|
afterEach(function () { |
|
|
other.close(); |
|
|
}); |
|
|
|
|
|
function assertSuccess(server, done) { |
|
|
request(http) |
|
|
.get('/') |
|
|
.expect(200) |
|
|
.end(done); |
|
|
} |
|
|
|
|
|
function assertConnectionTimeout(server, done) { |
|
|
request(http) |
|
|
.get('/') |
|
|
.expect(504) |
|
|
.expect('X-Timeout-Reason', 'express-http-proxy reset the request.') |
|
|
.end(done); |
|
|
} |
|
|
|
|
|
describe('when timeout option is set lower than server response time', function () { |
|
|
it('should fail with CONNECTION TIMEOUT', function (done) { |
|
|
|
|
|
http.use(proxy('http://localhost:56001', { |
|
|
timeout: 100, |
|
|
})); |
|
|
|
|
|
assertConnectionTimeout(http, done); |
|
|
}); |
|
|
}); |
|
|
|
|
|
describe('when timeout option is set higher than server response time', function () { |
|
|
it('should succeed', function (done) { |
|
|
|
|
|
http.use(proxy('http://localhost:56001', { |
|
|
timeout: 1200, |
|
|
})); |
|
|
|
|
|
assertSuccess(http, done); |
|
|
}); |
|
|
}); |
|
|
|
|
|
}); |
|
|
|