linagora/openpaas-esn

View on GitHub
backend/core/esn-config/validator/index.js

Summary

Maintainability
A
1 hr
Test Coverage
const q = require('q');
const _ = require('lodash');
const registry = require('../registry');
const helper = require('./helper');

module.exports = {
  helper,
  validate
};

function validate(moduleName, configName, value) {
  const module = registry.getFromModule(moduleName);

  if (!module) {
    return q({
      ok: false,
      message: `No such module: ${moduleName}`
    });
  }

  const config = module.configurations[configName];

  if (!config) {
    return q({
      ok: false,
      message: `No such configuration ${configName} in module ${moduleName}`
    });
  }

  if (_.isUndefined(value)) {
    return q({
      ok: false,
      message: 'The value is required'
    });
  }

  const validator = config.validator || defaultValidator;
  const result = validator(value);

  return q().then(() => result).then(message => ({
    ok: !message,
    message
  }));
}

function defaultValidator() {
  return null;
}