123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- var assert = require('assert')
- , http = require('http')
- , request = require('../index')
- ;
- var numBasicRequests = 0;
- var basicServer = http.createServer(function (req, res) {
- console.error('Bearer auth server: ', req.method, req.url);
- numBasicRequests++;
- var ok;
- if (req.headers.authorization) {
- if (req.headers.authorization == 'Bearer theToken') {
- ok = true;
- } else {
- // Bad auth header, don't send back WWW-Authenticate header
- ok = false;
- }
- } else {
- // No auth header, send back WWW-Authenticate header
- ok = false;
- res.setHeader('www-authenticate', 'Bearer realm="Private"');
- }
- if (req.url == '/post/') {
- var expectedContent = 'data_key=data_value';
- req.on('data', function(data) {
- assert.equal(data, expectedContent);
- console.log('received request data: ' + data);
- });
- assert.equal(req.method, 'POST');
- assert.equal(req.headers['content-length'], '' + expectedContent.length);
- assert.equal(req.headers['content-type'], 'application/x-www-form-urlencoded; charset=utf-8');
- }
- if (ok) {
- console.log('request ok');
- res.end('ok');
- } else {
- console.log('status=401');
- res.statusCode = 401;
- res.end('401');
- }
- });
- basicServer.listen(6767);
- var tests = [
- function(next) {
- request({
- 'method': 'GET',
- 'uri': 'http://localhost:6767/test/',
- 'auth': {
- 'bearer': 'theToken',
- 'sendImmediately': false
- }
- }, function(error, res, body) {
- assert.equal(res.statusCode, 200);
- assert.equal(numBasicRequests, 2);
- next();
- });
- },
- function(next) {
- // If we don't set sendImmediately = false, request will send bearer auth
- request({
- 'method': 'GET',
- 'uri': 'http://localhost:6767/test2/',
- 'auth': {
- 'bearer': 'theToken'
- }
- }, function(error, res, body) {
- assert.equal(res.statusCode, 200);
- assert.equal(numBasicRequests, 3);
- next();
- });
- },
- function(next) {
- request({
- 'method': 'POST',
- 'form': { 'data_key': 'data_value' },
- 'uri': 'http://localhost:6767/post/',
- 'auth': {
- 'bearer': 'theToken',
- 'sendImmediately': false
- }
- }, function(error, res, body) {
- assert.equal(res.statusCode, 200);
- assert.equal(numBasicRequests, 5);
- next();
- });
- },
- function (next) {
- request
- .get('http://localhost:6767/test/')
- .auth(null,null,false,"theToken")
- .on('response', function (res) {
- assert.equal(res.statusCode, 200);
- assert.equal(numBasicRequests, 7);
- next();
- })
- },
- function (next) {
- request
- .get('http://localhost:6767/test/')
- .auth(null,null,true,"theToken")
- .on('response', function (res) {
- assert.equal(res.statusCode, 200);
- assert.equal(numBasicRequests, 8);
- next();
- })
- },
- function(next) {
- request({
- 'method': 'GET',
- 'uri': 'http://localhost:6767/test/',
- 'auth': {
- 'bearer': function() { return 'theToken' },
- 'sendImmediately': false
- }
- }, function(error, res, body) {
- assert.equal(res.statusCode, 200);
- assert.equal(numBasicRequests, 10);
- next();
- });
- },
- function(next) {
- // If we don't set sendImmediately = false, request will send bearer auth
- request({
- 'method': 'GET',
- 'uri': 'http://localhost:6767/test2/',
- 'auth': {
- 'bearer': function() { return 'theToken' }
- }
- }, function(error, res, body) {
- assert.equal(res.statusCode, 200);
- assert.equal(numBasicRequests, 11);
- next();
- });
- },
- ];
- function runTest(i) {
- if (i < tests.length) {
- tests[i](function() {
- runTest(i + 1);
- });
- } else {
- console.log('All tests passed');
- basicServer.close();
- }
- }
- runTest(0);
|