source: Dev/trunk/src/node_modules/request/tests/test-digest-auth.js @ 484

Last change on this file since 484 was 484, checked in by hendrikvanantwerpen, 11 years ago

Commit node_modules, to make checkouts and builds more deterministic.

File size: 1.8 KB
Line 
1var assert = require('assert')
2  , http = require('http')
3  , request = require('../index')
4  ;
5
6// Test digest auth
7// Using header values captured from interaction with Apache
8
9var numDigestRequests = 0;
10
11var digestServer = http.createServer(function (req, res) {
12  console.error('Digest auth server: ', req.method, req.url);
13  numDigestRequests++;
14
15  var ok;
16
17  if (req.headers.authorization) {
18    if (req.headers.authorization == 'Digest username="test", realm="Private", nonce="WpcHS2/TBAA=dffcc0dbd5f96d49a5477166649b7c0ae3866a93", uri="/test/", qop="auth", response="54753ce37c10cb20b09b769f0bed730e", nc="1", cnonce=""') {
19      ok = true;
20    } else {
21      // Bad auth header, don't send back WWW-Authenticate header
22      ok = false;
23    }
24  } else {
25    // No auth header, send back WWW-Authenticate header
26    ok = false;
27    res.setHeader('www-authenticate', 'Digest realm="Private", nonce="WpcHS2/TBAA=dffcc0dbd5f96d49a5477166649b7c0ae3866a93", algorithm=MD5, qop="auth"');
28  }
29
30  if (ok) {
31    console.log('request ok');
32    res.end('ok');
33  } else {
34    console.log('status=401');
35    res.statusCode = 401;
36    res.end('401');
37  }
38});
39
40digestServer.listen(6767);
41
42request({
43  'method': 'GET',
44  'uri': 'http://localhost:6767/test/',
45  'auth': {
46    'user': 'test',
47    'pass': 'testing',
48    'sendImmediately': false
49  }
50}, function(error, response, body) {
51  assert.equal(response.statusCode, 200);
52  assert.equal(numDigestRequests, 2);
53
54  // If we don't set sendImmediately = false, request will send basic auth
55  request({
56    'method': 'GET',
57    'uri': 'http://localhost:6767/test/',
58    'auth': {
59      'user': 'test',
60      'pass': 'testing'
61    }
62  }, function(error, response, body) {
63    assert.equal(response.statusCode, 401);
64    assert.equal(numDigestRequests, 3);
65
66    console.log('All tests passed');
67    digestServer.close();
68  });
69});
Note: See TracBrowser for help on using the repository browser.