~cordova-ubuntu/cordova-cli/trunk

« back to all changes in this revision

Viewing changes to node_modules/cordova/_vendor/request/2.22.0/tests/test-tunnel.js

  • Committer: Robert Bruce Park
  • Date: 2014-02-26 21:27:56 UTC
  • mfrom: (44.1.5 3.4-release)
  • Revision ID: robert.park@canonical.com-20140226212756-6jmoiqugw0f1ebxb
Update to 3.4.0 stable release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// test that we can tunnel a https request over an http proxy
 
2
// keeping all the CA and whatnot intact.
 
3
//
 
4
// Note: this requires that squid is installed.
 
5
// If the proxy fails to start, we'll just log a warning and assume success.
 
6
 
 
7
var server = require('./server')
 
8
  , assert = require('assert')
 
9
  , request = require('../index')
 
10
  , fs = require('fs')
 
11
  , path = require('path')
 
12
  , caFile = path.resolve(__dirname, 'ssl/npm-ca.crt')
 
13
  , ca = fs.readFileSync(caFile)
 
14
  , child_process = require('child_process')
 
15
  , sqConf = path.resolve(__dirname, 'squid.conf')
 
16
  , sqArgs = ['-f', sqConf, '-N', '-d', '5']
 
17
  , proxy = 'http://localhost:3128'
 
18
  , hadError = null
 
19
 
 
20
var squid = child_process.spawn('squid', sqArgs);
 
21
var ready = false
 
22
 
 
23
squid.stderr.on('data', function (c) {
 
24
  console.error('SQUIDERR ' + c.toString().trim().split('\n')
 
25
               .join('\nSQUIDERR '))
 
26
  ready = c.toString().match(/ready to serve requests|Accepting HTTP Socket connections/i)
 
27
})
 
28
 
 
29
squid.stdout.on('data', function (c) {
 
30
  console.error('SQUIDOUT ' + c.toString().trim().split('\n')
 
31
               .join('\nSQUIDOUT '))
 
32
})
 
33
 
 
34
squid.on('error', function (c) {
 
35
  console.error('squid: error '+c)
 
36
  if (c && !ready) {
 
37
    notInstalled()
 
38
    return
 
39
  }
 
40
})
 
41
 
 
42
squid.on('exit', function (c) {
 
43
  console.error('squid: exit '+c)
 
44
  if (c && !ready) {
 
45
    notInstalled()
 
46
    return
 
47
  }
 
48
 
 
49
  if (c) {
 
50
    hadError = hadError || new Error('Squid exited with '+c)
 
51
  }
 
52
  if (hadError) throw hadError
 
53
})
 
54
 
 
55
setTimeout(function F () {
 
56
  if (!ready) return setTimeout(F, 100)
 
57
  request({ uri: 'https://registry.npmjs.org/'
 
58
          , proxy: 'http://localhost:3128'
 
59
          , strictSSL: true
 
60
          , ca: ca
 
61
          , json: true }, function (er, body) {
 
62
    hadError = er
 
63
    console.log(er || typeof body)
 
64
    if (!er) console.log("ok")
 
65
    squid.kill('SIGKILL')
 
66
  })
 
67
}, 100)
 
68
 
 
69
function notInstalled() {
 
70
  console.error('squid must be installed to run this test.')
 
71
  console.error('skipping this test. please install squid and run again if you need to test tunneling.')
 
72
  c = null
 
73
  hadError = null
 
74
  process.exit(0)
 
75
}