diff --git a/app/controllers/forms.server.controller.js b/app/controllers/forms.server.controller.js index 32721440..129be700 100644 --- a/app/controllers/forms.server.controller.js +++ b/app/controllers/forms.server.controller.js @@ -9,7 +9,8 @@ var mongoose = require('mongoose'), FormSubmission = mongoose.model('FormSubmission'), config = require('../../config/config'), diff = require('deep-diff'), - _ = require('lodash'); + _ = require('lodash'), + helpers = require('./helpers.server.controller'); /** * Delete a forms submissions @@ -96,7 +97,7 @@ exports.listSubmissions = function(req, res) { exports.create = function(req, res) { if(!req.body.form){ - return res.status(401).send({ + return res.status(400).send({ message: 'Invalid Input' }); } @@ -104,14 +105,15 @@ exports.create = function(req, res) { form.admin = req.user._id; - form.save(function(err) { + form.save(function(err, createdForm) { if (err) { return res.status(500).send({ message: errorHandler.getErrorMessage(err) }); } - return res.json(form); + createdForm = helpers.removeSensitiveModelData('private_form', createdForm); + return res.json(createdForm); }); }; @@ -132,6 +134,8 @@ exports.read = function(req, res) { message: 'Form Does Not Exist' }); } + + newForm = helpers.removeSensitiveModelData('private_form', newForm); return res.json(newForm); } }; @@ -147,9 +151,7 @@ var readForRender = exports.readForRender = function(req, res) { }); } - delete newForm.lastModified; - delete newForm.__v; - delete newForm.created; + newForm = helpers.removeSensitiveModelData('public_form', newForm); if(newForm.startPage && !newForm.startPage.showStart){ delete newForm.startPage; @@ -165,11 +167,8 @@ exports.update = function(req, res) { var form = req.form; var updatedForm = req.body.form; - if(form.form_fields === undefined){ - form.form_fields = []; - } - - if(form.analytics === undefined){ + + if(!form.analytics){ form.analytics = { visitors: [], gaCode: '' @@ -213,6 +212,7 @@ exports.update = function(req, res) { message: errorHandler.getErrorMessage(err) }); } else { + savedForm = helpers.removeSensitiveModelData('private_form', savedForm); res.json(savedForm); } }); @@ -254,6 +254,8 @@ exports.list = function(req, res) { }); } else { for(var i=0; i should be able to read/get a Form if not signed in', function(done) { + it(' > should be able to read/get a live Form if not signed in', function(done) { // Create new Form model instance var FormObj = new Form(myForm); @@ -104,6 +104,23 @@ describe('Form Routes Unit tests', function() { }); }); + it(' > should be able to read/get a non-live Form if not signed in', function(done) { + // Create new Form model instance + var FormObj = new Form(myForm); + FormObj.isLive = false; + + // Save the Form + FormObj.save(function(err, form) { + if(err) return done(err); + + userSession.get('/subdomain/' + credentials.username + '/forms/' + form._id + '/render') + .expect(401, {message: 'Form is Not Public'}) + .end(function(err, res) { + done(err); + }); + }); + }); + it(' > should not be able to delete an Form if not signed in', function(done) { // Set Form user myForm.admin = user; @@ -145,6 +162,16 @@ describe('Form Routes Unit tests', function() { }); }); + it(' > should not be able to create a Form if body is empty', function(done) { + loginSession.post('/forms') + .send({form: null}) + .expect(400, {"message":"Invalid Input"}) + .end(function(FormSaveErr, FormSaveRes) { + // Call the assertion callback + done(FormSaveErr); + }); + }); + it(' > should not be able to save a Form if no title is provided', function(done) { // Set Form with a invalid title field myForm.title = ''; @@ -167,7 +194,20 @@ describe('Form Routes Unit tests', function() { }); - it(' > should be able to update a Form if signed in', function(done) { + it(' > should be able to create a Form if form_fields are undefined', function(done) { + myForm.analytics = null; + myForm.form_fields = null; + + loginSession.post('/forms') + .send({form: myForm}) + .expect(200) + .end(function(FormSaveErr, FormSaveRes) { + // Call the assertion callback + done(FormSaveErr); + }); + }); + + it(' > should be able to update a Form if signed in and Form is valid', function(done) { // Save a new Form loginSession.post('/forms') @@ -181,7 +221,7 @@ describe('Form Routes Unit tests', function() { } // Update Form title - myForm.title = 'WHY YOU GOTTA BE SO MEAN?'; + myForm.title = 'WHY YOU GOTTA BE SO FORMULAIC?'; // Update an existing Form loginSession.put('/forms/' + FormSaveRes.body._id) @@ -196,7 +236,7 @@ describe('Form Routes Unit tests', function() { // Set assertions (FormUpdateRes.body._id).should.equal(FormSaveRes.body._id); - (FormUpdateRes.body.title).should.match('WHY YOU GOTTA BE SO MEAN?'); + (FormUpdateRes.body.title).should.match(myForm.title); // Call the assertion callback done();