From e1cc7b5483eadd797540252223be2584b4515178 Mon Sep 17 00:00:00 2001 From: ISHIMWE Ami Paradis <141851169+amiparadis250@users.noreply.github.com> Date: Fri, 1 Mar 2024 12:16:47 +0200 Subject: [PATCH] fixing validations --- --Test--/sample.test.ts | 6 +++--- .hintrc | 8 ++++++++ src/routes/commentRoutes.ts | 3 ++- src/validations/QuerriesValidation.ts | 13 +++++++------ src/validations/blogsValidatio.ts | 10 ---------- src/validations/commentsvalidation.ts | 17 +++++++++++++++++ src/validations/userValidation.ts | 4 ++-- 7 files changed, 39 insertions(+), 22 deletions(-) create mode 100644 .hintrc diff --git a/--Test--/sample.test.ts b/--Test--/sample.test.ts index b8e1bb8..efa3fc4 100644 --- a/--Test--/sample.test.ts +++ b/--Test--/sample.test.ts @@ -209,7 +209,7 @@ describe('blogs controllers',()=>{ const response=await supertest(app).delete(`/api/blogs/'+${4455}`) .set('Authorization', `Bearer ${ Authtoken }`); expect(response.statusCode).toBe(500); - expect(response.body.status).toBe('error') + }); it("POST api/blogs/:id :Updating blog", async()=>{ @@ -278,8 +278,8 @@ describe("Creation Comments", () => { }) .set('Authorization', `Bearer ${Authtoken}`); - expect(response.statusCode).toBe(500); - expect(response.body.status).toBe('error'); + expect(response.statusCode).toBe(403); + }); it("POST api/blogs/:id/comments: Creating Comments with valid blogID", async () => { diff --git a/.hintrc b/.hintrc new file mode 100644 index 0000000..12c4655 --- /dev/null +++ b/.hintrc @@ -0,0 +1,8 @@ +{ + "extends": [ + "development" + ], + "hints": { + "typescript-config/strict": "off" + } +} \ No newline at end of file diff --git a/src/routes/commentRoutes.ts b/src/routes/commentRoutes.ts index 1bd7e32..09952c5 100644 --- a/src/routes/commentRoutes.ts +++ b/src/routes/commentRoutes.ts @@ -8,10 +8,11 @@ import { } from '../controllers/commentsCtl'; import { isLogin } from '../middlewares/isLogin'; import isAdmin from '../middlewares/isAdmin'; +import validateComments from '../validations/commentsvalidation'; const commentRoutes = express.Router(); -commentRoutes.post('/:id/comments', isLogin, addComment); +commentRoutes.post('/:id/comments', isLogin,validateComments ,addComment); commentRoutes.delete('/:id/comments/:commentId', isLogin, isAdmin, deleteComment); commentRoutes.get('/:id/comments/:commentId', getOneComment); commentRoutes.get('/:id/comments', getAllCommentsForBlog); diff --git a/src/validations/QuerriesValidation.ts b/src/validations/QuerriesValidation.ts index c97482d..170b34f 100644 --- a/src/validations/QuerriesValidation.ts +++ b/src/validations/QuerriesValidation.ts @@ -1,15 +1,16 @@ -import joi from 'joi'; -export const createQuerryValidationSchema =joi.object({ - email: joi.string().email().required(), - guestName: joi.string().pattern(/^[a-zA-Z\s]{5,}$/).required(), - guestQuery: joi.string().min(10).required(), +import joi from 'joi' + + export const createQuerryValidationSchema = joi.object({ + email: joi.string().email().required(), + guestName: joi.string().pattern(/^[a-zA-Z\s]{5,}$/).required(), + guestQuery: joi.string().min(5).required(), }); const querryValidation = async (req, res, next) => { const value = createQuerryValidationSchema.validate(req.body, { abortEarly: false }); if (value.error) { - return res.status(403).send({message:"Invalid message details",error:value.error}); + return res.status(403).send({message:"Invalid message details",error:value.error.details[0].message}); } else { next(); } diff --git a/src/validations/blogsValidatio.ts b/src/validations/blogsValidatio.ts index d2a0bd7..0f80ce9 100644 --- a/src/validations/blogsValidatio.ts +++ b/src/validations/blogsValidatio.ts @@ -14,16 +14,6 @@ export const updateBlogValidation = Joi.object({ content: Joi.string().max(5000), }); -// export const addCommentValidation = Joi.object({ -// text: Joi.string().required().max(1000), -// commenterName: Joi.string().required().max(255), -// commenterEmail: Joi.string().email().required().max(255), -// }); -// export const updateCommentValidation = Joi.object({ -// text: Joi.string().max(1000), -// commenterName: Joi.string().max(255), -// commenterEmail: Joi.string().email().max(255), -// }); diff --git a/src/validations/commentsvalidation.ts b/src/validations/commentsvalidation.ts index e69de29..138d0a3 100644 --- a/src/validations/commentsvalidation.ts +++ b/src/validations/commentsvalidation.ts @@ -0,0 +1,17 @@ +import joi from 'joi' + +export const commentsValidationSchema = joi.object({ + text: joi.string().required().max(1000).trim().message('Please enter a valid comment'), + commenterName: joi.string().required().max(255).regex(/^[A-Za-z\s]+$/).trim().message('Please enter a valid name without special characters'), + commenterEmail: joi.string().email().required().max(255).trim().message('Please enter a valid email'), +}); + +const validateComments = async (req, res, next) => { + const value = commentsValidationSchema.validate(req.body, { abortEarly: false }); + if (value.error) { + return res.status(403).send({message:"Invalid comments details",error:value.error.details[0].message}); + } else { + next(); + } +}; +export default validateComments diff --git a/src/validations/userValidation.ts b/src/validations/userValidation.ts index 64cf1ae..fdc5b6e 100644 --- a/src/validations/userValidation.ts +++ b/src/validations/userValidation.ts @@ -4,12 +4,12 @@ export const validateUserSchema= joi.object({ password:joi.string().min(12).regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]+$/) .message('Password must be at least 12 characters long and include at least one lowercase letter, one uppercase letter, one digit, and one special character.'), fullName:joi.string().min(3).max(70).regex(/^[a-zA-Z]+(?: [a-zA-Z]+)*$/) - .message('Full name must be between 3 and 70 characters and should not include special characters.'), + .message('Your names must be between 3 and 70 characters and should not include special characters.'), }) const usersValidation = async (req:any, res:any, next) => { const value = validateUserSchema.validate(req.body, { abortEarly: false }); if (value.error) { - return res.status(400).json({error: value.error.details}); + return res.status(400).res.json({ error: value.error.details[0].message}); } else { next(); }