All files SimplePolicy.js

90.91% Statements 10/11
90% Branches 9/10
100% Functions 2/2
90.91% Lines 10/11
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 351x     8x 1x       7x                 7x 17x 17x   6x             1x     1x      
const SimpleRule = require("./SimpleRule");
 
function validate(policy) {
    if (!policy || !policy.type) {
        throw {
            error: "invalid_policy",
            message: "Must have 'type'."
        };
    } else Iif (!policy.content
        || !policy.content.rules
        || !(policy.content.rules instanceof Object)
        || (Object.keys(policy.content.rules)).length === 0) {
            throw {
                error: "invalid_policy",
                message: "Must have 'content' with non-empty 'rules' object."
            };
    } else {
        Object.keys(policy.content.rules).forEach(ruleId => {
            try {
                SimpleRule.validate(policy.content.rules[ruleId]);
            } catch (e) {
                throw {
                    error: "invalid_policy",
                    message: `Error in 'rule' ${ruleId}: ${e.message}`
                };
            }
        });
    }
    return true;
}
 
module.exports = {
    validate
}