徐总多门店
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

69 lines
1.8 KiB

var test = require('tap').test;
var responseStream = require('../');
var http = require('http');
var es = require('event-stream');
var filed = require('filed');
var fs = require('fs');
var fileContents = fs.readFileSync(__dirname + '/data.txt');
test('filed response', function (t) {
t.plan(5);
var port = Math.floor(Math.random() * 5e4 + 1e4);
var server = http.createServer(function (req, res) {
filed(__dirname + '/data.txt')
.pipe(capStream())
.pipe(res)
;
});
server.listen(port);
server.on('listening', function () {
var opts = {
host : 'localhost',
port : port,
path : '/'
};
http.get(opts, function (res) {
var data = '';
res.on('data', function (buf) { data += buf });
res.on('end', function () {
t.equal(data, String(fileContents).toUpperCase());
t.equal(
Number(res.headers['content-length']),
fileContents.length
);
t.equal(
res.headers['content-type'],
'TEXT/PLAIN'
);
t.notOk(res.headers.etag);
});
});
});
t.on('end', function () {
server.close();
});
function capStream () {
var caps = es.mapSync(function (s) {
return String(s).toUpperCase()
});
var s = responseStream(caps);
t.notEqual(caps, s);
s.on('setHeader', function (args, pass) {
if (args[0] === 'content-type') {
args[1] = String(args[1]).toUpperCase();
}
if (args[0] === 'etag') {
pass();
}
});
return s;
}
});