| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- var server = require('./server')
- , events = require('events')
- , stream = require('stream')
- , assert = require('assert')
- , fs = require('fs')
- , request = require('../main.js')
- , path = require('path')
- ;
- var s = server.createServer(3453);
- passes = 0;
- var check = function () {
- if (passes === 7) {
- console.log('All tests passed.')
- setTimeout(function () {
- process.exit();
- }, 500)
- }
- if (passes > 7) throw new Error('Need to update for more failures')
- }
- // 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();
- };
- s.on('/cat', function (req, resp) {
- if (req.method === "GET") {
- resp.writeHead(200, {'content-type':'text/plain-test', 'content-length':4});
- resp.end('asdf')
- } else if (req.method === "PUT") {
- assert.ok(req.headers['content-type'] === 'text/plain-test');
- assert.ok(req.headers['content-length'] == 4)
- var validate = '';
-
- req.on('data', function (chunk) {validate += chunk})
- req.on('end', function () {
- resp.writeHead(201);
- resp.end();
- assert.ok(validate === 'asdf');
- passes += 1;
- check();
- })
- }
- })
- s.on('/pushjs', function (req, resp) {
- if (req.method === "PUT") {
- assert.ok(req.headers['content-type'] === 'text/javascript');
- passes += 1;
- check();
- }
- })
- s.on('/catresp', function (req, resp) {
- request.get('http://localhost:3453/cat').pipe(resp)
- })
- s.on('/doodle', function (req, resp) {
- if (req.headers['x-oneline-proxy']) {
- resp.setHeader('x-oneline-proxy', 'yup')
- }
- resp.writeHead('200', {'content-type':'image/png'})
- fs.createReadStream(path.join(__dirname, 'googledoodle.png')).pipe(resp)
- })
- s.on('/onelineproxy', function (req, resp) {
- var x = request('http://localhost:3453/doodle')
- req.pipe(x)
- x.pipe(resp)
- })
- fs.createReadStream(__filename).pipe(request.put('http://localhost:3453/pushjs'))
- request.get('http://localhost:3453/cat').pipe(request.put('http://localhost:3453/cat'))
- request.get('http://localhost:3453/catresp', function (e, resp, body) {
- assert.ok(resp.headers['content-type'] === 'text/plain-test');
- assert.ok(resp.headers['content-length'] == 4)
- passes += 1
- check();
- })
- var doodleWrite = fs.createWriteStream(path.join(__dirname, 'test.png'))
- request.get('http://localhost:3453/doodle').pipe(doodleWrite)
- doodleWrite.on('close', function () {
- assert.deepEqual(fs.readFileSync(path.join(__dirname, 'googledoodle.png')), fs.readFileSync(path.join(__dirname, 'test.png')))
- passes += 1
- check()
- })
- process.on('exit', function () {
- fs.unlinkSync(path.join(__dirname, 'test.png'))
- })
- request.get({uri:'http://localhost:3453/onelineproxy', headers:{'x-oneline-proxy':'nope'}}, function (err, resp, body) {
- assert.ok(resp.headers['x-oneline-proxy'] === 'yup')
- passes += 1
- check()
- })
|