httptest

Simply library for testing HTTP servers

HTTP Test

Simply library for powerful and easy testing REST API

$ npm install httptest --save-dev
var httptest = require('httptest');
 
httptest('https://api.github.com/repos/andreychizh/')
    .get('/node-httptest')
    .setParam('version', 123)
    .setHeader('User-Agent', 'Firefox');
    .expectStatus(200)
    .expectJSON()
    .end(function(errres) {
        if (err) throw err;
        console.log(res);
    });

Every method will return a httptest object, so methods can be chained.

Create request or group of request object and specify the base uri.

httptest('http://localhost:3000/')

.post(uri)

Set POST method of request.

httptest('http://localhost:3000/')
    .post('/api/1.0/cars')

Set GET method of request.

httptest('http://localhost:3000/')
    .get('/api/1.0/cars')

Set HEAD method of request.

httptest('http://localhost:3000/')
    .head('/api/1.0/cars/123')

Set PUT method of request.

httptest('http://localhost:3000/')
    .put('/api/1.0/cars/123')

Set PATCH method of request.

httptest('http://localhost:3000/')
    .patch('/api/1.0/cars/123')

Set DELETE method of request.

httptest('http://localhost:3000/')
    .del('/api/1.0/cars/123')

Set GET params of request.

// As object 
httptest('http://localhost:3000/');
    .get('/api/1.0/cars')
    .setParam({sort: 'asc'})
 
// As key-value 
httptest('http://localhost:3000/')
    .get('/api/1.0/cars')
    .setParam('sort', 'asc')
    
// Result 
http://localhost:3000/api/1.0/cars?sort=asc 

Set POST, PUT, PATCH request body

// As object 
httptest('http://localhost:3000/')
    .post('/api/1.0/cars')
    .setBody({vendor: 'BMW', model: 'M5'})

Set headers of request.

// As object 
httptest('http://localhost:3000/')
    .setHeader({'User-Agent': 'Firefox'})
 
// As key-value 
httptest('http://localhost:3000/')
    .setHeader('User-Agent', 'Firefox')

Check status code of response.

httptest('http://localhost:3000/')
    .get('/api/1.0/cars')
    .expectStatus(200)

Checks the type of the response data. Method also parse JSON and return JavaScript object as res on .end(callback).

httptest('http://localhost:3000/')
    .get('/api/1.0/cars')
    .expectJSON()

Perform request with given options. Invoke callback(err, res).

httptest('http://localhost:3000/')
    .get('/api/1.0/cars')
    .end(function(errres) {
        if (err) throw err;
        console.log(res);
    );

Possible to create a common options for a group of requests. Also support override of params, headers, body, expect.

var httptest = require('httptest');
 
// Common options 
var http = httptest('http://localhost:3000/')
    .setHeader('User-Agent', 'Firefox')
    .setParam('token', 'secret_key')
    .setParam('userId', '111')
    .expectStatus(200)
    .expectJSON();
    
// Test 1 
http.get('/api/cars')
    .setParam('limit', 10)
    .end(function(errres) {
        if (err) throw err;
        console.log(res);
    });
    
// Test 2 
http.get('/api/cars/123')
    .setParam('fields', 'vendor')
    .end(function(errres) {
        if (err) throw err;
        console.log(res);
    });
    
// Test 3 
http.get('/api/cars/456')
    .setParam('fields', 'model')
    .setParam('userId', '222')  // Override base options 
    .end(function(errres) {
        if (err) throw err;
        console.log(res);
    });

Direct link to the package

Released under the MIT license. Copyright (c) 2013-2014 Andrey Chizh.