/** * validate json schema * @param {obj} paramObj * @param {obj} schema * @returns {{valid: boolean, err_msg?: string}} */ function validateSchema(paramObj, schema){ const ajv = new Ajv(); const valid = ajv.validate(schema, paramObj); if (!valid) return { valid, err_msg: `Input parsing error: ${ajv.errors[0].dataPath} ${ajv.errors[0].message}.` }; return { valid }; }
validatePlaybookSchema(json) { var schemas = { playbook: this.getSchema('playbook') } let ajv = new Ajv({useDefaults: true, allErrors: true, $data: true}); require('ajv-keywords')(ajv, 'select') let valid = ajv.validate(schemas.playbook, json) return {valid, errors: ajv.errors} }
ajv.errors.forEach(function(error) { var message = ''; switch(error.keyword) { case 'required': // requirement not fulfilled. message = 'Property \'' + error.params.missingProperty + '\' is missing.'; break; case 'type': message = 'Wrong type: ' + error.dataPath + ' ' + error.message; break; default: message = 'Unknown input error. :('; } var pusherror = { message: message } errors.push(pusherror); });
/** * Validate Resource JSON against a schema * @param object Object to be validated * @param schema JSON schema to be used for validation */ validateJSON (object, schema) { let ajv = new Ajv({ allErrors: true }); if (ajv.validate(schema, object)) { return; } let validationErrors = ajv.errors.map(function (error) { return { message: error.message, path: error.dataPath }; }); let validationError = new HttpError( HttpError.statusCodes.UNPROCESSABLE_ENTITY, this.Errors.JSON_IS_INVALID + JSON.stringify(schema) ); validationError.causes = validationErrors; throw validationError; }
const errors = ajv.errors; if (errors) { const errs: JsonSchemaValidationError[] = [];