From a0a558041e516151a3fca6ffeb20d13b8dab1c7a Mon Sep 17 00:00:00 2001
From: Lucas Gabriel Lima <lgl15@inf.ufpr.br>
Date: Wed, 11 Jan 2017 10:35:17 -0200
Subject: [PATCH 1/6] add validators to model

---
 src/libs/models/user.js | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/libs/models/user.js b/src/libs/models/user.js
index 8c4f92a2..b334e87f 100644
--- a/src/libs/models/user.js
+++ b/src/libs/models/user.js
@@ -8,48 +8,48 @@ const Schema = mongoose.Schema;
 var UserSchema = new Schema({
     email: {
         type: String,
-        unique: true,
-        required: true
+        unique: true, 
+        required: [true, 'O campo Email é obrigatório.']
     },
     password: {
         type: String,
-        required: true
+        required: [true, 'O campo Senha é obrigatório.']
     },
     name: {
         type: String,
-        required: true
+        required: [true, 'O campo Nome é obrigatório.']
     },
     cpf:{
         type: String,
-        unique: true,
-        required: true
+        unique: [true, 'O CPF informado já está cadastrado.'],
+        required: [true, 'O campo CPF é obrigatório.']
     },
     schooling: {
         type: String,
-        required: true
+        required: [true, 'O campo Escolaridade é obrigatório.']
     },
     course: {
         type: String,
     },
     segment: {
         type: String,
-        required: true
+        required: [true, 'O campo Segmento é obrigatório.']
     },
     role: {
         type: String,
-        required: true
+        required: [true, 'O campo Função é obrigatório.']
     },
     institution_name: {
         type: String,
-        required: true
+        required: [true, 'O campo Instituição em que trabalha é obrigatório.']
     },
     state: {
         type: String,
-        required: true
+        required: [true, 'O campo Estado é obrigatório.']
     },
     city: {
         type: String,
-        required: true
+        required: [true, 'O campo Cidade é obrigatório.']
     },
     receive_emails: {
         type: Boolean
-- 
GitLab


From 32fbeca7dd923999417b6258cefd2f09a7d0180f Mon Sep 17 00:00:00 2001
From: Lucas Gabriel Lima <lgl15@inf.ufpr.br>
Date: Fri, 13 Jan 2017 10:30:58 -0200
Subject: [PATCH 2/6] small fix on model validation

---
 src/libs/models/user.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/libs/models/user.js b/src/libs/models/user.js
index b334e87f..572e5239 100644
--- a/src/libs/models/user.js
+++ b/src/libs/models/user.js
@@ -8,7 +8,7 @@ const Schema = mongoose.Schema;
 var UserSchema = new Schema({
     email: {
         type: String,
-        unique: true, 
+        unique: true,
         required: [true, 'O campo Email é obrigatório.']
     },
     password: {
@@ -21,7 +21,7 @@ var UserSchema = new Schema({
     },
     cpf:{
         type: String,
-        unique: [true, 'O CPF informado já está cadastrado.'],
+        unique: true,
         required: [true, 'O campo CPF é obrigatório.']
     },
     schooling: {
-- 
GitLab


From b438056687d1f8c64adf56ce6e4ea083b724035b Mon Sep 17 00:00:00 2001
From: Lucas Gabriel Lima <lgl15@inf.ufpr.br>
Date: Fri, 13 Jan 2017 10:31:25 -0200
Subject: [PATCH 3/6] moved validations from route to model

---
 src/libs/routes/user.js | 93 +++++++----------------------------------
 1 file changed, 16 insertions(+), 77 deletions(-)

diff --git a/src/libs/routes/user.js b/src/libs/routes/user.js
index eb1732b1..f29766ae 100644
--- a/src/libs/routes/user.js
+++ b/src/libs/routes/user.js
@@ -21,83 +21,17 @@ function emailSyntax(email) {
 }
 
 userApp.post('/', (req, res, next) => {
-    if (!req.body.email) {
-        res.json({success: false, msg: 'O campo Email é obrigatório.'});
-    } else {
-        next();
-    }
-
-}, (req, res, next) => {
-    if (!req.body.password) {
-        res.json({success: false, msg: 'O campo Senha é obrigatório.'});
-    } else {
-        next();
-    }
-
-}, (req, res, next) => {
-    if(!emailSyntax(req.body.email)){
-        res.json({success: false, msg: 'O email informado é inválido.'});
-    } else {
-        next();
-    }
-
-}, (req, res, next) => {
-    if (!req.body.name) {
-        res.json({success: false, msg: 'O campo Nome é obrigatório.'});
-    } else {
-        next();
-    }
-
-}, (req, res, next) => {
-    if (!req.body.cpf) {
-        res.json({success: false, msg: 'O campo CPF é obrigatório.'});
-    } else {
-        next();
-    }
-
-}, (req, res, next) => {
-    if (!req.body.schooling) {
-        res.json({success: false, msg: 'O campo Escolaridade é obrigatório.'});
-    } else {
-        next();
-    }
-
-}, (req, res, next) => {
-    if (!req.body.segment) {
-        res.json({success: false, msg: 'O campo Segmento é obrigatório.'});
-    } else {
-        next();
-    }
-
-}, (req, res, next) => {
-    if (!req.body.role) {
-        res.json({success: false, msg: 'O campo Função é obrigatório.'});
-    } else {
-        next();
-    }
-
-}, (req, res, next) => {
-    if (!req.body.institution_name) {
-        res.json({success: false, msg: 'O campo Instituição em que trabalha é obrigatório.'});
-    } else {
-        next();
-    }
-
-}, (req, res, next) => {
-    if (!req.body.city) {
-        res.json({success: false, msg: 'O campo Cidade é obrigatório.'});
-    } else {
-        next();
-    }
-
-}, (req, res, next) => {
-    if (!req.body.state) {
-        res.json({success: false, msg: 'O campo Estado é obrigatório.'});
+    if(req.body.email){
+        if(!emailSyntax(req.body.email)){
+            res.json({success: false, msg: 'O email informado é inválido.'});
+        } else {
+            next();
+        }
     } else {
         next();
     }
-
-}, (req, res, next) => {
+},
+ (req, res, next) => {
     User.count({'email': req.body.email}, function(err, count){
         if (err){
             log.error('MongoDB error: ' + err);
@@ -141,9 +75,14 @@ userApp.post('/', (req, res, next) => {
 
     // save the user
     newUser.save((err) => {
-        if (err) {
-            res.json({success: false, msg: 'Um erro ocorreu no banco de dados.'});
-        } else {
+        if (err){
+            let errMsg = [];
+            for (var e in err.errors) {
+                    errMsg.push(err.errors[`${e}`].message);
+            }
+            res.json({success: false, msg: errMsg[0]});
+        }
+         else {
             res.json({success: true, msg: 'Usuário cadastrado com sucesso!'});
         }
     });
-- 
GitLab


From f35eee596b5377946fe7d5ee6cddfea9494c5427 Mon Sep 17 00:00:00 2001
From: Lucas Gabriel Lima <lgl15@inf.ufpr.br>
Date: Mon, 16 Jan 2017 09:26:23 -0200
Subject: [PATCH 4/6] fix formating

---
 src/libs/routes/user.js | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/libs/routes/user.js b/src/libs/routes/user.js
index f29766ae..c8320c0d 100644
--- a/src/libs/routes/user.js
+++ b/src/libs/routes/user.js
@@ -76,11 +76,20 @@ userApp.post('/', (req, res, next) => {
     // save the user
     newUser.save((err) => {
         if (err){
-            let errMsg = [];
+            let errArray = [];
+            let errMsg = '';
             for (var e in err.errors) {
-                    errMsg.push(err.errors[`${e}`].message);
+                    errArray.push(err.errors[`${e}`].message);
             }
-            res.json({success: false, msg: errMsg[0]});
+            for (var i = 0; i < errArray.length; i++) {
+                    if(i > 0){
+                        errMsg = '\n' + errMsg + errArray[i];
+                    }
+                    else{
+                        errMsg = errMsg + errArray[i];
+                    }
+            }
+            res.json({success: false, msg: errMsg});
         }
          else {
             res.json({success: true, msg: 'Usuário cadastrado com sucesso!'});
-- 
GitLab


From 5fcee9e5981749f6ca8f5bf59200e67e47f404bc Mon Sep 17 00:00:00 2001
From: Vytor Calixto <vytorcalixto@gmail.com>
Date: Mon, 16 Jan 2017 09:52:01 -0200
Subject: [PATCH 5/6] :green_heart: Change code coverage threshold in gulpfile

---
 gulpfile.babel.js | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/gulpfile.babel.js b/gulpfile.babel.js
index b2758b0a..7b74ae0e 100644
--- a/gulpfile.babel.js
+++ b/gulpfile.babel.js
@@ -78,7 +78,12 @@ gulp.task('test', ['pre-test'], () => {
     .pipe(istanbul.writeReports())
     .pipe(istanbul.enforceThresholds({
         thresholds: {
-            global: 80 
+            global: {
+                statements: 80,
+                branches: 75,
+                lines: 80,
+                functions: 80
+            } 
         }
     }))
     .on('error', () => {
-- 
GitLab


From 0ba9c947d0d237f2a576f923c29e212ec90eec82 Mon Sep 17 00:00:00 2001
From: Vytor Calixto <vytorcalixto@gmail.com>
Date: Tue, 17 Jan 2017 09:39:32 -0200
Subject: [PATCH 6/6] :bug: Fix a bug with bcrypt-nodejs

---
 src/libs/models/user.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/libs/models/user.js b/src/libs/models/user.js
index 59786097..9b9c2fa5 100644
--- a/src/libs/models/user.js
+++ b/src/libs/models/user.js
@@ -64,7 +64,7 @@ UserSchema.pre('save', function (next) {
             if (err) {
                 return next(err);
             }
-            bcrypt.hash(user.password, salt, function (err, hash) {
+            bcrypt.hash(user.password, salt, null, function (err, hash) {
                 if (err) {
                     return next(err);
                 }
-- 
GitLab