fix tests for maintaining proxy path

This commit is contained in:
Sean Massa 2014-09-08 16:23:11 -05:00
parent 511b7b3d47
commit a65021d52b
2 changed files with 33 additions and 4 deletions

View File

@ -1,4 +1,5 @@
var common = exports,
path = require('path'),
url = require('url'),
extend = require('util')._extend;
@ -57,17 +58,22 @@ common.setupOutgoing = function(outgoing, options, req, forward) {
) { outgoing.headers.connection = 'close'; }
}
// the final path is target path + relative path requested by user:
outgoing.path = options.target.path;
var target = options[forward || 'target'];
var targetPath = target
? (target.path || '')
: '';
//
// Remark: Can we somehow not use url.parse as a perf optimization?
//
outgoing.path += !options.toProxy
var outgoingPath = !options.toProxy
? url.parse(req.url).path
: req.url;
outgoing.path = path.join(targetPath, outgoingPath);
return outgoing;
};

View File

@ -117,6 +117,29 @@ describe('lib/http-proxy/common.js', function () {
expect(outgoing.port).to.eql(443);
});
it('should keep the original target path in the outgoing path', function(){
var outgoing = {};
common.setupOutgoing(outgoing, {target:
{ path: 'some-path' }
}, { url : 'am' });
expect(outgoing.path).to.eql('some-path/am');
});
it('should keep the original forward path in the outgoing path', function(){
var outgoing = {};
common.setupOutgoing(outgoing, {
target: {},
forward: {
path: 'some-path'
}
}, {
url : 'am'
}, 'forward');
expect(outgoing.path).to.eql('some-path/am');
});
});
describe('#setupSocket', function () {
@ -144,4 +167,4 @@ describe('lib/http-proxy/common.js', function () {
expect(socketConfig.keepalive).to.eql(true);
});
});
});
});