117 lines
2.9 KiB
JavaScript
117 lines
2.9 KiB
JavaScript
var logfmt = require('../logfmt'),
|
|
stream = require('stream'),
|
|
assert = require('assert');
|
|
|
|
suite('logfmt.bodyParser', function(){
|
|
|
|
test("skips parsing when req._body is true", function(){
|
|
var mockReq = new stream.Readable;
|
|
mockReq.header = function(){
|
|
return 'application/logplex-1';
|
|
}
|
|
mockReq._read = function(){};
|
|
mockReq.push('hello=kitty');
|
|
mockReq.push(null);
|
|
|
|
mockReq._body = true;
|
|
|
|
var next = function(err){
|
|
assert.equal(mockReq.body, undefined)
|
|
};
|
|
|
|
var parser = logfmt.bodyParser();
|
|
parser(mockReq, null, next)
|
|
})
|
|
|
|
test("skips parsing when contentType does not match", function(){
|
|
var mockReq = new stream.Readable;
|
|
mockReq.header = function(){
|
|
return 'application/foo';
|
|
}
|
|
mockReq._read = function(){};
|
|
mockReq.push('hello=kitty');
|
|
mockReq.push(null);
|
|
|
|
var next = function(err){
|
|
assert.equal(mockReq.body, undefined)
|
|
};
|
|
|
|
var parser = logfmt.bodyParser();
|
|
parser(mockReq, null, next)
|
|
|
|
})
|
|
|
|
test("accepts contentType option", function(){
|
|
var mockReq = new stream.Readable;
|
|
mockReq.header = function(){
|
|
return 'foo';
|
|
}
|
|
mockReq._read = function(){};
|
|
mockReq.push('hello=kitty');
|
|
mockReq.push(null);
|
|
|
|
var next = function(err){
|
|
assert.deepEqual(mockReq.body[0], {hello: 'kitty'})
|
|
};
|
|
|
|
var parser = logfmt.bodyParser({contentType: 'foo'});
|
|
parser(mockReq, null, next)
|
|
})
|
|
|
|
test("converts body lines to objects", function(){
|
|
var mockReq = new stream.Readable;
|
|
mockReq.header = function(){
|
|
return 'application/logplex-1';
|
|
}
|
|
mockReq._read = function(){};
|
|
mockReq.push('hello=kitty');
|
|
mockReq.push(null);
|
|
|
|
var next = function(err){
|
|
assert.deepEqual(mockReq.body[0], {hello: 'kitty'})
|
|
};
|
|
|
|
var parser = logfmt.bodyParser();
|
|
parser(mockReq, null, next)
|
|
})
|
|
|
|
test("parses all the lines", function(){
|
|
var mockReq = new stream.Readable;
|
|
mockReq.header = function(){
|
|
return 'application/logplex-1';
|
|
}
|
|
mockReq._read = function(){};
|
|
mockReq.push('hello=kitty\n');
|
|
mockReq.push('foo=bar');
|
|
mockReq.push(null);
|
|
|
|
var next = function(err){
|
|
assert.deepEqual(mockReq.body[0], {hello: 'kitty'})
|
|
assert.deepEqual(mockReq.body[1], {foo: 'bar'})
|
|
assert.equal(mockReq.body[2], undefined)
|
|
};
|
|
|
|
var parser = logfmt.bodyParser();
|
|
parser(mockReq, null, next)
|
|
})
|
|
|
|
test("ignores trailing newline", function(){
|
|
var mockReq = new stream.Readable;
|
|
mockReq.header = function(){
|
|
return 'application/logplex-1';
|
|
}
|
|
mockReq._read = function(){};
|
|
mockReq.push('hello=kitty\n');
|
|
mockReq.push(null);
|
|
|
|
var next = function(err){
|
|
assert.deepEqual(mockReq.body[0], {hello: 'kitty'})
|
|
assert.equal(mockReq.body[1], undefined)
|
|
};
|
|
|
|
var parser = logfmt.bodyParser();
|
|
parser(mockReq, null, next)
|
|
|
|
})
|
|
})
|