From 535c8dd55494dc419a722fa415377387bce920ea Mon Sep 17 00:00:00 2001 From: Brian White Date: Sat, 7 May 2016 17:21:22 -0400 Subject: [PATCH] test: add more http token/value checking tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/6570 Reviewed-By: James M Snell Reviewed-By: Ben Noordhuis Reviewed-By: Сковорода Никита Андреевич --- .../parallel/test-http-invalidheaderfield2.js | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 test/parallel/test-http-invalidheaderfield2.js diff --git a/test/parallel/test-http-invalidheaderfield2.js b/test/parallel/test-http-invalidheaderfield2.js new file mode 100644 index 00000000000000..727c600d5d79a3 --- /dev/null +++ b/test/parallel/test-http-invalidheaderfield2.js @@ -0,0 +1,97 @@ +'use strict'; +require('../common'); +const assert = require('assert'); +const inspect = require('util').inspect; +const checkIsHttpToken = require('_http_common')._checkIsHttpToken; +const checkInvalidHeaderChar = require('_http_common')._checkInvalidHeaderChar; + +// Good header field names +[ + 'TCN', + 'ETag', + 'date', + 'alt-svc', + 'Content-Type', + '0', + 'Set-Cookie2', + 'Set_Cookie', + 'foo`bar^', + 'foo|bar', + '~foobar', + 'FooBar!', + '#Foo', + '$et-Cookie', + '%%Test%%', + 'Test&123', + 'It\'s_fun', + '2*3', + '4+2', + '3.14159265359' +].forEach(function(str) { + assert.strictEqual(checkIsHttpToken(str), + true, + 'checkIsHttpToken(' + + inspect(str) + + ') unexpectedly failed'); +}); +// Bad header field names +[ + ':', + '@@', + '中文呢', // unicode + '((((())))', + ':alternate-protocol', + 'alternate-protocol:', + 'foo\nbar', + 'foo\rbar', + 'foo\r\nbar', + 'foo\x00bar', + '\x7FMe!', + '{Start', + '(Start', + '[Start', + 'End}', + 'End)', + 'End]', + '"Quote"', + 'This,That' +].forEach(function(str) { + assert.strictEqual(checkIsHttpToken(str), + false, + 'checkIsHttpToken(' + + inspect(str) + + ') unexpectedly succeeded'); +}); + + +// Good header field values +[ + 'foo bar', + 'foo\tbar', + '0123456789ABCdef', + '!@#$%^&*()-_=+\\;\':"[]{}<>,./?|~`' +].forEach(function(str) { + assert.strictEqual(checkInvalidHeaderChar(str), + false, + 'checkInvalidHeaderChar(' + + inspect(str) + + ') unexpectedly failed'); +}); + +// Bad header field values +[ + 'foo\rbar', + 'foo\nbar', + 'foo\r\nbar', + '中文呢', // unicode + '\x7FMe!', + 'Testing 123\x00', + 'foo\vbar', + 'Ding!\x07' +].forEach(function(str) { + assert.strictEqual(checkInvalidHeaderChar(str), + true, + 'checkInvalidHeaderChar(' + + inspect(str) + + ') unexpectedly succeeded'); +});