Skip to content

Commit

Permalink
Pipe tests, all passing!
Browse files Browse the repository at this point in the history
  • Loading branch information
mikeal committed Feb 11, 2011
1 parent f535fe1 commit d1deb5b
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 38 deletions.
36 changes: 35 additions & 1 deletion tests/server.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
var http = require('http');
var http = require('http')
, events = require('events')
, stream = require('stream')
, assert = require('assert')
;

exports.createServer = function (port) {
port = port || 6767
Expand All @@ -9,3 +13,33 @@ exports.createServer = function (port) {
s.url = 'http://localhost:'+port
return s;
}

exports.createPostStream = function (text) {
var postStream = new stream.Stream();
postStream.writeable = true;
postStream.readable = true;
setTimeout(function () {postStream.emit('data', new Buffer(text)); postStream.emit('end')}, 0);
return postStream;
}
exports.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;
}
exports.createGetResponse = function (text) {
var l = function (req, resp) {
resp.writeHead(200, {'content-type':'text/plain'})
resp.write(text)
resp.end()
}
return l;
}
44 changes: 7 additions & 37 deletions tests/test-body.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,63 +7,33 @@ var server = require('./server')

var s = server.createServer();

var createPostStream = function (text) {
var postStream = new stream.Stream();
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!")
{ resp : server.createGetResponse("TESTING!")
, expectBody: "TESTING!"
}
, testPutString :
{ resp : createPostValidator("PUTTINGDATA")
{ resp : server.createPostValidator("PUTTINGDATA")
, method : "PUT"
, body : "PUTTINGDATA"
}
, testPutBuffer :
{ resp : createPostValidator("PUTTINGDATA")
{ resp : server.createPostValidator("PUTTINGDATA")
, method : "PUT"
, body : new Buffer("PUTTINGDATA")
}
, testPutStream :
{ resp : createPostValidator("PUTTINGDATA")
{ resp : server.createPostValidator("PUTTINGDATA")
, method : "PUT"
, requestBodyStream : createPostStream("PUTTINGDATA")
, requestBodyStream : server.createPostStream("PUTTINGDATA")
}
, testPutJSON :
{ resp : createPostValidator(JSON.stringify({foo: 'bar'}))
{ resp : server.createPostValidator(JSON.stringify({foo: 'bar'}))
, method: "PUT"
, json: {foo: 'bar'}
}
, testPutMultipart :
{ resp: createPostValidator(
{ resp: server.createPostValidator(
'--frontier\r\n' +
'content-type: text/html\r\n' +
'\r\n' +
Expand Down
53 changes: 53 additions & 0 deletions tests/test-pipes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
var server = require('./server')
, events = require('events')
, stream = require('stream')
, assert = require('assert')
, request = require('../main.js')
;

var s = server.createServer(3453);

passes = 0;

function check () {
if (passes === 2) {
console.log('All tests passed.')
process.exit();
}
}

// Test pipeing to a request object
s.once('/push', server.createPostValidator("mydata"));

var mydata = new stream.Stream();
mydata.readable = true

var r1 = request.put({url:'http://localhost:3453/push'}, function () {
passes += 1;
check();
})
mydata.pipe(r1)

mydata.emit('data', 'mydata');
mydata.emit('end');


// Test pipeing from a request object.
s.once('/pull', server.createGetResponse("mypulldata"));

var mypulldata = new stream.Stream();
mypulldata.writable = true

request({url:'http://localhost:3453/pull'}).pipe(mypulldata)

var d = '';

mypulldata.write = function (chunk) {
d += chunk;
}
mypulldata.end = function () {
assert.ok(d === 'mypulldata');
passes += 1
check();
};

0 comments on commit d1deb5b

Please sign in to comment.