Commit 61f07772 authored by analog-nico's avatar analog-nico
Browse files

Allow users to also require Request independently

parent 4063080b
Loading
Loading
Loading
Loading
+22 −3
Original line number Diff line number Diff line
'use strict';

var request = require('request'),
    Bluebird = require('bluebird'),
var Bluebird = require('bluebird'),
    _ = require('lodash');


@@ -9,7 +8,27 @@ Bluebird.onPossiblyUnhandledRejection(function (err) {
    // FIXME: Only ignore them if the user did not invoke 'then' yet.
});

// FIXME: A require('request') by the user will also return Request-Promise. A seperate Request instance is required.

// Load Request freshly - so that users can require an unaltered request instance!
var request = (function () {

    function clearCache() {
        _(require.cache).keys().forEach(function (key) {
            delete require.cache[key];
        });
    }

    var temp = _.assign({}, require.cache);
    clearCache();

    var freshRequest = require('request');

    clearCache();
    _.assign(require.cache, temp);

    return freshRequest;

})();


function ownCallback(err, httpResponse, body) {
+9 −0
Original line number Diff line number Diff line
'use strict';

var rp = require('../../../lib/rp.js');
var request = require('request');

var rpHasThen = rp('http://localhost:4000/200').then !== undefined;
var requestHasNoThen = request('http://localhost:4000/200').then === undefined;

console.log('rp: ' + rpHasThen + ', request: ' + requestHasNoThen);
+9 −0
Original line number Diff line number Diff line
'use strict';

var request = require('request');
var rp = require('../../../lib/rp.js');

var requestHasNoThen = request('http://localhost:4000/200').then === undefined;
var rpHasThen = rp('http://localhost:4000/200').then !== undefined;

console.log('request: ' + requestHasNoThen + ', rp: ' + rpHasThen);
+11 −0
Original line number Diff line number Diff line
'use strict';

var request1 = require('request');
var rp = require('../../../lib/rp.js');
var request2 = require('request');

var request1HasNoThen = request1('http://localhost:4000/200').then === undefined;
var rpHasThen = rp('http://localhost:4000/200').then !== undefined;
var request2IsIdenticalToRequest1 = request2 === request1;

console.log('request1: ' + request1HasNoThen + ', rp: ' + rpHasThen + ', request2: ' + request2IsIdenticalToRequest1);
+33 −0
Original line number Diff line number Diff line
@@ -4,6 +4,8 @@ var rp = require('../../lib/rp.js');
var http = require('http');
var url = require('url');
var Bluebird = require('bluebird');
var childProcess = require('child_process');
var path = require('path');


describe('Request-Promise', function () {
@@ -608,4 +610,35 @@ describe('Request-Promise', function () {

    });

    describe('should still allow to require Request independently', function (done) {

        it('by not interfering with Request required afterwards', function (done) {

            childProcess.exec('node ' + path.join(__dirname, '../fixtures/require/afterwards.js'), function (err, stdout, stderr) {
                expect(stdout).to.contain('rp: true, request: true');
                done();
            });

        });

        it('by not interfering with Request required beforehand', function (done) {

            childProcess.exec('node ' + path.join(__dirname, '../fixtures/require/beforehand.js'), function (err, stdout, stderr) {
                expect(stdout).to.contain('request: true, rp: true');
                done();
            });

        });

        it('by not interfering with Request required beforehand and afterwards being identical', function (done) {

            childProcess.exec('node ' + path.join(__dirname, '../fixtures/require/beforehandAndAfterwards.js'), function (err, stdout, stderr) {
                expect(stdout).to.contain('request1: true, rp: true, request2: true');
                done();
            });

        });

    });

});