UNPKG

@vph-garage/sails-interfuser

Version:

Automizing injection of your [custom Sails.JS] hook's MVC logics (models, controllers, helpers, services, config, policies, views, and assets) from the hook's directory [presuming default structure], or specified directories, into the end-product, Sails.J

43 lines (35 loc) 1.63 kB
const _ = require('lodash'); module.exports = async function testPolicy (title, _action, type, check) { let policy = `${check}${_.upperFirst(_action)}`; let ctrl = type === 'action' ? `${_action.toLowerCase()}action`: `${_action.toLowerCase()}`; let action = type === 'action' ? `act-policy-${check}`: `${_action.toLowerCase()}ctrlpolicy${check}`; let route = `/${ctrl}/${action}`; let actionPolicy = `${ctrl}/${action}`; context(`${actionPolicy} action for policy ${policy} :: ${title}:`, async function () { it(`has injected test action ${actionPolicy} policy ${policy} into config policies`, async function (){ // sails.log.debug('sails.router.explicitRoutes: ', sails.router.explicitRoutes); // sails.log.debug('sails.config.policies: ', sails.config.policies); expect(sails.config.policies[actionPolicy][0]).to.be.eql(policy); }); if (policy.includes('allow')){ it(`can allow test action ${actionPolicy} for policy ${policy} on route ${route}`, function (done){ sails.request(route, (err, res, body)=>{ if(err) done(err); expect(res.statusCode).to.be.eql(200); done(); }) }); } else { it(`can deny test action ${actionPolicy} for policy ${policy} on route ${route}`, function (done){ sails.request(route, (err, res, body)=>{ // sails.log.debug('err: ', err); // sails.log.debug('body: ', body); // sails.log.debug('res: ', res); expect(err).not.to.be.undefined; expect(err.status).to.be.eql(403); done(); }) }); } }); }