From 91a62e2808bdb17f787a5b234599c838d4fd5220 Mon Sep 17 00:00:00 2001 From: Waref Haque Date: Tue, 26 Jul 2016 00:13:04 -0400 Subject: search bar validation --- routes/index.js | 83 +++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 54 insertions(+), 29 deletions(-) (limited to 'routes') diff --git a/routes/index.js b/routes/index.js index 347c91a..f71bc74 100644 --- a/routes/index.js +++ b/routes/index.js @@ -2,10 +2,10 @@ var dbFile = require("../node_simple.js"); var express = require('express'); var router = express.Router(); var csrf = require('csurf'); // Cross-Site Request Forgery prevention - +var express_validator = require("express-validator"); var csrfProtection = csrf(); router.use(csrfProtection); // router is protected - +router.use(express_validator); // Remove later var passport_file = require('../config/passport.js'); var bcrypt = require('bcrypt-nodejs'); @@ -13,7 +13,7 @@ var bcrypt = require('bcrypt-nodejs'); /* Render/GET homepage. */ router.get('/', function(req, res, next) { //addFirstAdmin(); - res.render('index'); + res.render('index', {csrfToken: req.csrfToken(), success: req.session.success, errors: req.session.errors}); req.session.errors = null; req.session.success = null; @@ -59,33 +59,59 @@ router.get('/user_solutions', function(req, res, next) { title: 'Thry of Computation' } ] */ + +router.get('/exams/', function(req,res,next){ + req.check('search','Course code should be between 6 and 20 characters').notEmpty().withMessage('Course code required').isLength({min: 6, max: 20}); + + var errors = req.validationErrors(); + if (errors){ + console.log(errors); + req.session.errors = errors; + req.session.success = false; + res.redirect('/'); + } +}); + router.get('/exams/:id', function(req, res, next) { - var minExamInfoArray = []; - dbFile.get_all_exams(req.params.id, function (exams) { - if (exams.length == 0){ - console.log("Nothing was found"); - } - else { - //console.log(exams); - //only pass over the information that is necessary for the exams page - for (var i = 0; i Date: Tue, 26 Jul 2016 01:05:05 -0400 Subject: searchbar validation --- routes/index.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'routes') diff --git a/routes/index.js b/routes/index.js index f71bc74..3c21216 100644 --- a/routes/index.js +++ b/routes/index.js @@ -2,10 +2,8 @@ var dbFile = require("../node_simple.js"); var express = require('express'); var router = express.Router(); var csrf = require('csurf'); // Cross-Site Request Forgery prevention -var express_validator = require("express-validator"); var csrfProtection = csrf(); router.use(csrfProtection); // router is protected -router.use(express_validator); // Remove later var passport_file = require('../config/passport.js'); var bcrypt = require('bcrypt-nodejs'); @@ -61,8 +59,7 @@ router.get('/user_solutions', function(req, res, next) { */ router.get('/exams/', function(req,res,next){ - req.check('search','Course code should be between 6 and 20 characters').notEmpty().withMessage('Course code required').isLength({min: 6, max: 20}); - + req.checkParams('id','Course code should be between 6').notEmpty().withMessage('Course code required').isLength({min: 6, max: 6}); var errors = req.validationErrors(); if (errors){ console.log(errors); @@ -74,7 +71,7 @@ router.get('/exams/', function(req,res,next){ router.get('/exams/:id', function(req, res, next) { - req.check('search','Course code should be between 6 and 20 characters').notEmpty().withMessage('Course code required').isLength({min: 6, max: 20}); + req.checkParams('id','Course code should be between 6 characters').notEmpty().withMessage('Course code required').isLength({min: 6, max: 6}); var errors = req.validationErrors(); if (errors){ -- cgit v1.2.3 From f016bdbc35b7efa44bd63413bde09433ea916c59 Mon Sep 17 00:00:00 2001 From: HumairAK Date: Tue, 26 Jul 2016 03:43:04 -0400 Subject: added some unit testing, need a lot more --- routes/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'routes') diff --git a/routes/index.js b/routes/index.js index 347c91a..220f08d 100644 --- a/routes/index.js +++ b/routes/index.js @@ -96,8 +96,7 @@ router.get('/user/:query', function(req,res,next){ dbFile.search_users(query, function(success, result){ if(success){ - console.log(result); - res.render('user_search', {users : result, query : query}); + res.render('user_search', {users : result, query : query, resultCount: result.length}); req.session.messages = null; }else{ console.log(result); -- cgit v1.2.3 From 9c10936cf1420f160a5007c6baad7b25ffb6d014 Mon Sep 17 00:00:00 2001 From: HumairAK Date: Tue, 26 Jul 2016 16:44:06 -0400 Subject: Added more unit tests, fixed some bugs in the code, fixed voting alert prompts and redirects --- routes/index.js | 70 ++++++++++++++++++++++++++++----------------------------- routes/user.js | 27 ++++++++++++++-------- 2 files changed, 53 insertions(+), 44 deletions(-) (limited to 'routes') diff --git a/routes/index.js b/routes/index.js index cb91765..54bf058 100644 --- a/routes/index.js +++ b/routes/index.js @@ -14,6 +14,7 @@ router.get('/', function(req, res, next) { res.render('index', {csrfToken: req.csrfToken(), success: req.session.success, errors: req.session.errors}); req.session.errors = null; req.session.success = null; + req.session.messages = null; }); @@ -62,7 +63,6 @@ router.get('/exams/', function(req,res,next){ req.checkParams('id','Course code should be between 6').notEmpty().withMessage('Course code required').isLength({min: 6, max: 6}); var errors = req.validationErrors(); if (errors){ - console.log(errors); req.session.errors = errors; req.session.success = false; res.redirect('/'); @@ -153,45 +153,45 @@ router.get('/search/:type', function(req, res, next) { * comments = number of comments*/ router.get('/questions/:exam_id', function (req,res) { var examID = req.params.exam_id; - console.log(examID); dbFile.get_exam_byID(examID, function(success, error, exam){ - /* [ - { q_id: 1, question: 'this is q1' }, - { q_id: 2, question: 'this is q2' } - ] - */ - var qList = exam.questions_list; - - // Add comments/solutions - dbFile.get_exam_info_by_ID(examID, function (questionsInfo) { - qList.forEach(function(question){ - question.count = 0; - question.comments = 0; - - // Find q_id in questionsInfo, update comment/solutions count - questionsInfo.forEach(function(q){ - if (question.q_id == q._id){ - question.count += q.count; - question.comments += q.comments; - } + if(success && exam){ + var qList = exam.questions_list; + // Add comments/solutions + dbFile.get_exam_info_by_ID(examID, function (questionsInfo) { + qList.forEach(function(question){ + question.count = 0; + question.comments = 0; + + // Find q_id in questionsInfo, update comment/solutions count + questionsInfo.forEach(function(q){ + if (question.q_id == q._id){ + question.count += q.count; + question.comments += q.comments; + } + }); }); + + var examInfo = { + id : exam._id, + courseCode : exam.course_code, + term : toProperCase(exam.term), + type : toProperCase(exam.type), + year : exam.year, + instructors : exam.instructors.join(), + uploadDate : exam.upload_date, + uploader : exam.uploaded_by, + pageCount : exam.page_count, + questionCount : exam.questions_count + }; + res.render('questions', {query: qList, examInfo: examInfo}); }); + }else{ + req.session.messages = {error : "Could not find exam."}; + res.redirect('/'); + } + - var examInfo = { - id : exam._id, - courseCode : exam.course_code, - term : toProperCase(exam.term), - type : toProperCase(exam.type), - year : exam.year, - instructors : exam.instructors.join(), - uploadDate : exam.upload_date, - uploader : exam.uploaded_by, - pageCount : exam.page_count, - questionCount : exam.questions_count - }; - res.render('questions', {query: qList, examInfo: examInfo}); - }); }); }); diff --git a/routes/user.js b/routes/user.js index 39ffbf1..6e9815e 100644 --- a/routes/user.js +++ b/routes/user.js @@ -312,20 +312,29 @@ router.post('/comment/submit/:examID/:qID/:solID', function(req, res, next){ } }); -router.post('/solution/vote/:examID/:qID/:solID', loggedIn, function(req, res, next){ +router.post('/solution/vote/:examID/:qID/:solID', function(req, res, next){ var vote = req.body.vote; var examID = req.params.examID; var qID = req.params.qID; var solutionID = req.params.solID; - dbFile.vote_solution(solutionID, vote, function(voteCounted, statusMsg){ - if(voteCounted){ - console.log("Success!"); - }else{ - console.log("Action failed!"); - } - console.log(statusMsg); // Change to display message above + + if(req.isAuthenticated()){ + dbFile.vote_solution(solutionID, vote, function(voteCounted, statusMsg){ + if(voteCounted){ + res.redirect('/solutions/' + examID + '/' + qID); + }else{ + req.session.messages = {error : statusMsg}; + res.redirect('/solutions/' + examID + '/' + qID); + } + }); + } else { //User not logged in + var message = "Must be logged in to Vote!"; + req.session.messages = {error : message}; res.redirect('/solutions/' + examID + '/' + qID); - }); + } + + + }); -- cgit v1.2.3 From 9f65445e7fcd5cc5d9d3183cb280b1ba13ac30b7 Mon Sep 17 00:00:00 2001 From: HumairAK Date: Tue, 26 Jul 2016 17:31:27 -0400 Subject: more unit tests --- routes/index.js | 4 ---- 1 file changed, 4 deletions(-) (limited to 'routes') diff --git a/routes/index.js b/routes/index.js index 54bf058..f8292fc 100644 --- a/routes/index.js +++ b/routes/index.js @@ -241,10 +241,6 @@ router.get('/solutions/:exam_id/:q_num', function (req, res) { }); }); -router.post('/add_solutions/submit', function (req, res) { - //TODO: get the form information for the solutions -}); - /**** Helpers ****/ function addFirstAdmin() { -- cgit v1.2.3