Spaces:
Sleeping
Sleeping
/* | |
* 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); | |