Skip to content

Commit

Permalink
Better tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
mikeal committed Jan 29, 2011
1 parent 0d771ab commit 4c9c984
Show file tree
Hide file tree
Showing 2 changed files with 90 additions and 0 deletions.
11 changes: 11 additions & 0 deletions tests/server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
var http = require('http');

exports.createServer = function (port) {
port = port || 6767
var s = http.createServer(function (req, resp) {
s.emit(req.url, req, resp);
})
s.listen(port)
s.url = 'http://localhost:'+port
return s;
}
79 changes: 79 additions & 0 deletions tests/tests.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
var server = require('./server')
, events = require('events')
, assert = require('assert')
, request = require('../main.js')
;

var s = server.createServer();

var createPostStream = function (text) {
var postStream = new events.EventEmitter();
postStream.writeable = true;
postStream.readable = true;
setTimeout(function () {postStream.emit('data', new Buffer(text)); postStream.emit('end')}, 0);
return postStream;
}
var createPostValidator = function (text) {
var l = function (req, resp) {
var r = '';
req.on('data', function (chunk) {r += chunk})
req.on('end', function () {
if (r !== text) console.log(r, text);
assert.ok(r === text)
resp.writeHead(200, {'content-type':'text/plain'})
resp.write('OK')
resp.end()
})
}
return l;
}
var createGetResponse = function (text) {
var l = function (req, resp) {
resp.writeHead(200, {'content-type':'text/plain'})
resp.write(text)
resp.end()
}
return l;
}

var tests =
{ testGet :
{ resp : createGetResponse("TESTING!")
, expectBody: "TESTING!"
}
, testPutString :
{ resp : createPostValidator("PUTTINGDATA")
, method : "PUT"
, body : "PUTTINGDATA"
}
, testPutBuffer :
{ resp : createPostValidator("PUTTINGDATA")
, method : "PUT"
, body : new Buffer("PUTTINGDATA")
}
, testPutStream :
{ resp : createPostValidator("PUTTINGDATA")
, method : "PUT"
, requestBodyStream : createPostStream("PUTTINGDATA")
}
}

var counter = 0;

for (i in tests) {
(function () {
var test = tests[i];
s.on('/'+i, test.resp);
test.uri = s.url + '/' + i;
request(test, function (err, resp, body) {
if (test.expectBody) {
assert.ok(test.expectBody === body)
}
counter = counter - 1;
if (counter === 0) {
s.close();
}
})
counter++;
})()
}

0 comments on commit 4c9c984

Please sign in to comment.