File: test-localAddress.js

package info (click to toggle)
node-request 2.88.1-6
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 960 kB
  • sloc: javascript: 9,687; sh: 46; makefile: 2
file content (49 lines) | stat: -rw-r--r-- 1,288 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
'use strict'
var request = require('../index')
var tape = require('tape')

tape('bind to invalid address', function (t) {
  request.get({
    uri: 'http://www.google.com',
    localAddress: '1.2.3.4'
  }, function (err, res) {
    t.notEqual(err, null)
    t.equal(true, /bind EADDRNOTAVAIL/.test(err.message))
    t.equal(res, undefined)
    t.end()
  })
})

tape('bind to local address', function (t) {
  request.get({
    uri: 'http://www.google.com',
    localAddress: '127.0.0.1'
  }, function (err, res) {
    t.notEqual(err, null)
    t.equal(res, undefined)
    t.end()
  })
})

tape('bind to local address on redirect', function (t) {
  var os = require('os')
  var localInterfaces = os.networkInterfaces()
  var localIPS = []
  Object.keys(localInterfaces).forEach(function (ifname) {
    localInterfaces[ifname].forEach(function (iface) {
      if (iface.family !== 'IPv4' || iface.internal !== false) {
        // skip over internal (i.e. 127.0.0.1) and non-ipv4 addresses
        return
      }
      localIPS.push(iface.address)
    })
  })
  request.get({
    uri: 'http://google.com', // redirects to 'http://google.com'
    localAddress: localIPS[0]
  }, function (err, res) {
    t.equal(err, null)
    t.equal(res.request.localAddress, localIPS[0])
    t.end()
  })
})