Giter Site home page Giter Site logo

node-httptest's Introduction

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.

node-httptest's People

Stargazers

Jakub Złoczewski avatar yarik ponomarenko avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.