parent
abb5686d5b
commit
c7ff0e2ac1
2 changed files with 32 additions and 1 deletions
|
@ -120,7 +120,7 @@ module.exports = {
|
|||
|
||||
// string
|
||||
if ('string' == typeof val) {
|
||||
if (setType) this.type = ~val.indexOf('<') ? 'html' : 'text';
|
||||
if (setType) this.type = /^\s*</.test(val) ? 'html' : 'text';
|
||||
this.length = Buffer.byteLength(val);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -44,6 +44,14 @@ describe('res.body=', function(){
|
|||
res.body = 'Tobi';
|
||||
assert('4' == res.header['content-length']);
|
||||
})
|
||||
|
||||
describe('and contains a non-leading <', function(){
|
||||
it('should default to text', function(){
|
||||
var res = response();
|
||||
res.body = 'aklsdjf < klajsdlfjasd';
|
||||
assert('text/plain; charset=utf-8' == res.header['content-type']);
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('when an html string is given', function(){
|
||||
|
@ -67,6 +75,29 @@ describe('res.body=', function(){
|
|||
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(){
|
||||
var 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.
|
||||
*/
|
||||
|
||||
var 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(){
|
||||
|
|
Loading…
Reference in a new issue