You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					355 lines
				
				10 KiB
			
		
		
			
		
	
	
					355 lines
				
				10 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Module dependencies.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var fs = require('fs');
							 | 
						||
| 
								 | 
							
								var url = require('url');
							 | 
						||
| 
								 | 
							
								var http = require('http');
							 | 
						||
| 
								 | 
							
								var https = require('https');
							 | 
						||
| 
								 | 
							
								var assert = require('assert');
							 | 
						||
| 
								 | 
							
								var toBuffer = require('stream-to-buffer');
							 | 
						||
| 
								 | 
							
								var Proxy = require('proxy');
							 | 
						||
| 
								 | 
							
								var socks = require('socksv5');
							 | 
						||
| 
								 | 
							
								var ProxyAgent = require('../');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe('ProxyAgent', function () {
							 | 
						||
| 
								 | 
							
								  // target servers
							 | 
						||
| 
								 | 
							
								  var httpServer, httpPort;
							 | 
						||
| 
								 | 
							
								  var httpsServer, httpsPort;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // proxy servers
							 | 
						||
| 
								 | 
							
								  var socksServer, socksPort;
							 | 
						||
| 
								 | 
							
								  var proxyServer, proxyPort;
							 | 
						||
| 
								 | 
							
								  var proxyHttpsServer, proxyHttpsPort;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  before(function (done) {
							 | 
						||
| 
								 | 
							
								    // setup target HTTP server
							 | 
						||
| 
								 | 
							
								    httpServer = http.createServer();
							 | 
						||
| 
								 | 
							
								    httpServer.listen(function () {
							 | 
						||
| 
								 | 
							
								      httpPort = httpServer.address().port;
							 | 
						||
| 
								 | 
							
								      done();
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  before(function (done) {
							 | 
						||
| 
								 | 
							
								    // setup target SSL HTTPS server
							 | 
						||
| 
								 | 
							
								    var options = {
							 | 
						||
| 
								 | 
							
								      key: fs.readFileSync(__dirname + '/ssl-cert-snakeoil.key'),
							 | 
						||
| 
								 | 
							
								      cert: fs.readFileSync(__dirname + '/ssl-cert-snakeoil.pem')
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								    httpsServer = https.createServer(options);
							 | 
						||
| 
								 | 
							
								    httpsServer.listen(function () {
							 | 
						||
| 
								 | 
							
								      httpsPort = httpsServer.address().port;
							 | 
						||
| 
								 | 
							
								      done();
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  before(function (done) {
							 | 
						||
| 
								 | 
							
								    // setup SOCKS proxy server
							 | 
						||
| 
								 | 
							
								    socksServer = socks.createServer(function(info, accept, deny) {
							 | 
						||
| 
								 | 
							
								      accept();
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    socksServer.listen(function() {
							 | 
						||
| 
								 | 
							
								      socksPort = socksServer.address().port;
							 | 
						||
| 
								 | 
							
								      done();
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    socksServer.useAuth(socks.auth.None());
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  before(function (done) {
							 | 
						||
| 
								 | 
							
								    // setup HTTP proxy server
							 | 
						||
| 
								 | 
							
								    proxyServer = Proxy();
							 | 
						||
| 
								 | 
							
								    proxyServer.listen(function () {
							 | 
						||
| 
								 | 
							
								      proxyPort = proxyServer.address().port;
							 | 
						||
| 
								 | 
							
								      done();
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  before(function (done) {
							 | 
						||
| 
								 | 
							
								    // setup SSL HTTPS proxy server
							 | 
						||
| 
								 | 
							
								    var options = {
							 | 
						||
| 
								 | 
							
								      key: fs.readFileSync(__dirname + '/ssl-cert-snakeoil.key'),
							 | 
						||
| 
								 | 
							
								      cert: fs.readFileSync(__dirname + '/ssl-cert-snakeoil.pem')
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								    proxyHttpsServer = Proxy(https.createServer(options));
							 | 
						||
| 
								 | 
							
								    proxyHttpsServer.listen(function () {
							 | 
						||
| 
								 | 
							
								      proxyHttpsPort = proxyHttpsServer.address().port;
							 | 
						||
| 
								 | 
							
								      done();
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  after(function (done) {
							 | 
						||
| 
								 | 
							
								    //socksServer.once('close', function () { done(); });
							 | 
						||
| 
								 | 
							
								    socksServer.close();
							 | 
						||
| 
								 | 
							
								    done();
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  after(function (done) {
							 | 
						||
| 
								 | 
							
								    //httpServer.once('close', function () { done(); });
							 | 
						||
| 
								 | 
							
								    httpServer.close();
							 | 
						||
| 
								 | 
							
								    done();
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  after(function (done) {
							 | 
						||
| 
								 | 
							
								    //httpsServer.once('close', function () { done(); });
							 | 
						||
| 
								 | 
							
								    httpsServer.close();
							 | 
						||
| 
								 | 
							
								    done();
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  after(function (done) {
							 | 
						||
| 
								 | 
							
								    //proxyServer.once('close', function () { done(); });
							 | 
						||
| 
								 | 
							
								    proxyServer.close();
							 | 
						||
| 
								 | 
							
								    done();
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  after(function (done) {
							 | 
						||
| 
								 | 
							
								    //proxyHttpsServer.once('close', function () { done(); });
							 | 
						||
| 
								 | 
							
								    proxyHttpsServer.close();
							 | 
						||
| 
								 | 
							
								    done();
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('should export a "function"', function () {
							 | 
						||
| 
								 | 
							
								    assert.equal('function', typeof ProxyAgent);
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  describe('constructor', function () {
							 | 
						||
| 
								 | 
							
								    it('should throw a TypeError if no "protocol" is given', function () {
							 | 
						||
| 
								 | 
							
								      assert.throws(function () {
							 | 
						||
| 
								 | 
							
								        ProxyAgent({ host: 'foo.com', port: 3128 });
							 | 
						||
| 
								 | 
							
								      }, function (e) {
							 | 
						||
| 
								 | 
							
								        return 'TypeError' === e.name &&
							 | 
						||
| 
								 | 
							
								          /must specify a "protocol"/.test(e.message) &&
							 | 
						||
| 
								 | 
							
								          /\bhttp\b/.test(e.message) &&
							 | 
						||
| 
								 | 
							
								          /\bhttps\b/.test(e.message) &&
							 | 
						||
| 
								 | 
							
								          /\bsocks\b/.test(e.message);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should throw a TypeError for unsupported proxy protocols', function () {
							 | 
						||
| 
								 | 
							
								      assert.throws(function () {
							 | 
						||
| 
								 | 
							
								        ProxyAgent('bad://foo.com:8888');
							 | 
						||
| 
								 | 
							
								      }, function (e) {
							 | 
						||
| 
								 | 
							
								        return 'TypeError' === e.name &&
							 | 
						||
| 
								 | 
							
								          /unsupported proxy protocol/.test(e.message);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  describe('"http" module', function () {
							 | 
						||
| 
								 | 
							
								    describe('over "http" proxy', function () {
							 | 
						||
| 
								 | 
							
								      it('should work', function (done) {
							 | 
						||
| 
								 | 
							
								        httpServer.once('request', function (req, res) {
							 | 
						||
| 
								 | 
							
								          res.end(JSON.stringify(req.headers));
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var uri = 'http://localhost:' + proxyPort;
							 | 
						||
| 
								 | 
							
								        var agent = new ProxyAgent(uri);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var opts = url.parse('http://localhost:' + httpPort + '/test');
							 | 
						||
| 
								 | 
							
								        opts.agent = agent;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var req = http.get(opts, function (res) {
							 | 
						||
| 
								 | 
							
								          toBuffer(res, function (err, buf) {
							 | 
						||
| 
								 | 
							
								            if (err) return done(err);
							 | 
						||
| 
								 | 
							
								            var data = JSON.parse(buf.toString('utf8'));
							 | 
						||
| 
								 | 
							
								            assert.equal('localhost:' + httpPort, data.host);
							 | 
						||
| 
								 | 
							
								            assert('via' in data);
							 | 
						||
| 
								 | 
							
								            done();
							 | 
						||
| 
								 | 
							
								          });
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								        req.once('error', done);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    describe('over "http" proxy from env', function () {
							 | 
						||
| 
								 | 
							
								      it('should work', function (done) {
							 | 
						||
| 
								 | 
							
								        httpServer.once('request', function (req, res) {
							 | 
						||
| 
								 | 
							
								          res.end(JSON.stringify(req.headers));
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        process.env.HTTP_PROXY = 'http://localhost:' + proxyPort;
							 | 
						||
| 
								 | 
							
								        var agent = new ProxyAgent();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var opts = url.parse('http://localhost:' + httpPort + '/test');
							 | 
						||
| 
								 | 
							
								        opts.agent = agent;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var req = http.get(opts, function (res) {
							 | 
						||
| 
								 | 
							
								          toBuffer(res, function (err, buf) {
							 | 
						||
| 
								 | 
							
								            if (err) return done(err);
							 | 
						||
| 
								 | 
							
								            var data = JSON.parse(buf.toString('utf8'));
							 | 
						||
| 
								 | 
							
								            assert.equal('localhost:' + httpPort, data.host);
							 | 
						||
| 
								 | 
							
								            assert('via' in data);
							 | 
						||
| 
								 | 
							
								            done();
							 | 
						||
| 
								 | 
							
								          });
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								        req.once('error', done);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    describe('with no proxy from env', function () {
							 | 
						||
| 
								 | 
							
								      it('should work', function (done) {
							 | 
						||
| 
								 | 
							
								        httpServer.once('request', function (req, res) {
							 | 
						||
| 
								 | 
							
								          res.end(JSON.stringify(req.headers));
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        process.env.NO_PROXY = '*';
							 | 
						||
| 
								 | 
							
								        var agent = new ProxyAgent();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var opts = url.parse('http://localhost:' + httpPort + '/test');
							 | 
						||
| 
								 | 
							
								        opts.agent = agent;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var req = http.get(opts, function (res) {
							 | 
						||
| 
								 | 
							
								          toBuffer(res, function (err, buf) {
							 | 
						||
| 
								 | 
							
								            if (err) return done(err);
							 | 
						||
| 
								 | 
							
								            var data = JSON.parse(buf.toString('utf8'));
							 | 
						||
| 
								 | 
							
								            assert.equal('localhost:' + httpPort, data.host);
							 | 
						||
| 
								 | 
							
								            assert(!('via' in data));
							 | 
						||
| 
								 | 
							
								            done();
							 | 
						||
| 
								 | 
							
								          });
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								        req.once('error', done);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    describe('over "https" proxy', function () {
							 | 
						||
| 
								 | 
							
								      it('should work', function (done) {
							 | 
						||
| 
								 | 
							
								        httpServer.once('request', function (req, res) {
							 | 
						||
| 
								 | 
							
								          res.end(JSON.stringify(req.headers));
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var uri = 'https://localhost:' + proxyHttpsPort;
							 | 
						||
| 
								 | 
							
								        var proxy = url.parse(uri);
							 | 
						||
| 
								 | 
							
								        proxy.rejectUnauthorized = false;
							 | 
						||
| 
								 | 
							
								        var agent = new ProxyAgent(proxy);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var opts = url.parse('http://localhost:' + httpPort + '/test');
							 | 
						||
| 
								 | 
							
								        opts.agent = agent;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var req = http.get(opts, function (res) {
							 | 
						||
| 
								 | 
							
								          toBuffer(res, function (err, buf) {
							 | 
						||
| 
								 | 
							
								            if (err) return done(err);
							 | 
						||
| 
								 | 
							
								            var data = JSON.parse(buf.toString('utf8'));
							 | 
						||
| 
								 | 
							
								            assert.equal('localhost:' + httpPort, data.host);
							 | 
						||
| 
								 | 
							
								            assert('via' in data);
							 | 
						||
| 
								 | 
							
								            done();
							 | 
						||
| 
								 | 
							
								          });
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								        req.once('error', done);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    describe('over "socks" proxy', function () {
							 | 
						||
| 
								 | 
							
								      it('should work', function (done) {
							 | 
						||
| 
								 | 
							
								        httpServer.once('request', function (req, res) {
							 | 
						||
| 
								 | 
							
								          res.end(JSON.stringify(req.headers));
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var uri = 'socks://localhost:' + socksPort;
							 | 
						||
| 
								 | 
							
								        var agent = new ProxyAgent(uri);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var opts = url.parse('http://localhost:' + httpPort + '/test');
							 | 
						||
| 
								 | 
							
								        opts.agent = agent;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var req = http.get(opts, function (res) {
							 | 
						||
| 
								 | 
							
								          toBuffer(res, function (err, buf) {
							 | 
						||
| 
								 | 
							
								            if (err) return done(err);
							 | 
						||
| 
								 | 
							
								            var data = JSON.parse(buf.toString('utf8'));
							 | 
						||
| 
								 | 
							
								            assert.equal('localhost:' + httpPort, data.host);
							 | 
						||
| 
								 | 
							
								            done();
							 | 
						||
| 
								 | 
							
								          });
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								        req.once('error', done);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  describe('"https" module', function () {
							 | 
						||
| 
								 | 
							
								    describe('over "http" proxy', function () {
							 | 
						||
| 
								 | 
							
								      it('should work', function (done) {
							 | 
						||
| 
								 | 
							
								        httpsServer.once('request', function (req, res) {
							 | 
						||
| 
								 | 
							
								          res.end(JSON.stringify(req.headers));
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var uri = 'http://localhost:' + proxyPort;
							 | 
						||
| 
								 | 
							
								        var agent = new ProxyAgent(uri);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var opts = url.parse('https://localhost:' + httpsPort + '/test');
							 | 
						||
| 
								 | 
							
								        opts.agent = agent;
							 | 
						||
| 
								 | 
							
								        opts.rejectUnauthorized = false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var req = https.get(opts, function (res) {
							 | 
						||
| 
								 | 
							
								          toBuffer(res, function (err, buf) {
							 | 
						||
| 
								 | 
							
								            if (err) return done(err);
							 | 
						||
| 
								 | 
							
								            var data = JSON.parse(buf.toString('utf8'));
							 | 
						||
| 
								 | 
							
								            assert.equal('localhost:' + httpsPort, data.host);
							 | 
						||
| 
								 | 
							
								            done();
							 | 
						||
| 
								 | 
							
								          });
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								        req.once('error', done);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    describe('over "https" proxy', function () {
							 | 
						||
| 
								 | 
							
								      it('should work', function (done) {
							 | 
						||
| 
								 | 
							
								        var gotReq = false;
							 | 
						||
| 
								 | 
							
								        httpsServer.once('request', function (req, res) {
							 | 
						||
| 
								 | 
							
								          gotReq = true;
							 | 
						||
| 
								 | 
							
								          res.end(JSON.stringify(req.headers));
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var agent = new ProxyAgent({
							 | 
						||
| 
								 | 
							
								          protocol: 'https:',
							 | 
						||
| 
								 | 
							
								          host: 'localhost',
							 | 
						||
| 
								 | 
							
								          port: proxyHttpsPort,
							 | 
						||
| 
								 | 
							
								          rejectUnauthorized: false
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var opts = url.parse('https://localhost:' + httpsPort + '/test');
							 | 
						||
| 
								 | 
							
								        opts.agent = agent;
							 | 
						||
| 
								 | 
							
								        opts.rejectUnauthorized = false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var req = https.get(opts, function (res) {
							 | 
						||
| 
								 | 
							
								          toBuffer(res, function (err, buf) {
							 | 
						||
| 
								 | 
							
								            if (err) return done(err);
							 | 
						||
| 
								 | 
							
								            var data = JSON.parse(buf.toString('utf8'));
							 | 
						||
| 
								 | 
							
								            assert.equal('localhost:' + httpsPort, data.host);
							 | 
						||
| 
								 | 
							
								            assert(gotReq);
							 | 
						||
| 
								 | 
							
								            done();
							 | 
						||
| 
								 | 
							
								          });
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								        req.once('error', done);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    describe('over "socks" proxy', function () {
							 | 
						||
| 
								 | 
							
								      it('should work', function (done) {
							 | 
						||
| 
								 | 
							
								        var gotReq = false;
							 | 
						||
| 
								 | 
							
								        httpsServer.once('request', function (req, res) {
							 | 
						||
| 
								 | 
							
								          gotReq = true;
							 | 
						||
| 
								 | 
							
								          res.end(JSON.stringify(req.headers));
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var uri = 'socks://localhost:' + socksPort;
							 | 
						||
| 
								 | 
							
								        var agent = new ProxyAgent(uri);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var opts = url.parse('https://localhost:' + httpsPort + '/test');
							 | 
						||
| 
								 | 
							
								        opts.agent = agent;
							 | 
						||
| 
								 | 
							
								        opts.rejectUnauthorized = false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        var req = https.get(opts, function (res) {
							 | 
						||
| 
								 | 
							
								          toBuffer(res, function (err, buf) {
							 | 
						||
| 
								 | 
							
								            if (err) return done(err);
							 | 
						||
| 
								 | 
							
								            var data = JSON.parse(buf.toString('utf8'));
							 | 
						||
| 
								 | 
							
								            assert.equal('localhost:' + httpsPort, data.host);
							 | 
						||
| 
								 | 
							
								            assert(gotReq);
							 | 
						||
| 
								 | 
							
								            done();
							 | 
						||
| 
								 | 
							
								          });
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								        req.once('error', done);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								});
							 |