GoogleOauth2.0 First implementation
First try for GoogleOauth2.0
This commit is contained in:
		
							
								
								
									
										15
									
								
								express-server/node_modules/https-proxy-agent/test/ssl-cert-snakeoil.key
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								express-server/node_modules/https-proxy-agent/test/ssl-cert-snakeoil.key
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
-----BEGIN RSA PRIVATE KEY-----
 | 
			
		||||
MIICWwIBAAKBgQCzURxIqzer0ACAbX/lHdsn4Gd9PLKrf7EeDYfIdV0HZKPD8WDr
 | 
			
		||||
bBx2/fBu0OW2sjnzv/SVZbJ0DAuPE/p0+eT0qb2qC10iz9iTD7ribd7gxhirVb8y
 | 
			
		||||
b3fBjXsxc8V8p4Ny1LcvNSqCjwUbJqdRogfoJeTiqPM58z5sNzuv5iq7iwIDAQAB
 | 
			
		||||
AoGAPMQy4olrP0UotlzlJ36bowLP70ffgHCwU+/f4NWs5fF78c3du0oSx1w820Dd
 | 
			
		||||
Z7E0JF8bgnlJJTxjumPZz0RUCugrEHBKJmzEz3cxF5E3+7NvteZcjKn9D67RrM5x
 | 
			
		||||
1/uSZ9cqKE9cYvY4fSuHx18diyZ4axR/wB1Pea2utjjDM+ECQQDb9ZbmmaWMiRpQ
 | 
			
		||||
5Up+loxP7BZNPsEVsm+DVJmEFbaFgGfncWBqSIqnPNjMwTwj0OigTwCAEGPkfRVW
 | 
			
		||||
T0pbYWCxAkEA0LK7SCTwzyDmhASUalk0x+3uCAA6ryFdwJf/wd8TRAvVOmkTEldX
 | 
			
		||||
uJ7ldLvfrONYO3v56uKTU/SoNdZYzKtO+wJAX2KM4ctXYy5BXztPpr2acz4qHa1N
 | 
			
		||||
Bh+vBAC34fOYhyQ76r3b1btHhWZ5jbFuZwm9F2erC94Ps5IaoqcX07DSwQJAPKGw
 | 
			
		||||
h2U0EPkd/3zVIZCJJQya+vgWFIs9EZcXVtvYXQyTBkVApTN66MhBIYjzkub5205J
 | 
			
		||||
bVQmOV37AKklY1DhwQJAA1wos0cYxro02edzatxd0DIR2r4qqOqLkw6BhYHhq6HJ
 | 
			
		||||
ZvIcQkHqdSXzdETFc01I1znDGGIrJHcnvKWgBPoEUg==
 | 
			
		||||
-----END RSA PRIVATE KEY-----
 | 
			
		||||
							
								
								
									
										12
									
								
								express-server/node_modules/https-proxy-agent/test/ssl-cert-snakeoil.pem
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								express-server/node_modules/https-proxy-agent/test/ssl-cert-snakeoil.pem
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
-----BEGIN CERTIFICATE-----
 | 
			
		||||
MIIB1TCCAT4CCQDV5mPlzm9+izANBgkqhkiG9w0BAQUFADAvMS0wKwYDVQQDEyQ3
 | 
			
		||||
NTI3YmQ3Ny1hYjNlLTQ3NGItYWNlNy1lZWQ2MDUzOTMxZTcwHhcNMTUwNzA2MjI0
 | 
			
		||||
NTA3WhcNMjUwNzAzMjI0NTA3WjAvMS0wKwYDVQQDEyQ3NTI3YmQ3Ny1hYjNlLTQ3
 | 
			
		||||
NGItYWNlNy1lZWQ2MDUzOTMxZTcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
 | 
			
		||||
ALNRHEirN6vQAIBtf+Ud2yfgZ308sqt/sR4Nh8h1XQdko8PxYOtsHHb98G7Q5bay
 | 
			
		||||
OfO/9JVlsnQMC48T+nT55PSpvaoLXSLP2JMPuuJt3uDGGKtVvzJvd8GNezFzxXyn
 | 
			
		||||
g3LUty81KoKPBRsmp1GiB+gl5OKo8znzPmw3O6/mKruLAgMBAAEwDQYJKoZIhvcN
 | 
			
		||||
AQEFBQADgYEACzoHUF8UV2Z6541Q2wKEA0UFUzmUjf/E1XwBO+1P15ZZ64uw34B4
 | 
			
		||||
1RwMPtAo9RY/PmICTWtNxWGxkzwb2JtDWtnxVER/lF8k2XcXPE76fxTHJF/BKk9J
 | 
			
		||||
QU8OTD1dd9gHCBviQB9TqntRZ5X7axjtuWjb2umY+owBYzAHZkp1HKI=
 | 
			
		||||
-----END CERTIFICATE-----
 | 
			
		||||
							
								
								
									
										342
									
								
								express-server/node_modules/https-proxy-agent/test/test.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										342
									
								
								express-server/node_modules/https-proxy-agent/test/test.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,342 @@
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Module dependencies.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
var fs = require('fs');
 | 
			
		||||
var url = require('url');
 | 
			
		||||
var http = require('http');
 | 
			
		||||
var https = require('https');
 | 
			
		||||
var assert = require('assert');
 | 
			
		||||
var Proxy = require('proxy');
 | 
			
		||||
var HttpsProxyAgent = require('../');
 | 
			
		||||
 | 
			
		||||
describe('HttpsProxyAgent', function () {
 | 
			
		||||
 | 
			
		||||
  var server;
 | 
			
		||||
  var serverPort;
 | 
			
		||||
 | 
			
		||||
  var sslServer;
 | 
			
		||||
  var sslServerPort;
 | 
			
		||||
 | 
			
		||||
  var proxy;
 | 
			
		||||
  var proxyPort;
 | 
			
		||||
 | 
			
		||||
  var sslProxy;
 | 
			
		||||
  var sslProxyPort;
 | 
			
		||||
 | 
			
		||||
  before(function (done) {
 | 
			
		||||
    // setup target HTTP server
 | 
			
		||||
    server = http.createServer();
 | 
			
		||||
    server.listen(function () {
 | 
			
		||||
      serverPort = server.address().port;
 | 
			
		||||
      done();
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  before(function (done) {
 | 
			
		||||
    // setup HTTP proxy server
 | 
			
		||||
    proxy = Proxy();
 | 
			
		||||
    proxy.listen(function () {
 | 
			
		||||
      proxyPort = proxy.address().port;
 | 
			
		||||
      done();
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  before(function (done) {
 | 
			
		||||
    // setup target HTTPS server
 | 
			
		||||
    var options = {
 | 
			
		||||
      key: fs.readFileSync(__dirname + '/ssl-cert-snakeoil.key'),
 | 
			
		||||
      cert: fs.readFileSync(__dirname + '/ssl-cert-snakeoil.pem')
 | 
			
		||||
    };
 | 
			
		||||
    sslServer = https.createServer(options);
 | 
			
		||||
    sslServer.listen(function () {
 | 
			
		||||
      sslServerPort = sslServer.address().port;
 | 
			
		||||
      done();
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  before(function (done) {
 | 
			
		||||
    // setup SSL HTTP proxy server
 | 
			
		||||
    var options = {
 | 
			
		||||
      key: fs.readFileSync(__dirname + '/ssl-cert-snakeoil.key'),
 | 
			
		||||
      cert: fs.readFileSync(__dirname + '/ssl-cert-snakeoil.pem')
 | 
			
		||||
    };
 | 
			
		||||
    sslProxy = Proxy(https.createServer(options));
 | 
			
		||||
    sslProxy.listen(function () {
 | 
			
		||||
      sslProxyPort = sslProxy.address().port;
 | 
			
		||||
      done();
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  // shut down test HTTP server
 | 
			
		||||
  after(function (done) {
 | 
			
		||||
    server.once('close', function () { done(); });
 | 
			
		||||
    server.close();
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  after(function (done) {
 | 
			
		||||
    proxy.once('close', function () { done(); });
 | 
			
		||||
    proxy.close();
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  after(function (done) {
 | 
			
		||||
    sslServer.once('close', function () { done(); });
 | 
			
		||||
    sslServer.close();
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  after(function (done) {
 | 
			
		||||
    sslProxy.once('close', function () { done(); });
 | 
			
		||||
    sslProxy.close();
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('constructor', function () {
 | 
			
		||||
    it('should throw an Error if no "proxy" argument is given', function () {
 | 
			
		||||
      assert.throws(function () {
 | 
			
		||||
        new HttpsProxyAgent();
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
    it('should accept a "string" proxy argument', function () {
 | 
			
		||||
      var agent = new HttpsProxyAgent('http://127.0.0.1:' + proxyPort);
 | 
			
		||||
      assert.equal('127.0.0.1', agent.proxy.host);
 | 
			
		||||
      assert.equal(proxyPort, agent.proxy.port);
 | 
			
		||||
    });
 | 
			
		||||
    it('should accept a `url.parse()` result object argument', function () {
 | 
			
		||||
      var opts = url.parse('http://127.0.0.1:' + proxyPort);
 | 
			
		||||
      var agent = new HttpsProxyAgent(opts);
 | 
			
		||||
      assert.equal('127.0.0.1', agent.proxy.host);
 | 
			
		||||
      assert.equal(proxyPort, agent.proxy.port);
 | 
			
		||||
    });
 | 
			
		||||
    it('should set a `defaultPort` property', function () {
 | 
			
		||||
      var opts = url.parse("http://127.0.0.1:" + proxyPort);
 | 
			
		||||
      var agent = new HttpsProxyAgent(opts);
 | 
			
		||||
      assert.equal(443, agent.defaultPort);
 | 
			
		||||
    });
 | 
			
		||||
    describe('secureProxy', function () {
 | 
			
		||||
      it('should default to `false`', function () {
 | 
			
		||||
        var agent = new HttpsProxyAgent({ port: proxyPort });
 | 
			
		||||
        assert.equal(false, agent.secureProxy);
 | 
			
		||||
      });
 | 
			
		||||
      it('should be `false` when "http:" protocol is used', function () {
 | 
			
		||||
        var agent = new HttpsProxyAgent({ port: proxyPort, protocol: 'http:' });
 | 
			
		||||
        assert.equal(false, agent.secureProxy);
 | 
			
		||||
      });
 | 
			
		||||
      it('should be `true` when "https:" protocol is used', function () {
 | 
			
		||||
        var agent = new HttpsProxyAgent({ port: proxyPort, protocol: 'https:' });
 | 
			
		||||
        assert.equal(true, agent.secureProxy);
 | 
			
		||||
      });
 | 
			
		||||
      it('should be `true` when "https" protocol is used', function () {
 | 
			
		||||
        var agent = new HttpsProxyAgent({ port: proxyPort, protocol: 'https' });
 | 
			
		||||
        assert.equal(true, agent.secureProxy);
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('"http" module', function () {
 | 
			
		||||
 | 
			
		||||
    beforeEach(function () {
 | 
			
		||||
      delete proxy.authenticate;
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('should work over an HTTP proxy', function (done) {
 | 
			
		||||
      server.once('request', function (req, res) {
 | 
			
		||||
        res.end(JSON.stringify(req.headers));
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      var proxy = process.env.HTTP_PROXY || process.env.http_proxy || 'http://127.0.0.1:' + proxyPort;
 | 
			
		||||
      var agent = new HttpsProxyAgent(proxy);
 | 
			
		||||
 | 
			
		||||
      var opts = url.parse('http://127.0.0.1:' + serverPort);
 | 
			
		||||
      opts.agent = agent;
 | 
			
		||||
 | 
			
		||||
      var req = http.get(opts, function (res) {
 | 
			
		||||
        var data = '';
 | 
			
		||||
        res.setEncoding('utf8');
 | 
			
		||||
        res.on('data', function (b) {
 | 
			
		||||
          data += b;
 | 
			
		||||
        });
 | 
			
		||||
        res.on('end', function () {
 | 
			
		||||
          data = JSON.parse(data);
 | 
			
		||||
          assert.equal('127.0.0.1:' + serverPort, data.host);
 | 
			
		||||
          done();
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
      req.once('error', done);
 | 
			
		||||
    });
 | 
			
		||||
    it('should work over an HTTPS proxy', function (done) {
 | 
			
		||||
      server.once('request', function (req, res) {
 | 
			
		||||
        res.end(JSON.stringify(req.headers));
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      var proxy = process.env.HTTPS_PROXY || process.env.https_proxy || 'https://127.0.0.1:' + sslProxyPort;
 | 
			
		||||
      proxy = url.parse(proxy);
 | 
			
		||||
      proxy.rejectUnauthorized = false;
 | 
			
		||||
      var agent = new HttpsProxyAgent(proxy);
 | 
			
		||||
 | 
			
		||||
      var opts = url.parse('http://127.0.0.1:' + serverPort);
 | 
			
		||||
      opts.agent = agent;
 | 
			
		||||
 | 
			
		||||
      http.get(opts, function (res) {
 | 
			
		||||
        var data = '';
 | 
			
		||||
        res.setEncoding('utf8');
 | 
			
		||||
        res.on('data', function (b) {
 | 
			
		||||
          data += b;
 | 
			
		||||
        });
 | 
			
		||||
        res.on('end', function () {
 | 
			
		||||
          data = JSON.parse(data);
 | 
			
		||||
          assert.equal('127.0.0.1:' + serverPort, data.host);
 | 
			
		||||
          done();
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
    it('should receive the 407 authorization code on the `http.ClientResponse`', function (done) {
 | 
			
		||||
      // set a proxy authentication function for this test
 | 
			
		||||
      proxy.authenticate = function (req, fn) {
 | 
			
		||||
        // reject all requests
 | 
			
		||||
        fn(null, false);
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      var proxyUri = process.env.HTTP_PROXY || process.env.http_proxy || 'http://127.0.0.1:' + proxyPort;
 | 
			
		||||
      var agent = new HttpsProxyAgent(proxyUri);
 | 
			
		||||
 | 
			
		||||
      var opts = {};
 | 
			
		||||
      // `host` and `port` don't really matter since the proxy will reject anyways
 | 
			
		||||
      opts.host = '127.0.0.1';
 | 
			
		||||
      opts.port = 80;
 | 
			
		||||
      opts.agent = agent;
 | 
			
		||||
 | 
			
		||||
      var req = http.get(opts, function (res) {
 | 
			
		||||
        assert.equal(407, res.statusCode);
 | 
			
		||||
        assert('proxy-authenticate' in res.headers);
 | 
			
		||||
        done();
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
    it('should emit an "error" event on the `http.ClientRequest` if the proxy does not exist', function (done) {
 | 
			
		||||
      // port 4 is a reserved, but "unassigned" port
 | 
			
		||||
      var proxyUri = 'http://127.0.0.1:4';
 | 
			
		||||
      var agent = new HttpsProxyAgent(proxyUri);
 | 
			
		||||
 | 
			
		||||
      var opts = url.parse('http://nodejs.org');
 | 
			
		||||
      opts.agent = agent;
 | 
			
		||||
 | 
			
		||||
      var req = http.get(opts);
 | 
			
		||||
      req.once('error', function (err) {
 | 
			
		||||
        assert.equal('ECONNREFUSED', err.code);
 | 
			
		||||
        req.abort();
 | 
			
		||||
        done();
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('should allow custom proxy "headers"', function (done) {
 | 
			
		||||
      server.once('connect', function (req, socket, head) {
 | 
			
		||||
        assert.equal('CONNECT', req.method);
 | 
			
		||||
        assert.equal('bar', req.headers.foo);
 | 
			
		||||
        socket.destroy();
 | 
			
		||||
        done();
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      var uri = 'http://127.0.0.1:' + serverPort;
 | 
			
		||||
      var proxyOpts = url.parse(uri);
 | 
			
		||||
      proxyOpts.headers = {
 | 
			
		||||
        'Foo': 'bar'
 | 
			
		||||
      };
 | 
			
		||||
      var agent = new HttpsProxyAgent(proxyOpts);
 | 
			
		||||
 | 
			
		||||
      var opts = {};
 | 
			
		||||
      // `host` and `port` don't really matter since the proxy will reject anyways
 | 
			
		||||
      opts.host = '127.0.0.1';
 | 
			
		||||
      opts.port = 80;
 | 
			
		||||
      opts.agent = agent;
 | 
			
		||||
 | 
			
		||||
      http.get(opts);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('"https" module', function () {
 | 
			
		||||
    it('should work over an HTTP proxy', function (done) {
 | 
			
		||||
      sslServer.once('request', function (req, res) {
 | 
			
		||||
        res.end(JSON.stringify(req.headers));
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      var proxy = process.env.HTTP_PROXY || process.env.http_proxy || 'http://127.0.0.1:' + proxyPort;
 | 
			
		||||
      var agent = new HttpsProxyAgent(proxy);
 | 
			
		||||
 | 
			
		||||
      var opts = url.parse('https://127.0.0.1:' + sslServerPort);
 | 
			
		||||
      opts.rejectUnauthorized = false;
 | 
			
		||||
      opts.agent = agent;
 | 
			
		||||
 | 
			
		||||
      https.get(opts, function (res) {
 | 
			
		||||
        var data = '';
 | 
			
		||||
        res.setEncoding('utf8');
 | 
			
		||||
        res.on('data', function (b) {
 | 
			
		||||
          data += b;
 | 
			
		||||
        });
 | 
			
		||||
        res.on('end', function () {
 | 
			
		||||
          data = JSON.parse(data);
 | 
			
		||||
          assert.equal('127.0.0.1:' + sslServerPort, data.host);
 | 
			
		||||
          done();
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('should work over an HTTPS proxy', function (done) {
 | 
			
		||||
      sslServer.once('request', function (req, res) {
 | 
			
		||||
        res.end(JSON.stringify(req.headers));
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      var proxy = process.env.HTTPS_PROXY || process.env.https_proxy || 'https://127.0.0.1:' + sslProxyPort;
 | 
			
		||||
      proxy = url.parse(proxy);
 | 
			
		||||
      proxy.rejectUnauthorized = false;
 | 
			
		||||
      var agent = new HttpsProxyAgent(proxy);
 | 
			
		||||
 | 
			
		||||
      var opts = url.parse('https://127.0.0.1:' + sslServerPort);
 | 
			
		||||
      opts.agent = agent;
 | 
			
		||||
      opts.rejectUnauthorized = false;
 | 
			
		||||
 | 
			
		||||
      https.get(opts, function (res) {
 | 
			
		||||
        var data = '';
 | 
			
		||||
        res.setEncoding('utf8');
 | 
			
		||||
        res.on('data', function (b) {
 | 
			
		||||
          data += b;
 | 
			
		||||
        });
 | 
			
		||||
        res.on('end', function () {
 | 
			
		||||
          data = JSON.parse(data);
 | 
			
		||||
          assert.equal('127.0.0.1:' + sslServerPort, data.host);
 | 
			
		||||
          done();
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('should not send a port number for the default port', function (done) {
 | 
			
		||||
      sslServer.once('request', function (req, res) {
 | 
			
		||||
        res.end(JSON.stringify(req.headers));
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      var proxy = process.env.HTTPS_PROXY || process.env.https_proxy || "https://127.0.0.1:" + sslProxyPort;
 | 
			
		||||
      proxy = url.parse(proxy);
 | 
			
		||||
      proxy.rejectUnauthorized = false;
 | 
			
		||||
      var agent = new HttpsProxyAgent(proxy);
 | 
			
		||||
      agent.defaultPort = sslServerPort;
 | 
			
		||||
 | 
			
		||||
      var opts = url.parse("https://127.0.0.1:" + sslServerPort);
 | 
			
		||||
      opts.agent = agent;
 | 
			
		||||
      opts.rejectUnauthorized = false;
 | 
			
		||||
 | 
			
		||||
      https.get(opts, function(res) {
 | 
			
		||||
        var data = "";
 | 
			
		||||
        res.setEncoding("utf8");
 | 
			
		||||
        res.on("data", function(b) {
 | 
			
		||||
          data += b;
 | 
			
		||||
        });
 | 
			
		||||
        res.on("end", function() {
 | 
			
		||||
          data = JSON.parse(data);
 | 
			
		||||
          assert.equal("127.0.0.1", data.host);
 | 
			
		||||
          done();
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
});
 | 
			
		||||
		Reference in New Issue
	
	Block a user