6 var assert = require('assert')
7 , http = require('http');
9 var server = http.createServer(function(req, res){
10 if (req.method === 'GET') {
11 if (req.url === '/delay') {
12 setTimeout(function(){
13 res.writeHead(200, {});
17 var body = JSON.stringify({ name: 'tj' });
19 'Content-Type': 'application/json; charset=utf8',
20 'Content-Length': body.length
26 req.setEncoding('utf8');
27 req.on('data', function(chunk){ body += chunk });
28 req.on('end', function(){
29 res.writeHead(200, {});
30 res.end(req.url + ' ' + body);
35 var delayedServer = http.createServer(function(req, res){
40 var oldListen = delayedServer.listen;
41 delayedServer.listen = function(){
43 setTimeout(function(){
44 oldListen.apply(delayedServer, args);
49 'test assert.response(req, res, fn)': function(beforeExit){
52 assert.response(server, {
56 body: '{"name":"tj"}',
59 'Content-Type': 'application/json; charset=utf8'
66 beforeExit(function(){
67 assert.equal(1, calls);
71 'test assert.response(req, fn)': function(beforeExit){
74 assert.response(server, {
78 assert.ok(res.body.indexOf('tj') >= 0, 'Test assert.response() callback');
81 beforeExit(function(){
82 assert.equal(1, calls);
86 'test assert.response() delay': function(beforeExit){
89 assert.response(server,
90 { url: '/delay', timeout: 1500 },
96 beforeExit(function(){
97 assert.equal(1, calls);
101 'test assert.response() regexp': function(beforeExit){
104 assert.response(server,
105 { url: '/foo', method: 'POST', data: 'foobar' },
106 { body: /^\/foo foo(bar)?/ },
111 beforeExit(function(){
112 assert.equal(1, calls);
116 'test assert.response() regexp headers': function(beforeExit){
119 assert.response(server,
121 { body: '{"name":"tj"}', headers: { 'Content-Type': /^application\/json/ } },
126 beforeExit(function(){
127 assert.equal(1, calls);
131 // [!] if this test doesn't pass, an uncaught ECONNREFUSED will display
132 'test assert.response() with deferred listen()': function(beforeExit){
135 assert.response(delayedServer,
137 { body: 'it worked' },
142 beforeExit(function(){
143 assert.equal(1, calls);