Skip to content

Commit

Permalink
Two basic tests
Browse files Browse the repository at this point in the history
  • Loading branch information
battlejj committed Sep 23, 2014
1 parent 5cf70ba commit 723c54f
Show file tree
Hide file tree
Showing 7 changed files with 168 additions and 21 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Expand Up @@ -166,3 +166,5 @@ pip-log.txt

# Mac crap
.DS_Store

node_modules
4 changes: 2 additions & 2 deletions index.js
Expand Up @@ -3,8 +3,8 @@ var isSecure = function(req) {
if (req.secure) {
return true;
} else if (
typeof req.get('X-Forwarded-Proto') !== 'undefined' &&
typeof req.get('X-Forwarded-Proto').toLowerCase !== 'undefined' &&
req.get('X-Forwarded-Proto') &&
req.get('X-Forwarded-Proto').toLowerCase &&
req.get('X-Forwarded-Proto').toLowerCase() === 'https'
) {
return true;
Expand Down
60 changes: 41 additions & 19 deletions package.json
Expand Up @@ -3,29 +3,51 @@
"name": "express-force-ssl",
"description": "Force SSL on particular/all pages in Express",
"version": "0.2.5",
"scripts": {},
"homepage": "http://github.com/battlejj/express-force-ssl",
"repository": {
"type": "git",
"url": "git://github.com/battlejj/express-force-ssl.git"
},
"contributors": [{
"name": "Jeremy Battle",
"email": "battlejj@gmail.com"
},
{
"name": "Tim Shadel",
"github": "https://github.com/timshadel"
}
"contributors": [
{
"name": "Jeremy Battle",
"email": "battlejj@gmail.com"
},
{
"name": "Tim Shadel",
"github": "https://github.com/timshadel"
}
],
"keywords": [
"ssl",
"secure",
"https",
"tls",
"middleware",
"cert",
"require",
"express"
],
"keywords" : ["ssl", "secure", "https", "tls", "middleware", "cert", "require", "express"],
"dependencies": {
"dependencies": {},
"main": "index",
"bugs": {
"url": "http://github.com/battlejj/express-force-ssl/issues"
},
"main" : "index",
"bugs" : { "url" : "http://github.com/battlejj/express-force-ssl/issues" },
"scripts": { },
"engines": { "node": ">=0.2.2" },
"licenses" : [{
"type" : "MIT",
"url" : "http://github.com/battlejj/express-force-ssl/raw/master/LICENSE"
}]
}
"engines": {
"node": ">=0.2.2"
},
"licenses": [
{
"type": "MIT",
"url": "http://github.com/battlejj/express-force-ssl/raw/master/LICENSE"
}
],
"devDependencies": {
"body-parser": "^1.8.3",
"chai": "^1.9.1",
"express": "^4.9.4",
"mocha": "^1.21.4",
"request": "^2.44.0"
}
}
58 changes: 58 additions & 0 deletions test/index.js
@@ -0,0 +1,58 @@
var chai = require('chai')
, expect = chai.expect
, express = require('express')
, forceSSL = require('../index')
, fs = require('fs')
, http = require('http')
, https = require('https')
, request = require('request')
;

var ssl_options = {
key: fs.readFileSync('./test/keys/localhost.key'),
cert: fs.readFileSync('./test/keys/localhost.crt'),
ca: fs.readFileSync('./test/keys/localhost.crt')
};

var app = express();
var server = http.createServer(app);
var secureServer = https.createServer(ssl_options, app);

app.get('/', function(req, res){
res.json({msg: 'on http'});
});
app.get('/ssl', forceSSL, function(req, res){
res.json({msg: 'only https'});
});

app.set('httpsPort', 8443);

secureServer.listen(8443)
server.listen(8080)

describe('Test SSL Redirect', function(){
it('Should not automatically redirect to SSL for a non Force SSL middleware page.', function(done){
request.get({
url: 'http://localhost:8080',
followRedirect: false,
strictSSL: false
}, function (error, response, body) {
expect(error).to.not.exist;
expect(response.statusCode).to.equal(200);
done();
});
});

it('Should redirect to SSL for a Force SSL middleware page.', function(done){
request.get({
url: 'http://localhost:8080/ssl',
followRedirect: false,
strictSSL: false
}, function (error, response, body) {
expect(error).to.not.exist;
expect(response.statusCode).to.equal(301);
done();
});
});
});

21 changes: 21 additions & 0 deletions test/keys/localhost.crt
@@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDeDCCAmACCQC+YKNm0V1QRTANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJV
UzETMBEGA1UECBMKQ2FsaWZvcm5pYTESMBAGA1UEBxMJSG9sbHl3b29kMSUwIwYD
VQQKExxleHByZXNzLWJhdHRsZW5ldC1vYXV0aC10ZXN0MQswCQYDVQQLEwJJVDES
MBAGA1UEAxMJbG9jYWxob3N0MB4XDTE0MDgyODE3NDMyMFoXDTE3MDYxNzE3NDMy
MFowfjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcT
CUhvbGx5d29vZDElMCMGA1UEChMcZXhwcmVzcy1iYXR0bGVuZXQtb2F1dGgtdGVz
dDELMAkGA1UECxMCSVQxEjAQBgNVBAMTCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBALWbWCg0evxLwD5Z1lmV9GJQkcBJkCY3yZNU2fvx
LcK+1PVo0a0aHjXPaBlaU5y3xgazPtU7T6H+DKgW5tKVPPcZsiIje8vwH/mE5U3I
IzmaxPJZPvpErCHSx9Ite4J7mrt2WcIAy95wjiu1//KkpHxpI11noTh87+6QqxV5
YZH2L0plHp5IzNJHdb8crvOEsV01g3ymjthQY9OXQHZm9+vHG3EjVzHB41Bh3Mk9
nq5cCUef10yHbTW8jusyf58CBO4y+ofYs7dlQjPpzmddpFYoIkjWspZWy+w/6+nP
VTkyNZr8jnAhNbjSdbZezpuq8qoCHoCK6XHPecrtJH9ToyECAwEAATANBgkqhkiG
9w0BAQUFAAOCAQEAE9+sbbiwLCPRwG24B4KB3eJ+IblNNsBJfvCuYneuyi1pWwCU
6BBotEWENFlIoUXO/yTR/uDvMfcvs5YmarIu3Suj5+qf0rL0b42317uGFvYBsVIA
0uG8/rFP8HyUCfKLZL2NvLkG1EaywlCW2MnfD6U6haTCUaAkaIpy6hHOU1P+dMDI
OuNyG6wdeujlx2WWyag7uqr5YeKpVEpmEZUa2Dr2O0aEIU3OByuxYY8/1fwbWkbC
GuOP88J/t6Ahs1DcqYsX+aE8OvMnEL6hhd1UqOUC2jh6DkxIxsQqakSRYb8PcSdL
3+5RREr8os2Futi06PR5+r67Hva/k+oaysAN+g==
-----END CERTIFICATE-----
17 changes: 17 additions & 0 deletions test/keys/localhost.csr
@@ -0,0 +1,17 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICwzCCAasCAQAwfjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWEx
EjAQBgNVBAcTCUhvbGx5d29vZDElMCMGA1UEChMcZXhwcmVzcy1iYXR0bGVuZXQt
b2F1dGgtdGVzdDELMAkGA1UECxMCSVQxEjAQBgNVBAMTCWxvY2FsaG9zdDCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWbWCg0evxLwD5Z1lmV9GJQkcBJ
kCY3yZNU2fvxLcK+1PVo0a0aHjXPaBlaU5y3xgazPtU7T6H+DKgW5tKVPPcZsiIj
e8vwH/mE5U3IIzmaxPJZPvpErCHSx9Ite4J7mrt2WcIAy95wjiu1//KkpHxpI11n
oTh87+6QqxV5YZH2L0plHp5IzNJHdb8crvOEsV01g3ymjthQY9OXQHZm9+vHG3Ej
VzHB41Bh3Mk9nq5cCUef10yHbTW8jusyf58CBO4y+ofYs7dlQjPpzmddpFYoIkjW
spZWy+w/6+nPVTkyNZr8jnAhNbjSdbZezpuq8qoCHoCK6XHPecrtJH9ToyECAwEA
AaAAMA0GCSqGSIb3DQEBBQUAA4IBAQBmUj7lzaQpYuRHGRlwmRs52rLZzsNmqcBQ
7/E7QrMKeRYHOuhOJPTvbNbYdDuR9zHenTxJvp2C3Ufw7cl0XoH0swUSu1nix+E3
Wx8TnsDzSkE3dwEgdT4mXD77Ei9FvVOPGZdJkiPvUAeICprI+RhAwMEBpMKGEr57
6stYK+tyQ/FN7WKsRN+tUq7Kjs4+645x45lIwiGqkfDhjjA1GcYkRd9J+Eo+JtNo
NRcLFd+KRatCN0RL5HqBPHBSYd9/WtPJbKujNHU+a3KEoxKPATg8E9Lgs69s6TZP
io5ZcfppFGy/67JtN5LTwH8h0/kQsNV4pJV2NtzhrKx4NfnGUavK
-----END CERTIFICATE REQUEST-----
27 changes: 27 additions & 0 deletions test/keys/localhost.key
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAtZtYKDR6/EvAPlnWWZX0YlCRwEmQJjfJk1TZ+/Etwr7U9WjR
rRoeNc9oGVpTnLfGBrM+1TtPof4MqBbm0pU89xmyIiN7y/Af+YTlTcgjOZrE8lk+
+kSsIdLH0i17gnuau3ZZwgDL3nCOK7X/8qSkfGkjXWehOHzv7pCrFXlhkfYvSmUe
nkjM0kd1vxyu84SxXTWDfKaO2FBj05dAdmb368cbcSNXMcHjUGHcyT2erlwJR5/X
TIdtNbyO6zJ/nwIE7jL6h9izt2VCM+nOZ12kVigiSNayllbL7D/r6c9VOTI1mvyO
cCE1uNJ1tl7Om6ryqgIegIrpcc95yu0kf1OjIQIDAQABAoIBAAxqx7dQB0yy3T0m
JVrQvvnt6llMble+nsC9H35zeh6Dr8nr1dJRI9moCcUaAPeJNTgGD3jC6mn4FeN0
VWn2nEmE70IYTQGftH/6DzenRIlOxMKRSZYRFffmEpWTWIuOagEBUZfLOCVIauAg
PJTZnwmGos1jJYnYOQuFxrzcJMi2//5o4lzy9fCyGnVX1S1K2aVAsTKziZxj1mEI
6+QQJo+57tMGHrOZl6pJHWsfjd/DGeLtAA9PRstkzWUG3e+cVTlGH+Vr9f6foq44
TRWDKUcCzy8fKXhmguBiJkRmY6CjiWKbx0EZ5BV5js1jXvAwzcqrCBHxlZedZggI
EohelYUCgYEA2DUVjNBYoxBk/3C2ZLXi954ZzN0hEa/Pv8DLHn57448aoOVb/+H0
qzgfhibc/y6+pWearW7EERIfp3ZprcnRYkNGC9hc4aGP1ae4AOZfm0TkdpAYiTNc
3vV+PtI3iv6/qZPNktqk55jo6WMmw3MUfy66TwUYPUzZpXm6hdBUtOcCgYEA1wgB
qDV/G+T1w2gIy6IfPnQw/0UoHtcuRcJIrjlF0tc/KEf36tZwxHhr8i+ayBmU9HhH
Q46eZAq6KrVE9ysnyirDRllW8qxV5Go0A3ICnirL6jnWSzuOu9aIn4VcB8F+Xx2R
th7gCzRUBdgJWYJL9FcR86WhM+5my7kciRAq3rcCgYA1Zq8i75bk97iqavFx4Ibl
uBQRSJDRaIY8i2bf6ke5RfBCy0O06N9gpuUKYnD1SltmSTeoHJKq0Lomx5WEijOA
PLOBW3hddmUrVViaSExW8mYnbqHQyXHn0+TRqWR0nUVDojEFU6GlXlwwwP+jCLqI
S0dTGyQIiAG94FoUkQdLAwKBgQC6N4nP1PxN+NtIrSioyK6MFG12M7rJ8ol1CgqN
LrYkIBnm1WSCr9CapLq+0rEVRuozSJJWlAThGFUetTqTXoEn2B6iJq5gnBQKKlr+
/NX9iYxsPEgzgNFcJC7PDtujL9MzpdTRRi26Jkf5g5ydMnR6lojKWo6e/X9yP83R
ePnXQwKBgQCiHjWzMNRbeqjjWtaeb3Wv3QkKGZkwOgrOlqODZcZ4kNalDeh2Q4Ho
cWUsbG4ko8J6yWnnhzRxG2G5Q/W6rpzZWCNsazKaz5LI0svYjWFOyIUvNjO5giFx
udNcjnqrwql/F8xZK7YoiMuM6ltU03NY1lpUh/X4Gd3ThXnhr8DLRw==
-----END RSA PRIVATE KEY-----

0 comments on commit 723c54f

Please sign in to comment.