Skip to content

Commit

Permalink
Merge pull request #1342 from eiriksm/bug/fix-browser-tests
Browse files Browse the repository at this point in the history
Add mock https server and redo start of browser tests for this purpose.
  • Loading branch information
nylen committed Jan 8, 2015
2 parents 801947f + 33b2014 commit f09c68d
Show file tree
Hide file tree
Showing 7 changed files with 94 additions and 5 deletions.
2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -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"
},
Expand Down
16 changes: 13 additions & 3 deletions tests/browser/karma.conf.js
Expand Up @@ -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'
]
}
}
})
}
14 changes: 14 additions & 0 deletions 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-----
14 changes: 14 additions & 0 deletions 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-----
15 changes: 15 additions & 0 deletions 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-----
36 changes: 36 additions & 0 deletions tests/browser/start.js
@@ -0,0 +1,36 @@
'use strict'
var spawn = require('child_process').spawn
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')),
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')
})
server.listen(port, function() {
console.log('Started https server for karma tests on port ' + port)
// Spawn process for karma.
var c = spawn('karma', [
'start',
path.join(__dirname, '/karma.conf.js')
])
c.stdout.pipe(process.stdout)
c.on('exit', function(c) {
// Exit process with karma exit code.
if (c !== 0) {
throw new Error('Karma exited with status code ' + c)
}
server.close()
})
})
2 changes: 1 addition & 1 deletion tests/browser/test.js
Expand Up @@ -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:6767',
withCredentials: false
}, function (error, response) {
t.equal(response.statusCode, 200)
Expand Down

0 comments on commit f09c68d

Please sign in to comment.