mirror of
https://github.com/http-party/node-http-proxy.git
synced 2025-12-08 20:59:18 +00:00
[test] Updated tests to include support for latent requests
This commit is contained in:
parent
ead7567db8
commit
095e86aa65
@ -43,6 +43,7 @@ exports.NodeProxy.prototype = {
|
||||
|
||||
init: function (req, res) {
|
||||
this.events = [];
|
||||
var self = this;
|
||||
|
||||
this.onData = function () {
|
||||
self.events.push(['data'].concat(self.toArray(arguments)));
|
||||
|
||||
@ -15,6 +15,7 @@ var vows = require('vows'),
|
||||
require.paths.unshift(require('path').join(__dirname, '../lib/'));
|
||||
|
||||
var NodeProxy = require('node-proxy').NodeProxy;
|
||||
var testServers = {};
|
||||
|
||||
//
|
||||
// Simple 'hello world' response for test purposes
|
||||
@ -28,47 +29,98 @@ var helloWorld = function(req, res) {
|
||||
//
|
||||
// Creates the reverse proxy server
|
||||
//
|
||||
var startProxy = function (server, port, proxy) {
|
||||
http.createServer(function (req, res){
|
||||
var startProxyServer = function (server, port, proxy) {
|
||||
var proxyServer = http.createServer(function (req, res){
|
||||
// Initialize the nodeProxy and start proxying the request
|
||||
proxy.init(req, res);
|
||||
proxy.proxyRequest(server, port, req, res);
|
||||
}).listen(8080);
|
||||
});
|
||||
|
||||
proxyServer.listen(8080);
|
||||
return proxyServer;
|
||||
};
|
||||
|
||||
//
|
||||
// Creates the reverse proxy server with a specified latency
|
||||
//
|
||||
var startLatentProxyServer = function (server, port, proxy, latency) {
|
||||
var proxyServer = http.createServer(function (req, res){
|
||||
// Initialize the nodeProxy and start proxying the request
|
||||
proxy.init(req, res);
|
||||
setTimeout(function () {
|
||||
proxy.proxyRequest(server, port, req, res);
|
||||
}, latency);
|
||||
});
|
||||
|
||||
proxyServer.listen(8081);
|
||||
return proxyServer;
|
||||
};
|
||||
|
||||
//
|
||||
// Creates the 'hellonode' server
|
||||
//
|
||||
var startProxyTarget = function () {
|
||||
http.createServer(function (req, res) {
|
||||
var startTargetServer = function (port) {
|
||||
var targetServer = http.createServer(function (req, res) {
|
||||
helloWorld(req, res);
|
||||
}).listen(8081);
|
||||
})
|
||||
|
||||
targetServer.listen(port);
|
||||
return targetServer;
|
||||
};
|
||||
|
||||
//
|
||||
// The default test bootstrapper
|
||||
// The default test bootstrapper with no latency
|
||||
//
|
||||
var startProxyTest = function () {
|
||||
var proxy = new (NodeProxy);
|
||||
startProxy('127.0.0.1', 8081, proxy);
|
||||
startProxyTarget();
|
||||
return proxy;
|
||||
var startTest = function (proxy, port) {
|
||||
testServers.noLatency = [];
|
||||
testServers.noLatency.push(startProxyServer('127.0.0.1', port, proxy));
|
||||
testServers.noLatency.push(startTargetServer(port));
|
||||
};
|
||||
|
||||
//
|
||||
// The test bootstrapper with some latency
|
||||
//
|
||||
var startTestWithLatency = function (proxy, port) {
|
||||
testServers.latency = [];
|
||||
testServers.latency.push(startLatentProxyServer('127.0.0.1', port, proxy, 2000));
|
||||
testServers.latency.push(startTargetServer(port));
|
||||
};
|
||||
|
||||
vows.describe('node-proxy').addBatch({
|
||||
"When an incoming request is proxied to the helloNode server" : {
|
||||
topic: function () {
|
||||
// Create the proxy and start listening
|
||||
var proxy = startProxyTest();
|
||||
proxy.emitter.addListener('end', this.callback);
|
||||
"with no latency" : {
|
||||
topic: function () {
|
||||
var proxy = new (NodeProxy);
|
||||
startTest(proxy, 8082);
|
||||
proxy.emitter.addListener('end', this.callback);
|
||||
|
||||
var client = http.createClient(8080, '127.0.0.1');
|
||||
var request = client.request('GET', '/');
|
||||
request.end();
|
||||
var client = http.createClient(8080, '127.0.0.1');
|
||||
var request = client.request('GET', '/');
|
||||
request.end();
|
||||
},
|
||||
"it should received 'hello world'": function (err, body) {
|
||||
assert.equal(body, 'hello world');
|
||||
testServers.noLatency.forEach(function (server) {
|
||||
server.close();
|
||||
})
|
||||
}
|
||||
},
|
||||
"it should received 'hello world'": function (err, body) {
|
||||
assert.equal(body, 'hello world');
|
||||
"with latency": {
|
||||
topic: function () {
|
||||
var proxy = new (NodeProxy);
|
||||
startTestWithLatency(proxy, 8083);
|
||||
proxy.emitter.addListener('end', this.callback);
|
||||
|
||||
var client = http.createClient(8081, '127.0.0.1');
|
||||
var request = client.request('GET', '/');
|
||||
request.end();
|
||||
},
|
||||
"it should receive 'hello world'": function (err, body) {
|
||||
assert.equal(body, 'hello world');
|
||||
testServers.latency.forEach(function (server) {
|
||||
server.close();
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}).export(module);
|
||||
Loading…
x
Reference in New Issue
Block a user