Skip to content

Instantly share code, notes, and snippets.

@jhartikainen
Last active January 13, 2016 21:09
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jhartikainen/afbcfeead71a2984c167 to your computer and use it in GitHub Desktop.
Save jhartikainen/afbcfeead71a2984c167 to your computer and use it in GitHub Desktop.
node http api testing specs
var assert = require('assert');
var sinon = require('sinon');
var PassThrough = require('stream').PassThrough;
var http = require('http');
var api = require('../api.js');
describe('api', function() {
beforeEach(function() {
this.request = sinon.stub(http, 'request');
});
afterEach(function() {
http.request.restore();
});
it('should convert get result to object', function(done) {
var expected = { hello: 'world' };
var response = new PassThrough();
response.write(JSON.stringify(expected));
response.end();
this.request.callsArgWith(1, response)
.returns(new PassThrough());
api.get(function(err, result) {
assert.deepEqual(result, expected);
done();
});
});
it('should send post params in request body', function() {
var params = { foo: 'bar' };
var expected = JSON.stringify(params);
var request = new PassThrough();
var write = sinon.spy(request, 'write');
this.request.returns(request);
api.post(params, function() { });
assert(write.withArgs(expected).calledOnce);
});
it('should pass request error to callback', function(done) {
var expected = 'some error';
var request = new PassThrough();
this.request.returns(request);
api.get(function(err, result) {
assert.equal(err, expected);
done();
});
request.emit('error', expected);
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment