mock-req
Version:
Mocks node.js `http.IncomingMessage` (a request). See also `mock-res`.
162 lines (127 loc) • 2.72 kB
JavaScript
var assert = require('assert'),
MockRequest = require('./index');
var tests = [
function is_writable_and_readable(done) {
var req = new MockRequest();
assert(req.readable);
assert(req.writable);
done();
},
function default_options(done) {
var req = new MockRequest();
assert.equal(typeof req.url, 'string');
assert.equal(req.method, 'GET');
assert.deepEqual(req.headers, {});
assert.deepEqual(req.rawHeaders, []);
done()
},
function parses_headers(done) {
var req = new MockRequest({
headers: {
'Content-Type': 'text/plain',
'Content-Length': 10
}
});
assert.equal(req.headers['content-type'], 'text/plain');
assert.equal(req.headers['content-length'], '10');
assert.deepEqual(req.rawHeaders, [
'Content-Type',
'text/plain',
'Content-Length',
'10'
]);
done()
},
function undefined_header(done) {
var req = new MockRequest({
headers: {
'foo': undefined
}
});
assert.equal(req.rawHeaders.indexOf('foo'), -1);
assert.equal(req.headers['foo'], undefined);
done()
},
function automatically_ends_for_bodiless(done) {
var ends = {
GET: true,
HEAD: true,
DELETE: true,
POST: false,
PUT: false,
WHATEVS: false
};
Object.keys(ends).forEach(function(method) {
var req = new MockRequest({
method: method
});
assert.equal(req._writableState.ended, ends[method], method);
});
done();
},
function string_body(done) {
var req = new MockRequest({
method: 'POST'
});
req.write('hello', 'utf8');
req.end();
req.setEncoding('utf8');
req.once('readable', function() {
var d = this.read();
assert.equal(d, 'hello');
done();
});
},
function json_body(done) {
var req = new MockRequest({
method: 'POST'
});
req.write({
hello: 3
});
req.end();
req.setEncoding('utf8');
req.once('readable', function() {
var d = this.read();
assert.deepEqual(d, '{"hello":3}');
done();
});
},
function buffer_body(done) {
var req = new MockRequest({
method: 'POST'
});
var buf = new Buffer('yo', 'utf8');
req.write(buf);
req.end();
req.once('readable', function() {
var d = this.read();
assert.equal(d, buf);
done();
});
},
function fails(done) {
var req = new MockRequest({
method: 'POST'
});
var err = new Error('Oops');
req._fail(err);
req.on('error', function(err2) {
assert.equal(err, err2);
done();
});
req.write('yo');
}
];
var doneCount = 0;
tests.forEach(function(test) {
test(done.bind(null, test.name));
});
function done(name) {
console.log(name);
doneCount++;
if (doneCount === tests.length) {
console.log('>> All tests passed');
return process.exit(0);
}
}