summaryrefslogtreecommitdiff
path: root/test/parallel/test-http-client-reject-unexpected-agent.js
diff options
context:
space:
mode:
authorbrad-decker <bhdecker84@gmail.com>2016-12-06 20:48:55 -0600
committerItalo A. Casas <me@italoacasas.com>2017-01-18 10:24:28 -0500
commitfc7025c9c011f266c6bd73e1fb634eb5f519c5cb (patch)
treef857537d2a4191d2a6db9de8b923e2dbd11f7ada /test/parallel/test-http-client-reject-unexpected-agent.js
parent521767c88605cb6481ea98f396924e55f9dd22f4 (diff)
downloadandroid-node-v8-fc7025c9c011f266c6bd73e1fb634eb5f519c5cb.tar.gz
android-node-v8-fc7025c9c011f266c6bd73e1fb634eb5f519c5cb.tar.bz2
android-node-v8-fc7025c9c011f266c6bd73e1fb634eb5f519c5cb.zip
http: throw an error for unexpected agent values
As per https://github.com/nodejs/node/issues/9069 unexpected things can happen when supplying an unexpected value to agent. Beings as the docs clearly state the expected values, this throws an error on an unexpected value. PR-URL: https://github.com/nodejs/node/pull/10053 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
Diffstat (limited to 'test/parallel/test-http-client-reject-unexpected-agent.js')
-rw-r--r--test/parallel/test-http-client-reject-unexpected-agent.js64
1 files changed, 64 insertions, 0 deletions
diff --git a/test/parallel/test-http-client-reject-unexpected-agent.js b/test/parallel/test-http-client-reject-unexpected-agent.js
new file mode 100644
index 0000000000..559166ec42
--- /dev/null
+++ b/test/parallel/test-http-client-reject-unexpected-agent.js
@@ -0,0 +1,64 @@
+'use strict';
+const common = require('../common');
+const assert = require('assert');
+const http = require('http');
+
+const baseOptions = {
+ method: 'GET',
+ port: undefined,
+ host: common.localhostIPv4,
+};
+
+const failingAgentOptions = [
+ true,
+ 'agent',
+ {},
+ 1,
+ () => null,
+ Symbol(),
+];
+
+const acceptableAgentOptions = [
+ false,
+ undefined,
+ null,
+ new http.Agent(),
+];
+
+const server = http.createServer((req, res) => {
+ res.end('hello');
+});
+
+let numberOfResponses = 0;
+
+function createRequest(agent) {
+ const options = Object.assign(baseOptions, {agent});
+ const request = http.request(options);
+ request.end();
+ request.on('response', common.mustCall(() => {
+ numberOfResponses++;
+ if (numberOfResponses === acceptableAgentOptions.length) {
+ server.close();
+ }
+ }));
+}
+
+server.listen(0, baseOptions.host, common.mustCall(function() {
+ baseOptions.port = this.address().port;
+
+ failingAgentOptions.forEach((agent) => {
+ assert.throws(
+ () => createRequest(agent),
+ /^TypeError: Agent option must be an instance of http.Agent/,
+ `Expected typeof agent: ${typeof agent} to be rejected`
+ );
+ });
+
+ acceptableAgentOptions.forEach((agent) => {
+ assert.doesNotThrow(() => createRequest(agent));
+ });
+}));
+
+process.on('exit', () => {
+ assert.strictEqual(numberOfResponses, acceptableAgentOptions.length);
+});