All files / src/middlewares validateRequest.middleware.ts

100% Statements 11/11
100% Branches 0/0
100% Functions 4/4
100% Lines 10/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24  7x 7x 7x   1x     203x 82x 82x 81x     1x       1x          
import { Request, Response, NextFunction } from 'express';
import { ZodError, ZodSchema } from 'zod';
import { ResponseHandler } from '@/utils/responseHandler';
 
function parseZodErrors(errors: ZodError) {
  return errors.errors.map((err) => `${err.path.join(', ')}: ${err.message}`);
}
 
export function validate(schema: ZodSchema) {
  return (req: Request, res: Response, next: NextFunction) => {
    try {
      schema.parse(req.body);
      next();
    } catch (error: any) {
      const resBody = ResponseHandler.InvalidBody({
        message: 'Validation Error',
        errors: parseZodErrors(error),
      });
 
      res.status(resBody.error!.code).json(resBody);
    }
  };
}