UNPKG

api-schema-builder

Version:

build schema with validators for each endpoint

45 lines (41 loc) 1.6 kB
var Ajv = require('ajv'); const fileNameField = 'fieldname'; function missingElements(superSet, subset) { const missingElements = []; subset.every(function (subsetElement) { if (!superSet.includes(subsetElement)) { missingElements.push(subsetElement); } return true; }); return missingElements; }; module.exports = { validate: function filesValidation(schema, data) { filesValidation.errors = []; const dataFileName = data.map((element) => { return element[fileNameField] }); const missingFiles = missingElements(dataFileName, schema.required); if (missingFiles.length > 0) { filesValidation.errors.push(new Ajv.ValidationError({ keyword: 'files', message: `Missing required files: ${missingFiles.toString()}`, params: { requiredFiles: schema.required, missingFiles: missingFiles } })); return false; } // Check that only the optional files exists const allFiles = schema.required.concat(schema.optional); const extraFiles = missingElements(allFiles, dataFileName); if (extraFiles.length > 0) { filesValidation.errors.push(new Ajv.ValidationError({ keyword: 'files', message: `Extra files are not allowed. Not allowed files: ${extraFiles}`, params: { allowedFiles: allFiles, extraFiles: extraFiles } })); return false; } else { return true; } }, errors: true };