/* * simple-test.js: Simple tests for basic streaming and non-streaming HTTP requests with union. * * (C) 2011, Charlie Robbins & the Contributors * MIT LICENSE * */ var assert = require('assert'), fs = require('fs'), path = require('path'), request = require('request'), vows = require('vows'), union = require('../lib/index'), macros = require('./helpers/macros'); var doubleWrite = false, server; server = union.createServer({ before: [ function (req, res) { res.json(200, { 'hello': 'world' }); res.emit('next'); }, function (req, res) { doubleWrite = true; res.json(200, { 'hello': 'world' }); res.emit('next'); } ] }); vows.describe('union/double-write').addBatch({ "When using union": { "an http server which attempts to write to the response twice": { topic: function () { server.listen(9091, this.callback); }, "a GET request to `/foo`": { topic: function () { request({ uri: 'http://localhost:9091/foo' }, this.callback); }, "it should respond with `{ 'hello': 'world' }`": function (err, res, body) { macros.assertValidResponse(err, res); assert.deepEqual(JSON.parse(body), { 'hello': 'world' }); }, "it should not write to the response twice": function () { assert.isFalse(doubleWrite); } } } } }).addBatch({ "When the tests are over": { "the server should close": function () { server.close(); } } }).export(module);