diff --git a/test/api/v3/integration/debug/POST-debug_make-admin.test.js b/test/api/v3/integration/debug/POST-debug_make-admin.test.js new file mode 100644 index 0000000000..9247e09503 --- /dev/null +++ b/test/api/v3/integration/debug/POST-debug_make-admin.test.js @@ -0,0 +1,35 @@ +import nconf from 'nconf'; +import { + generateUser, +} from '../../../../helpers/api-v3-integration.helper'; + +describe('POST /debug/make-admin', () => { + let user; + + before(async () => { + user = await generateUser(); + }); + + afterEach(() => { + nconf.set('IS_PROD', false); + }); + + it('makes user an admine', async () => { + await user.post('/debug/make-admin'); + + await user.sync(); + + expect(user.contributor.admin).to.eql(true); + }); + + it('returns error when not in production mode', async () => { + nconf.set('IS_PROD', true); + + await expect(user.post('/debug/make-admin')) + .eventually.be.rejected.and.to.deep.equal({ + code: 404, + error: 'NotFound', + message: 'Not found.', + }); + }); +}); diff --git a/test/api/v3/integration/debug/POST-debug_update-user.test.js b/test/api/v3/integration/debug/POST-debug_set-cron.test.js similarity index 52% rename from test/api/v3/integration/debug/POST-debug_update-user.test.js rename to test/api/v3/integration/debug/POST-debug_set-cron.test.js index f3c77bc89a..c737831d95 100644 --- a/test/api/v3/integration/debug/POST-debug_update-user.test.js +++ b/test/api/v3/integration/debug/POST-debug_set-cron.test.js @@ -3,47 +3,33 @@ import { generateUser, } from '../../../../helpers/api-v3-integration.helper'; -describe('POST /debug/update-user', () => { +describe('POST /debug/set-cron', () => { let user; before(async () => { user = await generateUser(); }); - after(() => { + afterEach(() => { nconf.set('IS_PROD', false); }); - xit('sets protected values', async () => { + it('sets last cron', async () => { let newCron = new Date(2015, 11, 20); - await user.post('/debug/update-user', { - balance: 100, + await user.post('/debug/set-cron', { lastCron: newCron, }); await user.sync(); expect(user.lastCron).to.eql(newCron); - expect(user.balance).to.eql(100); - }); - - xit('sets nested values', async () => { - await user.post('/debug/update-user', { - 'contributor.level': 9, - 'purchased.txnCount': 100, - }); - - await user.sync(); - - expect(user.contributor.level).to.eql(9); - expect(user.purchased.txnCount).to.eql(100); }); it('returns error when not in production mode', async () => { nconf.set('IS_PROD', true); - await expect(user.post('/debug/update-user')) + await expect(user.post('/debug/set-cron')) .eventually.be.rejected.and.to.deep.equal({ code: 404, error: 'NotFound', diff --git a/website/client/js/services/userServices.js b/website/client/js/services/userServices.js index b169f12672..32540db6c4 100644 --- a/website/client/js/services/userServices.js +++ b/website/client/js/services/userServices.js @@ -259,7 +259,7 @@ angular.module('habitrpg') $http({ method: "POST", - url: 'api/v3/debug/update-user', + url: 'api/v3/debug/set-cron', data: { lastCron: date } @@ -272,10 +272,7 @@ angular.module('habitrpg') makeAdmin: function () { $http({ method: "POST", - url: 'api/v3/debug/update-user', - data: { - 'contributor.admin': true - } + url: 'api/v3/debug/make-admin' }) .then(function (response) { Notification.text('You are now an admin! Go to the Hall of Heroes to change your contributor level.'); diff --git a/website/server/controllers/api-v3/debug.js b/website/server/controllers/api-v3/debug.js index 71bba17198..da00319578 100644 --- a/website/server/controllers/api-v3/debug.js +++ b/website/server/controllers/api-v3/debug.js @@ -1,6 +1,5 @@ import { authWithHeaders } from '../../middlewares/api-v3/auth'; import ensureDevelpmentMode from '../../middlewares/api-v3/ensureDevelpmentMode'; -// import _ from 'lodash'; let api = {}; @@ -53,7 +52,7 @@ api.addHourglass = { }; /** - * @api {post} /api/v3/debug/set-property Sets properties on user, even protected fields + * @api {post} /api/v3/debug/set-cron Sets lastCron for user * @apiDescription Only available in development mode. * @apiVersion 3.0.0 * @apiName setCron @@ -61,21 +60,44 @@ api.addHourglass = { * * @apiSuccess {Object} data An empty Object */ -// api.setCron = { -// method: 'POST', -// url: '/debug/update-user', -// middlewares: [ensureDevelpmentMode, authWithHeaders()], -// async handler (req, res) { -// let user = res.locals.user; -// -// _.each(req.body, (value, key) => { -// _.set(user, key, value); -// }); -// -// await user.save(); -// -// res.respond(200, {}); -// }, -// }; +api.setCron = { + method: 'POST', + url: '/debug/set-cron', + middlewares: [ensureDevelpmentMode, authWithHeaders()], + async handler (req, res) { + let user = res.locals.user; + let cron = req.body.lastCron; + + user.lastCron = cron; + + await user.save(); + + res.respond(200, {}); + }, +}; + +/** + * @api {post} /api/v3/debug/make-admin Sets contributor.admin to true + * @apiDescription Only available in development mode. + * @apiVersion 3.0.0 + * @apiName setCron + * @apiGroup Development + * + * @apiSuccess {Object} data An empty Object + */ +api.makeAdmin = { + method: 'POST', + url: '/debug/make-admin', + middlewares: [ensureDevelpmentMode, authWithHeaders()], + async handler (req, res) { + let user = res.locals.user; + + user.contributor.admin = true; + + await user.save(); + + res.respond(200, {}); + }, +}; module.exports = api;