From ad94356b21324f1ede26381da55f0a8b5e0cdedb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Jud=C3=A9aux?= Date: Wed, 2 Dec 2015 13:48:57 +0100 Subject: [PATCH] feat(proxy): Allow proxies configuration to be an object Motivation: allow development of extended configuration per proxy Example: proxies: { '/foo': 'http://foo.localhost', '/bar': {target: 'http://bar.localhost'} } --- lib/middleware/proxy.js | 6 +++++- test/unit/middleware/proxy.spec.js | 18 +++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/middleware/proxy.js b/lib/middleware/proxy.js index b741a19b8..35bdbe0af 100644 --- a/lib/middleware/proxy.js +++ b/lib/middleware/proxy.js @@ -13,7 +13,11 @@ var parseProxyConfig = function (proxies, config) { return [] } - return _.sortBy(_.map(proxies, function (proxyUrl, proxyPath) { + return _.sortBy(_.map(proxies, function (proxyConfiguration, proxyPath) { + if (typeof proxyConfiguration === 'string') { + proxyConfiguration = {target: proxyConfiguration} + } + var proxyUrl = proxyConfiguration.target var proxyDetails = url.parse(proxyUrl) var pathname = proxyDetails.pathname diff --git a/test/unit/middleware/proxy.spec.js b/test/unit/middleware/proxy.spec.js index 04fef3804..f04eba800 100644 --- a/test/unit/middleware/proxy.spec.js +++ b/test/unit/middleware/proxy.spec.js @@ -152,7 +152,7 @@ describe('middleware.proxy', () => { expect(parsedProxyConfig[0].proxy).to.exist }) - it('should set defualt http port', () => { + it('should set default http port', () => { var proxy = {'/base/': 'http://localhost/'} var parsedProxyConfig = m.parseProxyConfig(proxy, {}) expect(parsedProxyConfig).to.have.length(1) @@ -291,6 +291,22 @@ describe('middleware.proxy', () => { expect(parsedProxyConfig[1].proxy).to.exist }) + it('should accept object for proxy config', () => { + var proxy = { + '/base/': {target: 'http://localhost:8000/'} + } + var parsedProxyConfig = m.parseProxyConfig(proxy, {}) + expect(parsedProxyConfig).to.have.length(1) + expect(parsedProxyConfig[0]).to.containSubset({ + host: 'localhost', + port: '8000', + baseUrl: '/', + path: '/base/', + https: false + }) + expect(parsedProxyConfig[0].proxy).to.exist + }) + it('should handle empty proxy config', () => { expect(m.parseProxyConfig({})).to.deep.equal([]) })