0.2.0 • Published 10 years ago

nockingbird v0.2.0

Weekly downloads
49
License
-
Repository
github
Last release
10 years ago

Nockingbird

Nockingbird is an interface for Nock. With Nockingbird, mocks are specified in straightforward text files, rather than in JavaScript code.

Example from the Nock documentation:

var scope = nock('http://myapp.iriscouch.com')
                .get('/users/1')
                .reply(404)
                .post('/users', {
                  username: 'pgte',
                  email: 'pedro.teixeira@gmail.com'
                })
                .reply(201, {
                  ok: true,
                  id: '123ABC',
                  rev: '946B7D1C'
                })
                .get('/users/123ABC')
                .reply(200, {
                  _id: '123ABC',
                  _rev: '946B7D1C',
                  username: 'pgte',
                  email: 'pedro.teixeira@gmail.com'
                });

The equivalent Nockingbird file is as follows:

-- chaining-example.nb

>> GET /users/1
<< 404

>> POST /users
>>   username=pgte
>>   email=pedro.teixeira%40gmail.com
<< 201
<< content-type: application/json
<< ={"ok":true,"id":"123ABC","rev":"946B7D1C"}

>> GET /users/123ABC
<< 200
<< content-type: application/json
<< ={"_id":"123ABC","_rev":"946B7D1C","username":"pgte","email":"pedro.teixeira@gmail.com"}

nockingbird.load can be used to apply the declarations in a Nockingbird file to a Nock scope object:

var nock = require('nock');
var nockingbird = require('nockingbird');

var scope = nock('http://myapp.iriscouch.com');
nockingbird.load(scope, __dirname + '/mocks/chaining-example.nb');

File format

Nockingbird files consist of zero or more "chunks". A file's text is broken into chunks according to the delimiter \n\n. Each line within a chunk must begin with >>, <<, or --. >> is for requests; << is for responses. Lines beginning with -- are ignored. For example:

-- Retrieve John's account details from the /users endpoint.
>> GET /users/1
<< 200
<< content-type: application/json
<< ={"id":"1","username":"jsmith","email":"jsmith@example.com"}

The extension for the Nockingbird file format is .nb.

Chunks

Each chunk must conform to the following grammar:

chunk               = request lines , response lines ;

Request lines

Each chunk must contain one or more request lines (lines beginning with >>), in accordance with the following grammar:

request lines       = main request line , { request body } ;
main request line   = request prefix , method name , pathname , "\n" ;
method name         = "GET" | "POST" | "PUT" | "HEAD" | "PATCH" | "MERGE" | "DELETE" ;
pathname            = { any character } ;
request body        = inline body ;
inline body         = inline body line , { inline body line } ;
inline body line    = request prefix , "=" , { any character } , "\n" ;
request prefix      = ">>" , { " " } ;
any character       = ? any character except "\n" ? ;

Response lines

Each chunk must contain two or more response lines (lines beginning with <<), in accordance with the following grammar:

response lines      = status code line , { header line } , response body ;
status code line    = response prefix , status code , "\n" ;
status code         = digit , { digit } ;
digit               = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
header line         = response prefix , header name , ":" , { " " } , header value , "\n" ;
header name         = { any character } ;
header value        = { any character } ;
response body       = inline body | filename line ;
inline body         = inline body line , { inline body line } ;
inline body line    = response prefix , "=" , { any character } , "\n" ;
filename line       = response prefix , { any character } , "\n" ;
response prefix     = "<<" , { " " } ;
any character       = ? any character except "\n" ? ;
0.2.0

10 years ago

0.1.4

10 years ago

0.1.3

10 years ago

0.1.2

10 years ago