summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/node-gyp/node_modules/request/tests/test-follow-all.js
blob: b78745bb8d6c691c1b0626ce63cedeaefacf6df2 (plain)
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
var request = require('../main');
var http = require('http');
var requests = 0;
var assert = require('assert');

var server = http.createServer(function (req, res) {
  requests ++;

  // redirect everything 3 times, no matter what.
  var c = req.headers.cookie;

  if (!c) c = 0;
  else c = +c.split('=')[1] || 0;

  if (c > 3) {
    res.end('ok: '+requests);
    return;
  }

  res.setHeader('set-cookie', 'c=' + (c + 1));
  res.setHeader('location', req.url);
  res.statusCode = 302;
  res.end('try again, i guess\n');
});
server.listen(6767);

request.post({ url: 'http://localhost:6767/foo',
               followAllRedirects: true,
               form: { foo: 'bar' } }, function (er, req, body) {
  if (er) throw er;
  assert.equal(body, 'ok: 5');
  assert.equal(requests, 5);
  console.error('ok - ' + process.version);
  server.close();
});