summaryrefslogtreecommitdiff
path: root/test/parallel/test-http-invalidheaderfield.js
diff options
context:
space:
mode:
authorJames M Snell <jasnell@gmail.com>2015-08-24 11:58:48 -0700
committerJames M Snell <jasnell@gmail.com>2015-09-25 08:37:57 -0700
commit6192c9892f3eddf165a4826ba917ea08ea627ea2 (patch)
treecb93bd627c3c199ab92a2929eb31de5202081534 /test/parallel/test-http-invalidheaderfield.js
parentb50e89e01f36c4abd048a194991f2ce88725773a (diff)
downloadandroid-node-v8-6192c9892f3eddf165a4826ba917ea08ea627ea2.tar.gz
android-node-v8-6192c9892f3eddf165a4826ba917ea08ea627ea2.tar.bz2
android-node-v8-6192c9892f3eddf165a4826ba917ea08ea627ea2.zip
http: add checkIsHttpToken check for header fields
Ref: https://github.com/nodejs/node-convergence-archive/issues/13 This adds a new check for header and trailer fields names and method names to ensure that they conform to the HTTP token rule. If they do not, a `TypeError` is thrown. Previously this had an additional `strictMode` option that has been removed in favor of making the strict check the default (and only) behavior. Doc and test case are included. On the client-side ```javascript var http = require('http'); var url = require('url'); var p = url.parse('http://localhost:8888'); p.headers = {'testing 123': 123}; http.client(p, function(res) { }); // throws ``` On the server-side ```javascript var http = require('http'); var server = http.createServer(function(req,res) { res.setHeader('testing 123', 123); // throws res.end('...'); }); ``` Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com> Reviewed-By: Trevor Norris <trevnorris@nodejs.org> Reviewed-By: Сковорода Никита Андреевич <chalkerx@gmail.com> Reviewed-By: Rod Vagg <rod@vagg.org> PR-URL: https://github.com/nodejs/node/pull/2526
Diffstat (limited to 'test/parallel/test-http-invalidheaderfield.js')
-rw-r--r--test/parallel/test-http-invalidheaderfield.js56
1 files changed, 56 insertions, 0 deletions
diff --git a/test/parallel/test-http-invalidheaderfield.js b/test/parallel/test-http-invalidheaderfield.js
new file mode 100644
index 0000000000..7e130e50d8
--- /dev/null
+++ b/test/parallel/test-http-invalidheaderfield.js
@@ -0,0 +1,56 @@
+'use strict';
+const common = require('../common');
+const assert = require('assert');
+const EventEmitter = require('events');
+const http = require('http');
+
+const ee = new EventEmitter();
+var count = 3;
+
+const server = http.createServer(function(req, res) {
+ assert.doesNotThrow(function() {
+ res.setHeader('testing_123', 123);
+ });
+ assert.throws(function() {
+ res.setHeader('testing 123', 123);
+ }, TypeError);
+ res.end('');
+});
+server.listen(common.PORT, function() {
+
+ http.get({port: common.PORT}, function() {
+ ee.emit('done');
+ });
+
+ assert.throws(
+ function() {
+ var options = {
+ port: common.PORT,
+ headers: {'testing 123': 123}
+ };
+ http.get(options, function() {});
+ },
+ function(err) {
+ ee.emit('done');
+ if (err instanceof TypeError) return true;
+ }
+ );
+
+ assert.doesNotThrow(
+ function() {
+ var options = {
+ port: common.PORT,
+ headers: {'testing_123': 123}
+ };
+ http.get(options, function() {
+ ee.emit('done');
+ });
+ }, TypeError
+ );
+});
+
+ee.on('done', function() {
+ if (--count === 0) {
+ server.close();
+ }
+});