httptest

0.1.8 • Public • Published

HTTP Test NPM version Build Status Dependency Status

Simply library for powerful and easy testing REST API

Install:

$ npm install httptest --save-dev

Example:

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(err, res) {
        if (err) throw err;
        console.log(res);
    });

API:

Chaining

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

httptest(uri)

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')

.get(uri)

Set GET method of request.

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

.head(uri)

Set HEAD method of request.

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

.put(uri)

Set PUT method of request.

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

.patch(uri)

Set PATCH method of request.

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

.del(uri)

Set DELETE method of request.

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

.setParam(param[, value])

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

.setBody(body)

Set POST, PUT, PATCH request body

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

.setHeader(header[, value])

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')

.expectStatus(status)

Check status code of response.

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

.expectJSON()

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()

.end(callback)

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

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

Workflow

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(err, res) {
        if (err) throw err;
        console.log(res);
    });
    
// Test 2
http.get('/api/cars/123')
    .setParam('fields', 'vendor')
    .end(function(err, res) {
        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(err, res) {
        if (err) throw err;
        console.log(res);
    });

Package manager page

NPM

Direct link to the package

License

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

Package Sidebar

Install

npm i httptest

Weekly Downloads

2

Version

0.1.8

License

MIT

Last publish

Collaborators

  • andreychizh