From 5bdaf2cf91edcc3d3f98cfb799a85b5921b7135c Mon Sep 17 00:00:00 2001 From: ivaosthu Date: Fri, 11 Nov 2016 16:24:16 +0100 Subject: [PATCH] Add unit-test for /health route --- lib/routes/health-check.js | 4 +-- test/unit/routes/health-check.js | 49 ++++++++++++++++++++++++++++++++ test/unit/routes/mocks/store.js | 12 +++++++- 3 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 test/unit/routes/health-check.js diff --git a/lib/routes/health-check.js b/lib/routes/health-check.js index a21fa6312d..7598614355 100644 --- a/lib/routes/health-check.js +++ b/lib/routes/health-check.js @@ -6,9 +6,7 @@ module.exports = function (app, config) { app.get('/health', (req, res) => { config.stores.db.select(1) .from('features') - .then(() => { - res.json({ health: 'GOOD' }); - }) + .then(() => res.json({ health: 'GOOD' })) .catch(err => { logger.error('Could not select from features, error was: ', err); res.status(500).json({ health: 'BAD' }); diff --git a/test/unit/routes/health-check.js b/test/unit/routes/health-check.js new file mode 100644 index 0000000000..21b0272aa9 --- /dev/null +++ b/test/unit/routes/health-check.js @@ -0,0 +1,49 @@ +'use strict'; + +const store = require('./mocks/store'); + + +const supertest = require('supertest'); +const assert = require('assert'); +const sinon = require('sinon'); + +let request; +let db; + +describe('Unit: The health cheack api', () => { + beforeEach(done => { + const stores = store.createStores(); + db = stores.db; + const app = require('../../../app')({ + baseUriPath: '', + stores: stores, + }); + request = supertest(app); + done(); + }); + + it('should give 500 when db is failing', (done) => { + db.select = () => from = () => Promise.reject(); + + request + .get('/health') + .expect(500, done); + }); + + it('should give 200 when db is not failing', (done) => { + request + .get('/health') + .expect(200, done) + }); + + it('should give health=GOOD when db is not failing', (done) => { + request + .get('/health') + .expect(200) + .end((err, res) => { + assert.equal(res.status, 200) + assert.equal(res.body.health, 'GOOD'); + done(); + }); + }); +}); diff --git a/test/unit/routes/mocks/store.js b/test/unit/routes/mocks/store.js index 05f1400785..4f31e28f86 100644 --- a/test/unit/routes/mocks/store.js +++ b/test/unit/routes/mocks/store.js @@ -6,8 +6,18 @@ const clientInstanceStore = require('./fake-client-instance-store'); const featureToggleStore = require('./fake-feature-toggle-store'); const strategyStore = require('./fake-strategies-store'); + + module.exports = { createStores: () => { + const db = { + select: () => { + return { + from: () => Promise.resolve() + } + } + } + clientMetricsStore.reset(); clientStrategyStore.reset(); clientInstanceStore.reset(); @@ -15,7 +25,7 @@ module.exports = { strategyStore.reset(); return { - db: sinon.stub(), + db, clientMetricsStore, clientStrategyStore, clientInstanceStore,