node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »


assert-responseLike Build Status


This is an ultra simple all-test-framework friendly utility, meant to be used with the test framework of your choice, decorates the built-in assert object with a new method responseLike(res,exp,msg)


usage :

    var assert = require("assert");
      , request = require('your favorite http request lib')
      , test  = require('your favorite test function of your favorite framework')
    test( "foo", function() {
      request(url, function(response){
          assert.responseLike( response
           , { status : 200 //throws 'Invalid response code - expected ... got ...'
             , statusCode : 200 //same like status, for the explicitness lovers..
             , headers :                      
               { "Content-Type" : "text/plain" //throws 'response-header - expected ... got ...' 
             , body : "run vows for full spec" //throws 'Invalid response body - expected ... got ...'


using NPM

npm install assert-responselike

esample of output:

D:\work\mymodule>npm install assert-responselike
npm http GET
npm http 304
assert-responselike@0.2.0 ./node_modules/assert-responselike

Do it yourself

download the zip from github, and extract it to your ./node_modules/ directory.

example of structure Either way - expect the following:

        │   .npmignore
        │   index.js
        │   package.json


after extracting first you have to :

npm install

esample of output:

D:\work\assert-responseLike>npm install
npm http GET
npm http 304
npm http GET
npm http 304
npm WARN eyes@0.1.7 dependencies field should be hash of <name>:<version-range> pairs
vows@0.6.3 ./node_modules/vows
└── eyes@0.1.7

and then vows --spec

  • if you're a windows user - you'll want to add to your PATH variable '.\node_modules.bin'
  • alternatively - just run node ./node_modules/vows/bin/vows --spec


  ? assert response
    √ assert should be decorated with the method:
        assert.responseLike ( oActualResponse, oExpectedDescr, sCustomMessage )
  check status code with attribute 'status'
    √ providing correct numner should work
    √ providing wrong number should throw
  check status code with attribute 'statusCode'
    √ providing correct number should work
    √ providing wrong number should throw
  check response headers
    √ providing existing headers should work - case insensitive
    √ providing wrong headers throw on the first mismatch
    √ providing missing headers throw on the first misfound
  check response body
    √ regexp body descriptor that matches should not throw
    √ regexp body descriptor that does not match should throw
    √ when descriptor is not a RegExp, and body is object - deep equal match should not throw
    √ when descriptor is not a RegExp, and body is object - deep equal difference should throw
  check response headers - provide expected content
    √ equal string - should pass
    √ different string - should throw
    √ matching regexp - should pass
    √ non-matching regexp - should throw
  thrown errors - when providing a message
    √ should trail status-code error messages
    √ should trail response-header error messages
    √ should trail response-body error messages
  thrown errors - a status-code check error message
    √ should start with 'Invalid response status code'
    √ should contain the expected response code
    √ should contain the actual response code
  thrown errors - a missing response-header check error message
    √ should start with 'response header'
    √ should contain the expected response header name
    √ should contain the expected response header value
    √ should contain the actual response value
  thrown errors - a mismatching response-header check error message
    √ should start with 'response header'
    √ should contain the expected response header name
    √ should contain the expected response header value
    √ should contain the actual response value
√ OK » 30 honored (0.183s)


It's not the most genious utility or anything, it is meant to be my first git hub project. I use it to test responses of web-requests to web projects, with vows.

The basis of the implementation is taken from from expresso, that did not work well for me on windows, and the implementation there is coupled with the request firing itself - and I did not like that. so now I can use the same assert description language with any test-framework i like, and use whatever request tools I want.


I don't know what i need to do to make it officual under whatever lisence is up there... I took from 'the community' so I give back. Take it, as is, I give no warantee. Do with it whatever you want on your own responsibility.