From d7716716d7792d98da668723752a8786f4d3c68c Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Wed, 7 Jan 2015 18:25:58 +0100 Subject: [PATCH 1/3] Add mock https server and redo start of browser tests for this purpose. --- package.json | 2 +- tests/browser/karma.conf.js | 18 ++++++++++++++---- tests/browser/ssl/ca.crt | 14 ++++++++++++++ tests/browser/ssl/server.crt | 14 ++++++++++++++ tests/browser/ssl/server.key | 15 +++++++++++++++ tests/browser/start.js | 28 ++++++++++++++++++++++++++++ tests/browser/test.js | 2 +- 7 files changed, 87 insertions(+), 6 deletions(-) create mode 100644 tests/browser/ssl/ca.crt create mode 100644 tests/browser/ssl/server.crt create mode 100644 tests/browser/ssl/server.key create mode 100644 tests/browser/start.js diff --git a/package.json b/package.json index ca23c4995..eeae83c09 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ }, "scripts": { "test": "npm run lint && node node_modules/.bin/taper tests/test-*.js && npm run test-browser && npm run clean", - "test-browser": "browserify tests/browser/test.js -o tests/browser/test-browser.js && karma start tests/browser/karma.conf.js", + "test-browser": "browserify tests/browser/test.js -o tests/browser/test-browser.js && node tests/browser/start.js", "lint": "node node_modules/.bin/eslint lib/ *.js tests/ && echo Lint passed.", "clean": "rm tests/browser/test-browser.js || true" }, diff --git a/tests/browser/karma.conf.js b/tests/browser/karma.conf.js index 2436dbb55..6dd75b3e5 100644 --- a/tests/browser/karma.conf.js +++ b/tests/browser/karma.conf.js @@ -10,15 +10,25 @@ module.exports = function(config) { port: 9876, reporters: ['dots'], - + colors: true, logLevel: config.LOG_ERROR, autoWatch: false, - browsers: ['PhantomJS'], + browsers: ['PhantomJS_without_security'], + + singleRun: true, - singleRun: true - }) + // Custom launcher to allowe self signed certs. + customLaunchers: { + PhantomJS_without_security: { + base: 'PhantomJS', + flags: [ + '--ignore-ssl-errors=true' + ] + } + } + }); } diff --git a/tests/browser/ssl/ca.crt b/tests/browser/ssl/ca.crt new file mode 100644 index 000000000..6e9e3ceb3 --- /dev/null +++ b/tests/browser/ssl/ca.crt @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKTCCAZICCQDB/6lRlsirjzANBgkqhkiG9w0BAQUFADBZMQswCQYDVQQGEwJB +VTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0 +cyBQdHkgTHRkMRIwEAYDVQQDEwlsb2NhbGhvc3QwHhcNMTUwMTA3MTcwODM2WhcN +MjUwMTA0MTcwODM2WjBZMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0 +ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRIwEAYDVQQDEwls +b2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMba6FQ1VkgW8vWa +FBxV1VdLhQ5HP0eKZ/CyEGG4r89CzfzC0+V3bnFWGBGF2kSJlVjc7eVSSVio383A +inq3i+86Mavfy18BwcP4I0NqUSvvcV9yduBLUySklJhOlhhHeFUlycQyxuODbrG9 +QOd411c4eccsbDHq5vSnS7AJh6tVAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAI0H3 +bJIUQgnSGyrSHmjoKm66QLBPvQ1Zd7Zxjlg1uFv6glPOhdkeTQx9XQPT/WDG3qmJ +BdHvQLDtPS9P8vRaiQW1OCP7dQJkVYCxyFbSQiieuzwBAEGtZcLdZbvcp3PKRGbx +sIrkzyYdAXE1EZ5z7yLVcpWwTKnBnuRz2D0XOk4= +-----END CERTIFICATE----- diff --git a/tests/browser/ssl/server.crt b/tests/browser/ssl/server.crt new file mode 100644 index 000000000..f97713b67 --- /dev/null +++ b/tests/browser/ssl/server.crt @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKTCCAZICCQDl9xx8ZXLMPTANBgkqhkiG9w0BAQUFADBZMQswCQYDVQQGEwJB +VTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0 +cyBQdHkgTHRkMRIwEAYDVQQDEwlsb2NhbGhvc3QwHhcNMTUwMTA3MTcwOTQ4WhcN +MjUwMTA0MTcwOTQ4WjBZMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0 +ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRIwEAYDVQQDEwls +b2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWxvvLNi8AcT0wI +sf+LoWAvtoIV29ypI6j1JRqmsPO433JP/ijLhJLFc6RKXpKs6pd4am82vzk8Bxs3 +VtUXJ0yKh3KMevT7L4X1hw+QxvYAZD6Kl/kaNvKFTuAgcaeSnmnWGjQYLF/i20w7 +7dpeXDmnNMCKwdg+kLeJdPtW0d+vAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEADL6l +Z2mDKj4kPyGD58uBGeBHjmcDA2oJcnsHhOiC1u1NuCwQW4RDWs6Ili0GhuHYHP0B +JDcPw6ZSa1Gx3ZaUJ5yM/+YHpbLev34CjmiwQeG36DF2rAxfoIQk/wI4iWmu1+ed +5Wwc0cZAb10uy0ihmMK98yhVQPmkBOEyw2O1xJw= +-----END CERTIFICATE----- diff --git a/tests/browser/ssl/server.key b/tests/browser/ssl/server.key new file mode 100644 index 000000000..dcb89027b --- /dev/null +++ b/tests/browser/ssl/server.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQClsb7yzYvAHE9MCLH/i6FgL7aCFdvcqSOo9SUaprDzuN9yT/4o +y4SSxXOkSl6SrOqXeGpvNr85PAcbN1bVFydMiodyjHr0+y+F9YcPkMb2AGQ+ipf5 +GjbyhU7gIHGnkp5p1ho0GCxf4ttMO+3aXlw5pzTAisHYPpC3iXT7VtHfrwIDAQAB +AoGBAJa5edmk4NuA5SFlR4YOnl3BCWSMPdQciDPJzFbSC2WpZpm16p1xhMd+lhN9 +E0qZwUzIXQmN46VM1aoMTRDKXxPqujUIvhn7kxMLmD8lajHzFUIhgnp1XQCfxIIV +sCcnIoP+cbnzP+AegAEPjds/0ngI3YM28UeooqZAmZCHQ0cBAkEAz0go7tCxXqED ++cY+P2axAKuGR+6srx08g5kONTpUx8jXr4su02F376dxhPB9UXWOJkYiGEBwKEds +OnUSNTF/RQJBAMyjUzjb/u6sZqTcHd3owes3UsCC+kfSb814qdG3Z9qYX9p55ESu +hA7Sbjq0WdTHGZdgEexwpfLtTRS8x5ldiGMCQFC3GLlmKqtep92rhLHLm0FXiYKZ +PkUybU4RW6b+f+UMIHELEcDeQ4Xe/iV2QFZoIGJnDP/El+gXZ92bmOt9ysECQD/i +zVx28gO5NuJJBdn9jGzOfLs1KMW7YMQY44thYr7Pyzz9yNHYWcn20Arruw++iLLF +f1L9aBGLHAFZXkb2+FkCQA5/3Z3SgiZrRYX/bWcNe6N65+nGfJv8ZBVsX13pKOxR +8JzJLyEmx67IOGZvVgfVABrCHJvTrKlUO3x3mDoEPzI= +-----END RSA PRIVATE KEY----- diff --git a/tests/browser/start.js b/tests/browser/start.js new file mode 100644 index 000000000..3c89cb511 --- /dev/null +++ b/tests/browser/start.js @@ -0,0 +1,28 @@ +var spawn = require('child_process').spawn; +var https = require('https'); +var fs = require('fs'); + +https.createServer({ + key: fs.readFileSync(__dirname + '/ssl/server.key'), + cert: fs.readFileSync(__dirname + '/ssl/server.crt'), + ca: fs.readFileSync(__dirname + '/ssl/ca.crt'), + requestCert: true, + rejectUnauthorized: false + }, function (req, res) { + // Set CORS header, since that is something we are testing. + res.setHeader('Access-Control-Allow-Origin', '*'); + res.writeHead(200); + res.end("Can you hear the sound of an enormous door slamming in the depths of hell?\n"); +}).listen(8000, function() { + console.log('Started https server for karma tests on port 8000'); + // Spawn process for karma. + var c = spawn('karma', [ + 'start', + __dirname + '/karma.conf.js' + ]); + c.stdout.pipe(process.stdout); + c.on('exit', function(c) { + // Exit process with karma exit code. + process.exit(c); + }); +}); diff --git a/tests/browser/test.js b/tests/browser/test.js index d63f1c6b8..ccece6915 100644 --- a/tests/browser/test.js +++ b/tests/browser/test.js @@ -16,7 +16,7 @@ var assert = require('assert') tape('Request browser test', function(t) { t.plan(1) request({ - uri: 'https://api.github.com', + uri: 'https://localhost:8000', withCredentials: false }, function (error, response) { t.equal(response.statusCode, 200) From d0737c88a1848f7b2bb7961cb1a45cd7e9a01466 Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Wed, 7 Jan 2015 18:02:42 +0000 Subject: [PATCH 2/3] Fix lint errors. --- tests/browser/karma.conf.js | 2 +- tests/browser/start.js | 42 +++++++++++++++++++++---------------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/tests/browser/karma.conf.js b/tests/browser/karma.conf.js index 6dd75b3e5..f5c308f8e 100644 --- a/tests/browser/karma.conf.js +++ b/tests/browser/karma.conf.js @@ -30,5 +30,5 @@ module.exports = function(config) { ] } } - }); + }) } diff --git a/tests/browser/start.js b/tests/browser/start.js index 3c89cb511..ab43aadd8 100644 --- a/tests/browser/start.js +++ b/tests/browser/start.js @@ -1,28 +1,34 @@ -var spawn = require('child_process').spawn; -var https = require('https'); -var fs = require('fs'); +'use strict' +var spawn = require('child_process').spawn +var https = require('https') +var fs = require('fs') +var path = require('path') -https.createServer({ - key: fs.readFileSync(__dirname + '/ssl/server.key'), - cert: fs.readFileSync(__dirname + '/ssl/server.crt'), - ca: fs.readFileSync(__dirname + '/ssl/ca.crt'), +var server = https.createServer({ + key: fs.readFileSync(path.join(__dirname, '/ssl/server.key')), + cert: fs.readFileSync(path.join(__dirname, '/ssl/server.crt')), + ca: fs.readFileSync(path.join(__dirname, '/ssl/ca.crt')), requestCert: true, rejectUnauthorized: false }, function (req, res) { // Set CORS header, since that is something we are testing. - res.setHeader('Access-Control-Allow-Origin', '*'); - res.writeHead(200); - res.end("Can you hear the sound of an enormous door slamming in the depths of hell?\n"); -}).listen(8000, function() { - console.log('Started https server for karma tests on port 8000'); + res.setHeader('Access-Control-Allow-Origin', '*') + res.writeHead(200) + res.end('Can you hear the sound of an enormous door slamming in the depths of hell?\n') +}) +server.listen(8000, function() { + console.log('Started https server for karma tests on port 8000') // Spawn process for karma. var c = spawn('karma', [ 'start', - __dirname + '/karma.conf.js' - ]); - c.stdout.pipe(process.stdout); + path.join(__dirname, '/karma.conf.js') + ]) + c.stdout.pipe(process.stdout) c.on('exit', function(c) { // Exit process with karma exit code. - process.exit(c); - }); -}); + if (c !== 0) { + throw new Error('Karma exited with status code ' + c) + } + server.close() + }) +}) From 33b2014b07dd467dfaf6c76197cb130d6bf766b7 Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Thu, 8 Jan 2015 08:04:04 +0000 Subject: [PATCH 3/3] Change port to 6767. --- tests/browser/start.js | 6 ++++-- tests/browser/test.js | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/browser/start.js b/tests/browser/start.js index ab43aadd8..0027f2612 100644 --- a/tests/browser/start.js +++ b/tests/browser/start.js @@ -4,6 +4,8 @@ var https = require('https') var fs = require('fs') var path = require('path') +var port = 6767 + var server = https.createServer({ key: fs.readFileSync(path.join(__dirname, '/ssl/server.key')), cert: fs.readFileSync(path.join(__dirname, '/ssl/server.crt')), @@ -16,8 +18,8 @@ var server = https.createServer({ res.writeHead(200) res.end('Can you hear the sound of an enormous door slamming in the depths of hell?\n') }) -server.listen(8000, function() { - console.log('Started https server for karma tests on port 8000') +server.listen(port, function() { + console.log('Started https server for karma tests on port ' + port) // Spawn process for karma. var c = spawn('karma', [ 'start', diff --git a/tests/browser/test.js b/tests/browser/test.js index ccece6915..9d504c21a 100644 --- a/tests/browser/test.js +++ b/tests/browser/test.js @@ -16,7 +16,7 @@ var assert = require('assert') tape('Request browser test', function(t) { t.plan(1) request({ - uri: 'https://localhost:8000', + uri: 'https://localhost:6767', withCredentials: false }, function (error, response) { t.equal(response.statusCode, 200)