From f4aeac313ec07d61ce42edc2bd7ae5392a7b3fbc Mon Sep 17 00:00:00 2001 From: Jonathan Ginsburg Date: Tue, 1 Jun 2021 13:39:29 -0500 Subject: [PATCH] fix(server): clean up vestigial code from proxy (#3640) When using the proxy feature of Karma, the target value can include the [scheme](https://tools.ietf.org/html/std66#section-3.1). It was used to determine the `https` variable to be sent to the [`http-proxy`](https://www.npmjs.com/package/http-proxy) `.createProxyServer` method. However, it is now disregarded by that package. This change cleans it up. --- lib/middleware/proxy.js | 18 ++++----- test/unit/middleware/proxy.spec.js | 60 +++++++++++++++++------------- 2 files changed, 41 insertions(+), 37 deletions(-) diff --git a/lib/middleware/proxy.js b/lib/middleware/proxy.js index 7c9a43214..6b0fcf730 100644 --- a/lib/middleware/proxy.js +++ b/lib/middleware/proxy.js @@ -34,20 +34,16 @@ function parseProxyConfig (proxies, config) { const hostname = proxyDetails.hostname || config.hostname const protocol = proxyDetails.protocol || config.protocol - const https = proxyDetails.protocol === 'https:' - let port - if (proxyDetails.port) { - port = proxyDetails.port - } else if (proxyDetails.protocol) { - port = https ? '443' : '80' - } else { - port = config.port + const defaultPorts = { + 'http:': '80', + 'https:': '443' } + const port = proxyDetails.port || defaultPorts[proxyDetails.protocol] || config.port const changeOrigin = proxyConfiguration.changeOrigin || false - const Agent = https ? httpsAgent : httpAgent + const Agent = protocol === 'https:' ? httpsAgent : httpAgent const agent = new Agent({ keepAlive: true }) const proxy = httpProxy.createProxyServer({ - target: { host: hostname, port, https, protocol }, + target: { host: hostname, port, protocol }, xfwd: true, changeOrigin: changeOrigin, secure: config.proxyValidateSSL, @@ -71,7 +67,7 @@ function parseProxyConfig (proxies, config) { res.destroy() }) - return { path: proxyPath, baseUrl: pathname, host: hostname, port, https, proxy, agent } + return { path: proxyPath, baseUrl: pathname, host: hostname, port, proxy, agent } }), 'path').reverse() } diff --git a/test/unit/middleware/proxy.spec.js b/test/unit/middleware/proxy.spec.js index 6bfc2c80c..bdc83e50b 100644 --- a/test/unit/middleware/proxy.spec.js +++ b/test/unit/middleware/proxy.spec.js @@ -146,10 +146,16 @@ describe('middleware.proxy', () => { host: 'localhost', port: '8000', baseUrl: '/', - path: '/base/', - https: false + path: '/base/' }) expect(parsedProxyConfig[0].proxy).to.exist + expect(parsedProxyConfig[0].proxy).to.containSubset({ + options: { + target: { + protocol: 'http:' + } + } + }) }) it('should set default http port', () => { @@ -160,10 +166,16 @@ describe('middleware.proxy', () => { host: 'localhost', port: '80', baseUrl: '/', - path: '/base/', - https: false + path: '/base/' }) expect(parsedProxyConfig[0].proxy).to.exist + expect(parsedProxyConfig[0].proxy).to.containSubset({ + options: { + target: { + protocol: 'http:' + } + } + }) }) it('should set default https port', () => { @@ -174,8 +186,7 @@ describe('middleware.proxy', () => { host: 'localhost', port: '443', baseUrl: '/', - path: '/base/', - https: true + path: '/base/' }) expect(parsedProxyConfig[0].proxy).to.exist expect(parsedProxyConfig[0].proxy).to.containSubset({ @@ -195,10 +206,16 @@ describe('middleware.proxy', () => { host: 'localhost', port: '8000', baseUrl: '/proxy', - path: '/base', - https: false + path: '/base' }) expect(parsedProxyConfig[0].proxy).to.exist + expect(parsedProxyConfig[0].proxy).to.containSubset({ + options: { + target: { + protocol: 'http:' + } + } + }) }) it('should determine protocol', () => { @@ -209,8 +226,7 @@ describe('middleware.proxy', () => { host: 'localhost', port: '8000', baseUrl: '', - path: '/base', - https: true + path: '/base' }) expect(parsedProxyConfig[0].proxy).to.exist expect(parsedProxyConfig[0].proxy).to.containSubset({ @@ -231,8 +247,7 @@ describe('middleware.proxy', () => { host: 'localhost', port: 9877, baseUrl: '/proxy/test', - path: '/base', - https: false + path: '/base' }) expect(parsedProxyConfig[0].proxy).to.exist }) @@ -246,8 +261,7 @@ describe('middleware.proxy', () => { host: 'localhost', port: 9877, baseUrl: '/proxy/test/', - path: '/base/', - https: false + path: '/base/' }) expect(parsedProxyConfig[0].proxy).to.exist }) @@ -261,8 +275,7 @@ describe('middleware.proxy', () => { host: 'krinkle.dev', port: '80', baseUrl: '/w', - path: '/w', - https: false + path: '/w' }) expect(parsedProxyConfig[0].proxy).to.exist }) @@ -276,8 +289,7 @@ describe('middleware.proxy', () => { host: 'krinkle.dev', port: '443', baseUrl: '/w', - path: '/w', - https: true + path: '/w' }) expect(parsedProxyConfig[0].proxy).to.exist }) @@ -290,8 +302,7 @@ describe('middleware.proxy', () => { host: 'localhost', port: '8000', baseUrl: '/proxy/test/', - path: '/base/', - https: false + path: '/base/' }) expect(parsedProxyConfig[0].proxy).to.exist }) @@ -307,16 +318,14 @@ describe('middleware.proxy', () => { host: 'gstatic.com', port: '80', baseUrl: '/something', - path: '/sub/some', - https: false + path: '/sub/some' }) expect(parsedProxyConfig[0].proxy).to.exist expect(parsedProxyConfig[1]).to.containSubset({ host: 'localhost', port: '9000', baseUrl: '', - path: '/sub', - https: false + path: '/sub' }) expect(parsedProxyConfig[1].proxy).to.exist }) @@ -331,8 +340,7 @@ describe('middleware.proxy', () => { host: 'localhost', port: '8000', baseUrl: '/', - path: '/base/', - https: false + path: '/base/' }) expect(parsedProxyConfig[0].proxy).to.exist })