From 41661190350421d5dad513c114d3a97612273573 Mon Sep 17 00:00:00 2001 From: pi-victor Date: Mon, 11 Apr 2016 20:52:20 +0200 Subject: [PATCH] add sample tests for post commit hook --- .gitignore | 3 +- openshift/templates/nodejs-mongodb.json | 5 ++- openshift/templates/nodejs.json | 5 ++- package.json | 13 ++++-- server.js | 56 ++++++++++++++----------- tests/app_test.js | 29 +++++++++++++ 6 files changed, 80 insertions(+), 31 deletions(-) create mode 100644 tests/app_test.js diff --git a/.gitignore b/.gitignore index 096746c..57289ac 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -/node_modules/ \ No newline at end of file +/node_modules/ +npm-debug.log \ No newline at end of file diff --git a/openshift/templates/nodejs-mongodb.json b/openshift/templates/nodejs-mongodb.json index 3298ef4..d8df08b 100644 --- a/openshift/templates/nodejs-mongodb.json +++ b/openshift/templates/nodejs-mongodb.json @@ -112,7 +112,10 @@ "secret": "${GENERIC_WEBHOOK_SECRET}" } } - ] + ], + "postCommit": { + "script": "npm test" + }, } }, { diff --git a/openshift/templates/nodejs.json b/openshift/templates/nodejs.json index 82df67c..8df7671 100644 --- a/openshift/templates/nodejs.json +++ b/openshift/templates/nodejs.json @@ -112,7 +112,10 @@ "secret": "${GENERIC_WEBHOOK_SECRET}" } } - ] + ], + "postCommit": { + "script": "npm test" + }, } }, { diff --git a/package.json b/package.json index cbf7694..32173ad 100644 --- a/package.json +++ b/package.json @@ -4,16 +4,21 @@ "description": "Node.js sample app for OpenShift 3", "main": "server.js", "dependencies": { - "express": "*", - "mongodb": "*", - "ejs": "*" + "chai": "^3.5.0", + "chai-http": "^2.0.1", + "ejs": "^2.4.1", + "express": "^4.13.4", + "mocha": "^2.4.5", + "mongodb": "^2.1.16", + "morgan": "^1.7.0" }, "engine": { "node": "*", "npm": "*" }, "scripts": { - "start": "node server.js" + "start": "node server.js", + "test": "IP=0.0.0.0 PORT=3030 mocha --timeout 5000 tests/*_test.js" }, "repository": { "type": "git", diff --git a/server.js b/server.js index 49f989d..38fd2ee 100644 --- a/server.js +++ b/server.js @@ -1,38 +1,44 @@ // OpenShift sample Node application -var express = require('express'); -var fs = require('fs'); -var app = express(); -var eps = require('ejs'); +var express = require('express'), + fs = require('fs'), + app = express(), + eps = require('ejs'), + morgan = require('morgan'); app.engine('html', require('ejs').renderFile); +app.use(morgan('combined')) + +var port = process.env.PORT || process.env.OPENSHIFT_NODEJS_PORT || 8080, + ip = process.env.IP || process.env.OPENSHIFT_NODEJS_IP || '0.0.0.0', + mongoURL = process.env.OPENSHIFT_MONGODB_DB_URL || process.env.MONGO_URL, + mongoURLLabel = ""; -var port = process.env.PORT || process.env.OPENSHIFT_NODEJS_PORT || 8080; -var ip = process.env.IP || process.env.OPENSHIFT_NODEJS_IP || '0.0.0.0'; -var mongoURL = process.env.OPENSHIFT_MONGODB_DB_URL || process.env.MONGO_URL; -var mongoURLLabel = ""; if (mongoURL == null && process.env.DATABASE_SERVICE_NAME) { - var mongoServiceName = process.env.DATABASE_SERVICE_NAME.toUpperCase(); - var mongoHost = process.env[mongoServiceName + "_SERVICE_HOST"]; - var mongoPort = process.env[mongoServiceName + "_SERVICE_PORT"]; - var mongoUser = process.env.MONGODB_USER - if (mongoHost && mongoPort && process.env.MONGODB_DATABASE) { + var mongoServiceName = process.env.DATABASE_SERVICE_NAME.toUpperCase(), + mongoHost = process.env[mongoServiceName + '_SERVICE_HOST'], + mongoPort = process.env[mongoServiceName + '_SERVICE_PORT'], + mongoDatabase = process.env[mongoServiceName + '_DATABASE'], + mongoPassword = process.env[mongoServiceName + '_PASSWORD'] + mongoUser = process.env[mongoServiceName + '_USER']; + + if (mongoHost && mongoPort && mongoDatabase) { mongoURLLabel = mongoURL = 'mongodb://'; - if (process.env.MONGODB_USER && process.env.MONGODB_PASSWORD) { - mongoURL += process.env.MONGODB_USER + ':' + process.env.MONGODB_PASSWORD + '@'; + if (mongoUser && mongoPassword) { + mongoURL += mongoUser + ':' + mongoPassword + '@'; } // Provide UI label that excludes user id and pw + mongoURLLabel += mongoHost + ':' + mongoPort + '/' + mongoDatabase; + mongoURL += mongoHost + ':' + mongoPort + '/' + mongoDatabase; - mongoURLLabel += mongoHost + ':' + mongoPort + '/' + process.env.MONGODB_DATABASE; - mongoURL += mongoHost + ':' + mongoPort + '/' + process.env.MONGODB_DATABASE; } } -var db = null; -var dbDetails = new Object(); +var db = null, + dbDetails = new Object(); var initDb = function(callback) { if (mongoURL == null) return; - var mongodb = require('mongodb'); + var mongodb = require('mongodb'); if (mongodb == null) return; mongodb.connect(mongoURL, function(err, conn) { @@ -46,7 +52,7 @@ var initDb = function(callback) { dbDetails.url = mongoURLLabel; dbDetails.type = 'MongoDB'; - console.log("Connected to MongoDB at: " + mongoURL); + console.log('Connected to MongoDB at: %s', mongoURL); }); }; @@ -66,9 +72,9 @@ app.get('/', function (req, res) { app.get('/pagecount', function (req, res) { if (db) { db.collection('counts').count(function(err, count ){ - res.send('{ pageCount: ' + count +'}'); + res.send('{ pageCount: ' + count + '}'); }); - } else { + } else { res.send('{ pageCount: -1 }'); } }); @@ -84,4 +90,6 @@ initDb(function(err){ }); app.listen(port, ip); -console.log('Server running on ' + ip + ':' + port); +console.log('Server running on http://%s:%s', ip, port); + +module.exports = app ; diff --git a/tests/app_test.js b/tests/app_test.js new file mode 100644 index 0000000..fe58226 --- /dev/null +++ b/tests/app_test.js @@ -0,0 +1,29 @@ +var server = require('../server'), + chai = require('chai'), + chaiHttp = require('chai-http'), + should = chai.should(); + +chai.use(chaiHttp); + +describe('Basic routes tests', function() { + + it('GET to / should return 200', function(done){ + chai.request(server) + .get('/') + .end(function(err, res) { + res.should.have.status(200); + done(); + }) + + }) + + it('GET to /pagecount should return 200', function(done){ + chai.request(server) + .get('/pagecount') + .end(function(err, res) { + res.should.have.status(200); + done(); + }) + + }) +})