Commit bcec8281 authored by tyabonil's avatar tyabonil
Browse files

Merge pull request #3 from FellowMD/fix

flush out tests, allow simple behavior by default, and fix logic for checking default status codes
parents 21325256 7d8a4fed
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ function rp(options) {
        'PUT' : [200, 201],
        'POST' : [200, 201],
        'DELETE' : [200, 201]
    }, c = {}, i;
    }, c = {simple: true}, i;
    if (typeof options === 'string') {
        c.uri = options;
        c.method = 'GET';
@@ -25,7 +25,7 @@ function rp(options) {
        request(c, function (error, response, body) {
            if (error) {
                reject(error);
            } else if (c.simple && (statusCodes[c.method].indexOf(response.statusCode) > -1)) {
            } else if (c.simple && (statusCodes[c.method].indexOf(response.statusCode) === -1)) {
                reject(response.statusCode);
            } else {
                if (c.transform && typeof c.transform === 'function') {
+63 −8
Original line number Diff line number Diff line
var rp = require('../lib/rp.js');
var http = require('http');
var url = require('url');
var assert = require('assert');


describe('request tests', function () {
    var server;

    before(function(){
        // This creates a local server to test for various status codes. A request to /404 returns a 404, etc
        server = http.createServer(function(request, response){
            var path = url.parse(request.url).pathname;
            var status = parseInt(path.split('/')[1]);
            if(isNaN(status)) status = 555;
            response.writeHead(status);
            response.end();
        });
        server.listen(4000);
    });

    after(function(){
        server.close();
    })

    it('should resolve for 200 status code', function (done) {
        rp('http://localhost:4000/200')
            .then(function(){
                done();
            }).catch(function(){
                done(new Error('A 200 response should resolve, not reject'));
            });
    });

    it('should reject for http errors', function(done){
        rp('http://localhost:1/200')
            .then(function(){
                done(new Error('A failed request should reject, not resolve'))
            }).catch(function(){
                done();
            });
    })

    describe('simple tests', function(){

        it('should reject for 500 status code', function (done) {
            rp('http://localhost:4000/500')
                .then(function(){
                    done(new Error('A 500 response code should reject, not resolve'));
                }).catch(function(){
                    done();
                });
        });

    it('should request google.com', function (done) {
        rp('http://www.google.com')
		    .then(done.bind(null, null))
		    .catch(done);
    });

    it('should catch errors', function (done) {
        rp('http://googl')
		    .then(done.bind(null, 'then callback was called'))
		    .catch(done.bind(null, null));
    describe('non-simple tests', function(){
        it('should resolve for 500 status code', function(done){
            var options = {
                url: 'http://localhost:4000/500',
                simple: false
            };
            rp(options)
                .then(function(){
                    done();
                }).catch(function(){
                    done(new Error('A 500 response code should resolve, not reject'));
                });
        })
    })

});
 No newline at end of file