Skip to content

Commit 0226e20

Browse files
authored
fix: correct CONNECT proxy handling and needle upgrade (#4967)
* fix: fix the proxy tests, ensure that CONNECT method is used * chore: upgrade needle to 3.3.0 Expect tests to fail / CONNECT will not be used until proxy is disabled in needle. * fix: disable proxy in needle, global-agent will be responsible to proxy requests * fix: upgrade @types/needle to support use_proxy_from_env_var * fix: upgrade @snyk/code-client
1 parent f3b705f commit 0226e20

File tree

4 files changed

+52
-105
lines changed

4 files changed

+52
-105
lines changed

package-lock.json

Lines changed: 40 additions & 100 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
"@sentry/node": "^7.34.0",
6464
"@snyk/cli-interface": "2.12.0",
6565
"@snyk/cloud-config-parser": "^1.14.5",
66-
"@snyk/code-client": "^4.23.3",
66+
"@snyk/code-client": "^4.23.5",
6767
"@snyk/dep-graph": "^2.7.4",
6868
"@snyk/docker-registry-v2-client": "^2.11.0",
6969
"@snyk/fix": "file:packages/snyk-fix",
@@ -104,7 +104,7 @@
104104
"lodash.values": "^4.3.0",
105105
"marked": "^4.0.1",
106106
"micromatch": "4.0.2",
107-
"needle": "3.0.0",
107+
"needle": "^3.3.0",
108108
"open": "^7.0.3",
109109
"ora": "5.4.0",
110110
"os-name": "^5.1.0",
@@ -139,7 +139,7 @@
139139
"@types/fs-extra": "^9.0.11",
140140
"@types/jest": "^27.0.1",
141141
"@types/lodash": "^4.14.161",
142-
"@types/needle": "^2.0.4",
142+
"@types/needle": "^3.3.0",
143143
"@types/node": "^14.14.31",
144144
"@types/sarif": "^2.1.2",
145145
"@types/sinon": "^7.5.0",

src/lib/request/request.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ function setupRequest(payload: Payload) {
107107
? new http.Agent({ keepAlive: true })
108108
: new https.Agent({ keepAlive: true });
109109
const options: needle.NeedleOptions = {
110+
use_proxy_from_env_var: false,
110111
json: payload.json,
111112
parse: payload.parse,
112113
headers: payload.headers,

test/tap/proxy.test.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ test('request respects proxy environment variables', async (t) => {
7373
});
7474

7575
t.test('https_proxy', async (t) => {
76+
t.plan(3);
77+
7678
// NO_PROXY is set in CircleCI and brakes test purpose
7779
const tmpNoProxy = process.env.NO_PROXY;
7880
delete process.env.NO_PROXY;
@@ -89,6 +91,7 @@ test('request respects proxy environment variables', async (t) => {
8991
proxy.setTimeout(1000);
9092
proxy.on('connect', (req, cltSocket) => {
9193
const proxiedUrl = url.parse(`https://${req.url}`);
94+
t.equal(req.method, 'CONNECT', 'Proxy for HTTPS using CONNECT');
9295
t.equal(
9396
proxiedUrl.hostname,
9497
url.parse(httpsRequestHost).hostname,
@@ -114,7 +117,7 @@ test('request respects proxy environment variables', async (t) => {
114117
try {
115118
await makeRequest({
116119
method: 'post',
117-
url: httpRequestHost + requestPath,
120+
url: httpsRequestHost + requestPath,
118121
});
119122
} catch (e) {
120123
// an exception is expected
@@ -123,6 +126,8 @@ test('request respects proxy environment variables', async (t) => {
123126
});
124127

125128
t.test('HTTPS_PROXY', async (t) => {
129+
t.plan(3);
130+
126131
// NO_PROXY is set in CircleCI and brakes test purpose
127132
const tmpNoProxy = process.env.NO_PROXY;
128133
delete process.env.NO_PROXY;
@@ -138,6 +143,7 @@ test('request respects proxy environment variables', async (t) => {
138143
proxy.setTimeout(1000);
139144
proxy.on('connect', (req, cltSocket) => {
140145
const proxiedUrl = url.parse(`https://${req.url}`);
146+
t.equal(req.method, 'CONNECT', 'Proxy for HTTPS using CONNECT');
141147
t.equal(
142148
proxiedUrl.hostname,
143149
url.parse(httpsRequestHost).hostname,
@@ -163,7 +169,7 @@ test('request respects proxy environment variables', async (t) => {
163169
try {
164170
await makeRequest({
165171
method: 'post',
166-
url: httpRequestHost + requestPath,
172+
url: httpsRequestHost + requestPath,
167173
});
168174
} catch (e) {
169175
// an exception is expected

0 commit comments

Comments
 (0)