diff options
author | Fedor Indutny <fedor@indutny.com> | 2014-12-17 20:30:04 +0700 |
---|---|---|
committer | Fedor Indutny <fedor@indutny.com> | 2014-12-17 20:45:02 +0700 |
commit | 0e19476595729c850f07befea93e864822cd8459 (patch) | |
tree | a868c3dd1becd87b7b5ea9fd2b645dd61e68ae8c /test/parallel/test-http-host-headers.js | |
parent | 165b70f146e163b82a09bb869463708516c08cf6 (diff) | |
download | android-node-v8-0e19476595729c850f07befea93e864822cd8459.tar.gz android-node-v8-0e19476595729c850f07befea93e864822cd8459.tar.bz2 android-node-v8-0e19476595729c850f07befea93e864822cd8459.zip |
test: split test in parallel/sequential
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
PR-URL: https://github.com/iojs/io.js/pull/172
Fix: iojs/io.js#139
Diffstat (limited to 'test/parallel/test-http-host-headers.js')
-rw-r--r-- | test/parallel/test-http-host-headers.js | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/test/parallel/test-http-host-headers.js b/test/parallel/test-http-host-headers.js new file mode 100644 index 0000000000..ca7f70947f --- /dev/null +++ b/test/parallel/test-http-host-headers.js @@ -0,0 +1,195 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var http = require('http'), + https = require('https'), + fs = require('fs'), + common = require('../common'), + assert = require('assert'), + options = { + key: fs.readFileSync(common.fixturesDir + '/keys/agent1-key.pem'), + cert: fs.readFileSync(common.fixturesDir + '/keys/agent1-cert.pem') + }, + httpServer = http.createServer(reqHandler), + httpsServer = https.createServer(options, reqHandler); + +function reqHandler(req, res) { + console.log('Got request: ' + req.headers.host + ' ' + req.url); + if (req.url === '/setHostFalse5') { + assert.equal(req.headers.host, undefined); + } else { + assert.equal(req.headers.host, 'localhost:' + common.PORT, + 'Wrong host header for req[' + req.url + ']: ' + + req.headers.host); + } + res.writeHead(200, {}); + //process.nextTick(function() { res.end('ok'); }); + res.end('ok'); +} + +function thrower(er) { + throw er; +} + +testHttp(); + +function testHttp() { + + console.log('testing http on port ' + common.PORT); + + var counter = 0; + + function cb(res) { + counter--; + console.log('back from http request. counter = ' + counter); + if (counter === 0) { + httpServer.close(); + testHttps(); + } + res.resume(); + } + + httpServer.listen(common.PORT, function(er) { + console.error('listening on ' + common.PORT); + + if (er) throw er; + + http.get({ + method: 'GET', + path: '/' + (counter++), + host: 'localhost', + //agent: false, + port: common.PORT, + rejectUnauthorized: false + }, cb).on('error', thrower); + + http.request({ + method: 'GET', + path: '/' + (counter++), + host: 'localhost', + //agent: false, + port: common.PORT, + rejectUnauthorized: false + }, cb).on('error', thrower).end(); + + http.request({ + method: 'POST', + path: '/' + (counter++), + host: 'localhost', + //agent: false, + port: common.PORT, + rejectUnauthorized: false + }, cb).on('error', thrower).end(); + + http.request({ + method: 'PUT', + path: '/' + (counter++), + host: 'localhost', + //agent: false, + port: common.PORT, + rejectUnauthorized: false + }, cb).on('error', thrower).end(); + + http.request({ + method: 'DELETE', + path: '/' + (counter++), + host: 'localhost', + //agent: false, + port: common.PORT, + rejectUnauthorized: false + }, cb).on('error', thrower).end(); + }); +} + +function testHttps() { + + console.log('testing https on port ' + common.PORT); + + var counter = 0; + + function cb(res) { + counter--; + console.log('back from https request. counter = ' + counter); + if (counter === 0) { + httpsServer.close(); + console.log('ok'); + } + res.resume(); + } + + httpsServer.listen(common.PORT, function(er) { + if (er) throw er; + + https.get({ + method: 'GET', + path: '/' + (counter++), + host: 'localhost', + //agent: false, + port: common.PORT, + rejectUnauthorized: false + }, cb).on('error', thrower); + + https.request({ + method: 'GET', + path: '/' + (counter++), + host: 'localhost', + //agent: false, + port: common.PORT, + rejectUnauthorized: false + }, cb).on('error', thrower).end(); + + https.request({ + method: 'POST', + path: '/' + (counter++), + host: 'localhost', + //agent: false, + port: common.PORT, + rejectUnauthorized: false + }, cb).on('error', thrower).end(); + + https.request({ + method: 'PUT', + path: '/' + (counter++), + host: 'localhost', + //agent: false, + port: common.PORT, + rejectUnauthorized: false + }, cb).on('error', thrower).end(); + + https.request({ + method: 'DELETE', + path: '/' + (counter++), + host: 'localhost', + //agent: false, + port: common.PORT, + rejectUnauthorized: false + }, cb).on('error', thrower).end(); + + https.get({ + method: 'GET', + path: '/setHostFalse' + (counter++), + host: 'localhost', + setHost: false, + port: common.PORT, + rejectUnauthorized: false + }, cb).on('error', thrower).end(); + }); +} |