e8f79d43f9
closes #517 add index test for Application add app.toJSON test add test for app.inspect() add tests for app.use() add tests for app.onerror() add tests for app.respond() add tests for app.context() add tests for app.request() add tests for app.response refactor for non-existence of test/app...js no need for *.js use helpers/ dir for non-tests
134 lines
4 KiB
JavaScript
134 lines
4 KiB
JavaScript
|
|
'use strict';
|
|
|
|
const response = require('../helpers/context').response;
|
|
const assert = require('assert');
|
|
const fs = require('fs');
|
|
|
|
describe('res.body=', function(){
|
|
describe('when Content-Type is set', function(){
|
|
it('should not override', function(){
|
|
const res = response();
|
|
res.type = 'png';
|
|
res.body = new Buffer('something');
|
|
assert('image/png' == res.header['content-type']);
|
|
})
|
|
|
|
describe('when body is an object', function(){
|
|
it('should override as json', function(){
|
|
const res = response();
|
|
|
|
res.body = '<em>hey</em>';
|
|
assert('text/html; charset=utf-8' == res.header['content-type']);
|
|
|
|
res.body = { foo: 'bar' };
|
|
assert('application/json; charset=utf-8' == res.header['content-type']);
|
|
})
|
|
})
|
|
|
|
it('should override length', function(){
|
|
const res = response();
|
|
res.type = 'html';
|
|
res.body = 'something';
|
|
res.length.should.equal(9);
|
|
})
|
|
})
|
|
|
|
describe('when a string is given', function(){
|
|
it('should default to text', function(){
|
|
const res = response();
|
|
res.body = 'Tobi';
|
|
assert('text/plain; charset=utf-8' == res.header['content-type']);
|
|
})
|
|
|
|
it('should set length', function(){
|
|
const res = response();
|
|
res.body = 'Tobi';
|
|
assert('4' == res.header['content-length']);
|
|
})
|
|
|
|
describe('and contains a non-leading <', function(){
|
|
it('should default to text', function(){
|
|
const res = response();
|
|
res.body = 'aklsdjf < klajsdlfjasd';
|
|
assert('text/plain; charset=utf-8' == res.header['content-type']);
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('when an html string is given', function(){
|
|
it('should default to html', function(){
|
|
const res = response();
|
|
res.body = '<h1>Tobi</h1>';
|
|
assert('text/html; charset=utf-8' == res.header['content-type']);
|
|
})
|
|
|
|
it('should set length', function(){
|
|
const string = '<h1>Tobi</h1>';
|
|
const res = response();
|
|
res.body = string;
|
|
assert.equal(res.length, Buffer.byteLength(string));
|
|
})
|
|
|
|
it('should set length when body is overridden', function(){
|
|
const string = '<h1>Tobi</h1>';
|
|
const res = response();
|
|
res.body = string;
|
|
res.body = string + string;
|
|
assert.equal(res.length, 2 * Buffer.byteLength(string));
|
|
})
|
|
|
|
describe('when it contains leading whitespace', function(){
|
|
it('should default to html', function(){
|
|
const res = response();
|
|
res.body = ' <h1>Tobi</h1>';
|
|
assert('text/html; charset=utf-8' == res.header['content-type']);
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('when an xml string is given', function(){
|
|
it('should default to html', function(){
|
|
/**
|
|
* This test is to show that we're not going
|
|
* to be stricter with the html sniff
|
|
* or that we will sniff other string types.
|
|
* You should `.type=` if this simple test fails.
|
|
*/
|
|
|
|
const res = response();
|
|
res.body = '<?xml version="1.0" encoding="UTF-8"?>\n<俄语>данные</俄语>';
|
|
assert('text/html; charset=utf-8' == res.header['content-type']);
|
|
})
|
|
})
|
|
|
|
describe('when a stream is given', function(){
|
|
it('should default to an octet stream', function(){
|
|
const res = response();
|
|
res.body = fs.createReadStream('LICENSE');
|
|
assert('application/octet-stream' == res.header['content-type']);
|
|
})
|
|
})
|
|
|
|
describe('when a buffer is given', function(){
|
|
it('should default to an octet stream', function(){
|
|
const res = response();
|
|
res.body = new Buffer('hey');
|
|
assert('application/octet-stream' == res.header['content-type']);
|
|
})
|
|
|
|
it('should set length', function(){
|
|
const res = response();
|
|
res.body = new Buffer('Tobi');
|
|
assert('4' == res.header['content-length']);
|
|
})
|
|
})
|
|
|
|
describe('when an object is given', function(){
|
|
it('should default to json', function(){
|
|
const res = response();
|
|
res.body = { foo: 'bar' };
|
|
assert('application/json; charset=utf-8' == res.header['content-type']);
|
|
})
|
|
})
|
|
})
|