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([]) })