aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchiaki-yokoo <chiaki_yokoo@r.recruit.co.jp>2017-02-17 12:55:27 +0900
committerYuta Hiroto <git@about-hiroppy.com>2017-03-02 09:23:37 +0900
commit104c9accb71f6ff2e2c93b0304cb6f2a7dd4a705 (patch)
tree16d176231b6154a27e34c38990011eb5def894e7
parent87a039d721b7e9fd73365774ac3e27166e4e1f6e (diff)
downloadandroid-node-v8-104c9accb71f6ff2e2c93b0304cb6f2a7dd4a705.tar.gz
android-node-v8-104c9accb71f6ff2e2c93b0304cb6f2a7dd4a705.tar.bz2
android-node-v8-104c9accb71f6ff2e2c93b0304cb6f2a7dd4a705.zip
test: improve https coverage to check create connection
PR-URL: https://github.com/nodejs/node/pull/11435 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Yuta Hiroto <hello@about-hiroppy.com>
-rw-r--r--test/parallel/test-https-agent-create-connection.js124
1 files changed, 124 insertions, 0 deletions
diff --git a/test/parallel/test-https-agent-create-connection.js b/test/parallel/test-https-agent-create-connection.js
new file mode 100644
index 0000000000..f593700081
--- /dev/null
+++ b/test/parallel/test-https-agent-create-connection.js
@@ -0,0 +1,124 @@
+'use strict';
+
+const common = require('../common');
+if (!common.hasCrypto) {
+ common.skip('missing crypto');
+ return;
+}
+
+const assert = require('assert');
+const https = require('https');
+
+const agent = new https.Agent();
+
+const fs = require('fs');
+
+const options = {
+ key: fs.readFileSync(common.fixturesDir + '/keys/agent1-key.pem'),
+ cert: fs.readFileSync(common.fixturesDir + '/keys/agent1-cert.pem'),
+};
+
+const server = https.createServer(options, (req, res) => {
+ res.end('hello world\n');
+});
+
+const expectedHeader = /^HTTP\/1.1 200 OK/;
+const expectedBody = /hello world\n/;
+const expectCertError = /^Error: unable to verify the first certificate$/;
+
+const checkRequest = (socket, server) => {
+ let result = '';
+ socket.on('connect', common.mustCall((data) => {
+ socket.write('GET / HTTP/1.1\r\n\r\n');
+ socket.end();
+ }));
+ socket.on('data', common.mustCall((chunk) => {
+ result += chunk;
+ }));
+ socket.on('end', common.mustCall(() => {
+ assert(expectedHeader.test(result));
+ assert(expectedBody.test(result));
+ server.close();
+ }));
+};
+
+// use option connect
+server.listen(0, common.mustCall(() => {
+ const port = server.address().port;
+ const host = 'localhost';
+ const options = {
+ port: port,
+ host: host,
+ rejectUnauthorized: false,
+ _agentKey: agent.getName({
+ port: port,
+ host: host,
+ }),
+ };
+
+ const socket = agent.createConnection(options);
+ checkRequest(socket, server);
+}));
+
+// use port and option connect
+server.listen(0, common.mustCall(() => {
+ const port = server.address().port;
+ const host = 'localhost';
+ const options = {
+ rejectUnauthorized: false,
+ _agentKey: agent.getName({
+ port: port,
+ host: host,
+ }),
+ };
+ const socket = agent.createConnection(port, options);
+ checkRequest(socket, server);
+}));
+
+// use port and host and option connect
+server.listen(0, common.mustCall(() => {
+ const port = server.address().port;
+ const host = 'localhost';
+ const options = {
+ rejectUnauthorized: false,
+ _agentKey: agent.getName({
+ port: port,
+ host: host,
+ }),
+ };
+ const socket = agent.createConnection(port, host, options);
+ checkRequest(socket, server);
+}));
+
+// use port and host and option does not have agentKey
+server.listen(0, common.mustCall(() => {
+ const port = server.address().port;
+ const host = 'localhost';
+ const options = {
+ rejectUnauthorized: false,
+ };
+ const socket = agent.createConnection(port, host, options);
+ checkRequest(socket, server);
+}));
+
+// options is null
+server.listen(0, common.mustCall(() => {
+ const port = server.address().port;
+ const host = 'localhost';
+ const options = null;
+ const socket = agent.createConnection(port, host, options);
+ socket.on('error', common.mustCall((e) => {
+ assert(expectCertError.test(e.toString()));
+ }));
+}));
+
+// options is undefined
+server.listen(0, common.mustCall(() => {
+ const port = server.address().port;
+ const host = 'localhost';
+ const options = undefined;
+ const socket = agent.createConnection(port, host, options);
+ socket.on('error', common.mustCall((e) => {
+ assert(expectCertError.test(e.toString()));
+ }));
+}));