(todaysTime, req, res, next)
| 2 | const { userState, CANCEL_OOO } = require("../../constants/userStatus"); |
| 3 | |
| 4 | const validateUserStatusData = async (todaysTime, req, res, next) => { |
| 5 | const validUserStates = [userState.ONBOARDING]; |
| 6 | |
| 7 | const statusSchema = Joi.object({ |
| 8 | currentStatus: Joi.object().keys({ |
| 9 | state: Joi.string() |
| 10 | .trim() |
| 11 | .valid(...validUserStates) |
| 12 | .error(new Error(`Invalid State. the acceptable states are ${validUserStates}`)), |
| 13 | updatedAt: Joi.number().required(), |
| 14 | from: Joi.number() |
| 15 | .min(todaysTime) |
| 16 | .required() |
| 17 | .error(new Error(`The 'from' field must have a value that is either today or a date that follows today.`)), |
| 18 | }), |
| 19 | monthlyHours: Joi.object().keys({ |
| 20 | committed: Joi.number().required(), |
| 21 | updatedAt: Joi.number().required(), |
| 22 | }), |
| 23 | }); |
| 24 | |
| 25 | const cancelOooSchema = Joi.object() |
| 26 | .keys({ |
| 27 | cancelOoo: Joi.boolean().valid(true).required(), |
| 28 | }) |
| 29 | .unknown(false); |
| 30 | |
| 31 | let schema; |
| 32 | try { |
| 33 | if (Object.keys(req.body).includes(CANCEL_OOO)) { |
| 34 | schema = cancelOooSchema; |
| 35 | } else { |
| 36 | schema = statusSchema; |
| 37 | } |
| 38 | await schema.validateAsync(req.body); |
| 39 | next(); |
| 40 | } catch (error) { |
| 41 | logger.error(`Error validating UserStatus ${error}`); |
| 42 | res.boom.badRequest(error); |
| 43 | } |
| 44 | }; |
| 45 | |
| 46 | const validateUserStatus = (req, res, next) => { |
| 47 | const today = new Date(); |
no outgoing calls
no test coverage detected