summaryrefslogtreecommitdiff
path: root/node_modules/request/tests/test-httpModule.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/request/tests/test-httpModule.js')
-rw-r--r--node_modules/request/tests/test-httpModule.js94
1 files changed, 94 insertions, 0 deletions
diff --git a/node_modules/request/tests/test-httpModule.js b/node_modules/request/tests/test-httpModule.js
new file mode 100644
index 0000000..6d8c83f
--- /dev/null
+++ b/node_modules/request/tests/test-httpModule.js
@@ -0,0 +1,94 @@
+var http = require('http')
+ , https = require('https')
+ , server = require('./server')
+ , assert = require('assert')
+ , request = require('../main.js')
+
+
+var faux_requests_made = {'http':0, 'https':0}
+function wrap_request(name, module) {
+ // Just like the http or https module, but note when a request is made.
+ var wrapped = {}
+ Object.keys(module).forEach(function(key) {
+ var value = module[key];
+
+ if(key != 'request')
+ wrapped[key] = value;
+ else
+ wrapped[key] = function(options, callback) {
+ faux_requests_made[name] += 1
+ return value.apply(this, arguments)
+ }
+ })
+
+ return wrapped;
+}
+
+
+var faux_http = wrap_request('http', http)
+ , faux_https = wrap_request('https', https)
+ , plain_server = server.createServer()
+ , https_server = server.createSSLServer()
+
+
+plain_server.listen(plain_server.port, function() {
+ plain_server.on('/plain', function (req, res) {
+ res.writeHead(200)
+ res.end('plain')
+ })
+ plain_server.on('/to_https', function (req, res) {
+ res.writeHead(301, {'location':'https://localhost:'+https_server.port + '/https'})
+ res.end()
+ })
+
+ https_server.listen(https_server.port, function() {
+ https_server.on('/https', function (req, res) {
+ res.writeHead(200)
+ res.end('https')
+ })
+ https_server.on('/to_plain', function (req, res) {
+ res.writeHead(302, {'location':'http://localhost:'+plain_server.port + '/plain'})
+ res.end()
+ })
+
+ run_tests()
+ run_tests({})
+ run_tests({'http:':faux_http})
+ run_tests({'https:':faux_https})
+ run_tests({'http:':faux_http, 'https:':faux_https})
+ })
+})
+
+function run_tests(httpModules) {
+ var to_https = {'httpModules':httpModules, 'uri':'http://localhost:'+plain_server.port+'/to_https'}
+ var to_plain = {'httpModules':httpModules, 'uri':'https://localhost:'+https_server.port+'/to_plain'}
+
+ request(to_https, function (er, res, body) {
+ assert.ok(!er, 'Bounce to SSL worked')
+ assert.equal(body, 'https', 'Received HTTPS server body')
+ done()
+ })
+
+ request(to_plain, function (er, res, body) {
+ assert.ok(!er, 'Bounce to plaintext server worked')
+ assert.equal(body, 'plain', 'Received HTTPS server body')
+ done()
+ })
+}
+
+
+var passed = 0;
+function done() {
+ passed += 1
+ var expected = 10
+
+ if(passed == expected) {
+ plain_server.close()
+ https_server.close()
+
+ assert.equal(faux_requests_made.http, 4, 'Wrapped http module called appropriately')
+ assert.equal(faux_requests_made.https, 4, 'Wrapped https module called appropriately')
+
+ console.log((expected+2) + ' tests passed.')
+ }
+}