From a3d7edd0c154a5101c387f44d4e40964ab302451 Mon Sep 17 00:00:00 2001 From: Keith Holliday Date: Fri, 18 Mar 2016 14:05:14 -0500 Subject: [PATCH] Renamed namespace to debug and added unit test for middleware --- .../POST-debug_addHourglass.test.js} | 14 ++++---- .../POST-debug_addTenGems.test.js} | 14 ++++---- .../unit/middlewares/ensureDevelpmentMode.js | 36 +++++++++++++++++++ .../api-v3/{development.js => debug.js} | 16 ++++----- ...lopmentMode.js => ensureDevelpmentMode.js} | 2 +- 5 files changed, 59 insertions(+), 23 deletions(-) rename test/api/v3/integration/{development/POST-development_addHourglass.test.js => debug/POST-debug_addHourglass.test.js} (79%) rename test/api/v3/integration/{development/POST-development_addTenGems.test.js => debug/POST-debug_addTenGems.test.js} (79%) create mode 100644 test/api/v3/unit/middlewares/ensureDevelpmentMode.js rename website/src/controllers/api-v3/{development.js => debug.js} (66%) rename website/src/middlewares/api-v3/{developmentMode.js => ensureDevelpmentMode.js} (71%) diff --git a/test/api/v3/integration/development/POST-development_addHourglass.test.js b/test/api/v3/integration/debug/POST-debug_addHourglass.test.js similarity index 79% rename from test/api/v3/integration/development/POST-development_addHourglass.test.js rename to test/api/v3/integration/debug/POST-debug_addHourglass.test.js index 6ef111c130..767fa840f2 100644 --- a/test/api/v3/integration/development/POST-development_addHourglass.test.js +++ b/test/api/v3/integration/debug/POST-debug_addHourglass.test.js @@ -3,15 +3,19 @@ import { generateUser, } from '../../../../helpers/api-v3-integration.helper'; -describe('POST /development/addHourglass', () => { +describe('POST /debug/add-hourglass', () => { let userToGetHourGlass; before(async () => { userToGetHourGlass = await generateUser(); }); + after(() => { + nconf.set('IS_PROD', false); + }); + it('adds Hourglass to the current user', async () => { - await userToGetHourGlass.post('/development/addHourglass'); + await userToGetHourGlass.post('/debug/add-hourglass'); let userWithHourGlass = await userToGetHourGlass.get('/user'); @@ -21,15 +25,11 @@ describe('POST /development/addHourglass', () => { it('returns error when not in production mode', async () => { nconf.set('IS_PROD', true); - await expect(userToGetHourGlass.post('/development/addHourglass')) + await expect(userToGetHourGlass.post('/debug/add-hourglass')) .eventually.be.rejected.and.to.deep.equal({ code: 404, error: 'NotFound', message: 'Not found.', }); }); - - after(() => { - nconf.set('IS_PROD', false); - }); }); diff --git a/test/api/v3/integration/development/POST-development_addTenGems.test.js b/test/api/v3/integration/debug/POST-debug_addTenGems.test.js similarity index 79% rename from test/api/v3/integration/development/POST-development_addTenGems.test.js rename to test/api/v3/integration/debug/POST-debug_addTenGems.test.js index 82594c4d07..fd01aea5d3 100644 --- a/test/api/v3/integration/development/POST-development_addTenGems.test.js +++ b/test/api/v3/integration/debug/POST-debug_addTenGems.test.js @@ -3,15 +3,19 @@ import { generateUser, } from '../../../../helpers/api-v3-integration.helper'; -describe('POST /development/addTenGems', () => { +describe('POST /debug/add-ten-gems', () => { let userToGainTenGems; before(async () => { userToGainTenGems = await generateUser(); }); + after(() => { + nconf.set('IS_PROD', false); + }); + it('adds ten gems to the current user', async () => { - await userToGainTenGems.post('/development/addTenGems'); + await userToGainTenGems.post('/debug/add-ten-gems'); let userWithTenGems = await userToGainTenGems.get('/user'); @@ -21,15 +25,11 @@ describe('POST /development/addTenGems', () => { it('returns error when not in production mode', async () => { nconf.set('IS_PROD', true); - await expect(userToGainTenGems.post('/development/addTenGems')) + await expect(userToGainTenGems.post('/debug/add-ten-gems')) .eventually.be.rejected.and.to.deep.equal({ code: 404, error: 'NotFound', message: 'Not found.', }); }); - - after(() => { - nconf.set('IS_PROD', false); - }); }); diff --git a/test/api/v3/unit/middlewares/ensureDevelpmentMode.js b/test/api/v3/unit/middlewares/ensureDevelpmentMode.js new file mode 100644 index 0000000000..8d0f8efbab --- /dev/null +++ b/test/api/v3/unit/middlewares/ensureDevelpmentMode.js @@ -0,0 +1,36 @@ +/* eslint-disable global-require */ +import { + generateRes, + generateReq, + generateNext, +} from '../../../../helpers/api-unit.helper'; +import ensureDevelpmentMode from '../../../../../website/src/middlewares/api-v3/ensureDevelpmentMode'; +import { NotFound } from '../../../../../website/src/libs/api-v3/errors'; +import nconf from 'nconf'; + +describe('developmentMode middleware', () => { + let res, req, next; + + beforeEach(() => { + res = generateRes(); + req = generateReq(); + next = generateNext(); + }); + + it('returns not found when in production mode', () => { + sandbox.stub(nconf, 'get').withArgs('IS_PROD').returns(true); + + ensureDevelpmentMode(req, res, next); + + expect(next).to.be.calledWith(new NotFound()); + }); + + it('passes when not in production', () => { + sandbox.stub(nconf, 'get').withArgs('IS_PROD').returns(false); + + ensureDevelpmentMode(req, res, next); + + expect(next).to.be.calledOnce; + expect(next.args[0]).to.be.empty; + }); +}); diff --git a/website/src/controllers/api-v3/development.js b/website/src/controllers/api-v3/debug.js similarity index 66% rename from website/src/controllers/api-v3/development.js rename to website/src/controllers/api-v3/debug.js index 2b252bbb8e..1aa5b08ffb 100644 --- a/website/src/controllers/api-v3/development.js +++ b/website/src/controllers/api-v3/debug.js @@ -1,17 +1,17 @@ import { authWithHeaders } from '../../middlewares/api-v3/auth'; import cron from '../../middlewares/api-v3/cron'; -import checkForDevelopmentMode from '../../middlewares/api-v3/developmentMode'; +import ensureDevelpmentMode from '../../middlewares/api-v3/ensureDevelpmentMode'; let api = {}; -api.development = { +api.debug = { method: 'all', - url: '/development/*', - middlewares: [checkForDevelopmentMode, authWithHeaders(), cron], + url: '/debug/*', + middlewares: [ensureDevelpmentMode, authWithHeaders(), cron], }; /** - * @api {post} /development/addTenGems Add ten gems to the current user + * @api {post} /debug/add-ten-gems Add ten gems to the current user * @apiVersion 3.0.0 * @apiName AddTenGems * @apiGroup Development @@ -20,7 +20,7 @@ api.development = { */ api.addTenGems = { method: 'POST', - url: '/development/addTenGems', + url: '/debug/add-ten-gems', async handler (req, res) { let user = res.locals.user; @@ -33,7 +33,7 @@ api.addTenGems = { }; /** - * @api {post} /development/addHourglass Add Hourglass to the current user + * @api {post} /debug/add-hourglass Add Hourglass to the current user * @apiVersion 3.0.0 * @apiName AddHourglass * @apiGroup Development @@ -42,7 +42,7 @@ api.addTenGems = { */ api.addHourglass = { method: 'POST', - url: '/development/addHourglass', + url: '/debug/add-hourglass', async handler (req, res) { let user = res.locals.user; diff --git a/website/src/middlewares/api-v3/developmentMode.js b/website/src/middlewares/api-v3/ensureDevelpmentMode.js similarity index 71% rename from website/src/middlewares/api-v3/developmentMode.js rename to website/src/middlewares/api-v3/ensureDevelpmentMode.js index 5c068df0ab..98f70d33f5 100644 --- a/website/src/middlewares/api-v3/developmentMode.js +++ b/website/src/middlewares/api-v3/ensureDevelpmentMode.js @@ -3,7 +3,7 @@ import { NotFound, } from '../../libs/api-v3/errors'; -module.exports = function checkForDevelopmentMode (req, res, next) { +module.exports = function ensureDevelpmentMode (req, res, next) { if (nconf.get('IS_PROD')) { next(new NotFound()); } else {