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(err, res) {
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/')
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(err, res) {
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(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);
});
Direct link to the package
Released under the MIT license. Copyright (c) 2013-2014 Andrey Chizh.