From e7b4b1565505a80605593ce1285379509881ca2c Mon Sep 17 00:00:00 2001 From: Blessing Philips Date: Wed, 2 Aug 2017 13:27:49 +0100 Subject: [PATCH 1/4] chore(feedback): Implement feedback --- server/controllers/DocumentController.js | 16 +++- server/controllers/RoleController.js | 11 +-- server/controllers/UserController.js | 94 ++++++++++++++++-------- server/test/api/role.spec.js | 4 +- server/test/api/user.spec.js | 4 +- 5 files changed, 88 insertions(+), 41 deletions(-) diff --git a/server/controllers/DocumentController.js b/server/controllers/DocumentController.js index f203e6d..afcceec 100644 --- a/server/controllers/DocumentController.js +++ b/server/controllers/DocumentController.js @@ -110,7 +110,7 @@ class DocumentController { }); }) .catch((error) => { - res.status(400).json(error); + res.status(500).json({ message: 'Server Error', error }); }); } @@ -129,7 +129,7 @@ class DocumentController { }); } return res.status(200).json(document); - }).catch(error => res.status(400).json(error)); + }).catch(error => res.status(500).json({ message: 'Server Error', error })); } /** @@ -140,6 +140,11 @@ class DocumentController { */ static update(req, res) { return Document.findById(req.params.documentId).then((document) => { + if (!document) { + return res.status(404).json({ + message: 'Document Not Found' + }); + } return document .update(req.body) .then(() => res.status(200).json(document)) @@ -155,9 +160,14 @@ class DocumentController { */ static delete(req, res) { return Document.findById(req.params.documentId).then((document) => { + if (!document) { + return res.status(404).json({ + message: 'Document Not Found' + }); + } return document.destroy() .then(() => res.send(200)) - .catch(error => res.status(400).json(error)); + .catch(error => res.status(500).json({ message: 'Server Error', error })); }); } } diff --git a/server/controllers/RoleController.js b/server/controllers/RoleController.js index 1a6db1a..e6d1160 100644 --- a/server/controllers/RoleController.js +++ b/server/controllers/RoleController.js @@ -29,7 +29,7 @@ class RoleController { static list(req, res) { return Role.all() .then(roles => res.status(200).json(roles)) - .catch(error => res.status(400).json(error)); + .catch(error => res.status(500).json({ message: 'Server Error', error })); } /** @@ -48,7 +48,7 @@ class RoleController { } return res.status(200).json(roles); }) - .catch(error => res.status(400).json(error)); + .catch(error => res.status(400).json(error)); } /** @@ -72,7 +72,7 @@ class RoleController { .then(() => res.status(200).json(roles)) .catch(error => res.status(400).json(error)); }) - .catch(error => res.status(400).json(error)); + .catch(error => res.status(500).json(error)); } /** @@ -91,9 +91,10 @@ class RoleController { } return roles .destroy() - .then(() => res.send(200)); + .then(() => res.send(200)) + .catch(error => res.status(500).json({ message: 'Server Error', error })); }) - .catch(error => res.status(400).json(error)); + .catch(error => res.status(500).json(error)); } } diff --git a/server/controllers/UserController.js b/server/controllers/UserController.js index 1917066..2bd60c7 100644 --- a/server/controllers/UserController.js +++ b/server/controllers/UserController.js @@ -136,7 +136,7 @@ class UserController { return res.status(401).json({ message: 'Wrong Password' }); } }) - .catch(error => res.status(400).json(error)); + .catch(error => res.status(500).json({ message: 'Server Error', error })); } /** @@ -168,7 +168,8 @@ class UserController { $or: [ { username: { $iLike: `%${search}%` } }, { firstname: { $iLike: `%${search}%` } }, - { lastname: { $iLike: `%${search}%` } }], + { lastname: { $iLike: `%${search}%` } } + ], $not: [{ id: req.decoded.id }] }, include: [{ model: Role }], @@ -198,7 +199,7 @@ class UserController { }); }) .catch((error) => { - res.status(400).json(error); + res.status(500).json({ message: 'Server Error', error }); }); } @@ -212,9 +213,14 @@ class UserController { * @memberof UserController */ static find(req, res) { - return User.findById(req.params.id).then((user) => { - return res.status(200).json(userInfo(user)); - }).catch(error => res.status(400).json(error)); + return User.findById(req.params.id) + .then((user) => { + if (!user) { + return res.status(404).json({ message: 'User not found' }); + } + return res.status(200).json(userInfo(user)); + }) + .catch(error => res.status(500).json({ message: 'Server Error', error })); } /** @@ -229,6 +235,20 @@ class UserController { */ static update(req, res) { return User.findById(req.params.id).then((user) => { + if (!user) { + return res.status(404).json({ message: 'User not found' }); + } + if (req.body.email || req.body.username) { + User.findOne({ + where: { + $or: [{ username: req.body.username }, { email: req.body.email }] + } + }).then((existingUser) => { + if (existingUser) { + return res.status(409).send({ message: 'Email already Exist' }); + } + }); + } if (req.body.password) { req.body.password = user.encryptUpdatePassword(req.body.password); } @@ -237,7 +257,9 @@ class UserController { .then((user) => { res.status(200).json(userInfo(user)); }) - .catch(error => res.status(400).json(error)); + .catch(error => + res.status(500).json({ message: 'Server Error', error }) + ); }); } @@ -252,8 +274,15 @@ class UserController { */ static delete(req, res) { return User.findById(req.params.id).then((user) => { - return user.destroy().then(() => res.send(200)) - .catch(error => res.status(400).json(error)); + if (!user) { + return res.status(404).json({ message: 'User not found' }); + } + return user + .destroy() + .then(() => res.send(200)) + .catch(error => + res.status(500).json({ message: 'Server Error', error }) + ); }); } @@ -274,12 +303,17 @@ class UserController { let query; if (req.decoded) { query = req.decoded.roleId === 2 - ? { title: { $iLike: search }, + ? { + title: { $iLike: search }, $or: [ { $and: [{ access: 'private' }, { userId: req.decoded.id }] }, - { userId: req.params.id, + { + userId: req.params.id, $or: [{ access: 'public' }, { access: 'role' }] - }] } : { userId: req.params.id, title: { $iLike: search } }; + } + ] + } + : { userId: req.params.id, title: { $iLike: search } }; } Document.findAndCountAll({ where: query, @@ -300,23 +334,25 @@ class UserController { limit: req.query.limit || 15, offset: req.query.offset || 0, order: [['createdAt', 'DESC']] - }).then((document) => { - const limit = req.query.limit || 15; - const offset = req.query.offset || 0; - const totalCount = document.count; - const pageCount = Math.ceil(totalCount / limit); - const currentPage = Math.floor(offset / limit) + 1; - return res.status(200).json({ - document: document.rows, - pagination: { - totalCount, - limit, - offset, - pageCount, - currentPage - } - }); - }).catch(error => res.status(400).json(error)); + }) + .then((document) => { + const limit = req.query.limit || 15; + const offset = req.query.offset || 0; + const totalCount = document.count; + const pageCount = Math.ceil(totalCount / limit); + const currentPage = Math.floor(offset / limit) + 1; + return res.status(200).json({ + document: document.rows, + pagination: { + totalCount, + limit, + offset, + pageCount, + currentPage + } + }); + }) + .catch(error => res.status(500).json({ message: 'Server Error', error })); } } diff --git a/server/test/api/role.spec.js b/server/test/api/role.spec.js index a923bb6..dd2367f 100644 --- a/server/test/api/role.spec.js +++ b/server/test/api/role.spec.js @@ -212,7 +212,7 @@ describe('Role', () => { .set({ authorization: adminToken }) .send({ name: 'team7' }) .end((err, res) => { - expect(res.status).to.equal(400); + expect(res.status).to.equal(500); expect(res.body).to.be.a('object'); expect(res.body.message).to.eql( 'value "3000000000" is out of range for type integer' @@ -254,7 +254,7 @@ describe('Role', () => { .delete('/roles/3000000000') .set({ authorization: adminToken }) .end((err, res) => { - expect(res.status).to.equal(400); + expect(res.status).to.equal(500); expect(res.body).to.be.a('object'); expect(res.body.message).to.eql( 'value "3000000000" is out of range for type integer' diff --git a/server/test/api/user.spec.js b/server/test/api/user.spec.js index 97e0865..4392356 100644 --- a/server/test/api/user.spec.js +++ b/server/test/api/user.spec.js @@ -308,9 +308,9 @@ describe('User', () => { .set({ authorization: regularToken }) .send({ email: TestUser3.email }) .end((err, res) => { - expect(res.status).to.equal(400); + expect(res.status).to.equal(409); expect(res.body).to.be.a('object'); - expect(res.body.message).to.eql('Email already exist'); + expect(res.body.message).to.eql('Email already Exist'); done(); }); }); From 46a13148672cf19d18e721212957222e0f16bb89 Mon Sep 17 00:00:00 2001 From: Blessing Philips Date: Wed, 2 Aug 2017 14:00:56 +0100 Subject: [PATCH 2/4] chore(feedback): Implement feedback --- server/controllers/DocumentController.js | 8 ++++---- server/controllers/RoleController.js | 4 ++-- server/controllers/UserController.js | 12 ++++++------ 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/server/controllers/DocumentController.js b/server/controllers/DocumentController.js index afcceec..e63cc7a 100644 --- a/server/controllers/DocumentController.js +++ b/server/controllers/DocumentController.js @@ -110,7 +110,7 @@ class DocumentController { }); }) .catch((error) => { - res.status(500).json({ message: 'Server Error', error }); + res.status(500).json({ message: 'An Error Ocurred', error }); }); } @@ -129,7 +129,7 @@ class DocumentController { }); } return res.status(200).json(document); - }).catch(error => res.status(500).json({ message: 'Server Error', error })); + }).catch(error => res.status(500).json({ message: 'An Error Ocurred', error })); } /** @@ -167,8 +167,8 @@ class DocumentController { } return document.destroy() .then(() => res.send(200)) - .catch(error => res.status(500).json({ message: 'Server Error', error })); - }); + .catch(error => res.status(500).json({ message: 'An Errorr Ocurred', error })); + }).catch(error => res.status(500).json({ message: 'An Errorr Ocurred', error })); } } export default DocumentController; diff --git a/server/controllers/RoleController.js b/server/controllers/RoleController.js index e6d1160..ba2a6be 100644 --- a/server/controllers/RoleController.js +++ b/server/controllers/RoleController.js @@ -29,7 +29,7 @@ class RoleController { static list(req, res) { return Role.all() .then(roles => res.status(200).json(roles)) - .catch(error => res.status(500).json({ message: 'Server Error', error })); + .catch(error => res.status(500).json({ message: 'An Error Ocurred', error })); } /** @@ -92,7 +92,7 @@ class RoleController { return roles .destroy() .then(() => res.send(200)) - .catch(error => res.status(500).json({ message: 'Server Error', error })); + .catch(error => res.status(500).json({ message: 'An Error Ocurred', error })); }) .catch(error => res.status(500).json(error)); } diff --git a/server/controllers/UserController.js b/server/controllers/UserController.js index 2bd60c7..6abe640 100644 --- a/server/controllers/UserController.js +++ b/server/controllers/UserController.js @@ -136,7 +136,7 @@ class UserController { return res.status(401).json({ message: 'Wrong Password' }); } }) - .catch(error => res.status(500).json({ message: 'Server Error', error })); + .catch(error => res.status(500).json({ message: 'An Error Ocurred', error })); } /** @@ -199,7 +199,7 @@ class UserController { }); }) .catch((error) => { - res.status(500).json({ message: 'Server Error', error }); + res.status(500).json({ message: 'An Error Ocurred', error }); }); } @@ -220,7 +220,7 @@ class UserController { } return res.status(200).json(userInfo(user)); }) - .catch(error => res.status(500).json({ message: 'Server Error', error })); + .catch(error => res.status(500).json({ message: 'An Error Ocurred', error })); } /** @@ -258,7 +258,7 @@ class UserController { res.status(200).json(userInfo(user)); }) .catch(error => - res.status(500).json({ message: 'Server Error', error }) + res.status(500).json({ message: 'An Error Ocurred', error }) ); }); } @@ -281,7 +281,7 @@ class UserController { .destroy() .then(() => res.send(200)) .catch(error => - res.status(500).json({ message: 'Server Error', error }) + res.status(500).json({ message: 'An Error Ocurred', error }) ); }); } @@ -352,7 +352,7 @@ class UserController { } }); }) - .catch(error => res.status(500).json({ message: 'Server Error', error })); + .catch(error => res.status(500).json({ message: 'An Error Ocurred', error })); } } From 40eb25e496504001480f312e892d8f1d8b6043f9 Mon Sep 17 00:00:00 2001 From: Blessing Philips Date: Wed, 2 Aug 2017 14:05:27 +0100 Subject: [PATCH 3/4] chore(feedback): Implement feedback --- server/controllers/DocumentController.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/controllers/DocumentController.js b/server/controllers/DocumentController.js index e63cc7a..2350204 100644 --- a/server/controllers/DocumentController.js +++ b/server/controllers/DocumentController.js @@ -149,7 +149,7 @@ class DocumentController { .update(req.body) .then(() => res.status(200).json(document)) .catch(error => res.status(400).json(error)); - }); + }).catch(error => res.status(500).json({ message: 'An Error Ocurred', error })); } /** @@ -167,8 +167,8 @@ class DocumentController { } return document.destroy() .then(() => res.send(200)) - .catch(error => res.status(500).json({ message: 'An Errorr Ocurred', error })); - }).catch(error => res.status(500).json({ message: 'An Errorr Ocurred', error })); + .catch(error => res.status(500).json({ message: 'An Error Ocurred', error })); + }).catch(error => res.status(500).json({ message: 'An Error Ocurred', error })); } } export default DocumentController; From 045fecbfcfe5a229842b82293962b31a070d8925 Mon Sep 17 00:00:00 2001 From: Blessing Philips Date: Wed, 2 Aug 2017 14:12:00 +0100 Subject: [PATCH 4/4] chore(feedback): Implement feedback --- server/controllers/RoleController.js | 2 +- server/test/api/role.spec.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/controllers/RoleController.js b/server/controllers/RoleController.js index ba2a6be..4c3bfe8 100644 --- a/server/controllers/RoleController.js +++ b/server/controllers/RoleController.js @@ -48,7 +48,7 @@ class RoleController { } return res.status(200).json(roles); }) - .catch(error => res.status(400).json(error)); + .catch(error => res.status(500).json(error)); } /** diff --git a/server/test/api/role.spec.js b/server/test/api/role.spec.js index dd2367f..3a177bb 100644 --- a/server/test/api/role.spec.js +++ b/server/test/api/role.spec.js @@ -135,7 +135,7 @@ describe('Role', () => { .get('/roles/3000000000') .set({ authorization: adminToken }) .end((err, res) => { - expect(res.status).to.equal(400); + expect(res.status).to.equal(500); expect(res.body).to.be.a('object'); expect(res.body.message).to.eql( 'value "3000000000" is out of range for type integer'