UNPKG

@incdevco/framework

Version:
184 lines (100 loc) 3.97 kB
var Expect = require('chai').expect; var ACL = require('./index.js'); describe('acl', function () { describe('isAllowed', function () { var acl, expected, privilege, role, resource; beforeEach(function () { acl = new ACL(); expected = true; privilege = 'update'; role = 'Client'; resource = 'account'; }); it('should resolve false when not allowed', function (done) { expected = false; acl.isAllowed(role, resource, privilege) .then(function (result) { Expect(result).to.equal(expected, 'result'); return done(); }) .catch(done); }); it('should resolve true when allowed', function (done) { acl.allow(role, resource, privilege); acl.isAllowed(role, resource, privilege) .then(function (result) { Expect(result).to.equal(expected, 'result'); return done(); }) .catch(done); }); it('should resolve true when allowed, but false when another role is used', function (done) { var anotherRole = 'anotherRole'; acl.allow(role, resource, privilege); acl.isAllowed(role, resource, privilege) .then(function (result) { Expect(result).to.equal(expected, 'result'); return acl.isAllowed(anotherRole, resource, privilege); }) .then(function(result) { Expect(result).to.equal(false, 'anotherRole result'); return done(); }) .catch(done); }); it('should resolve false when child and parent not allowed', function (done) { var child = 'Child'; var parent = 'Parent'; expected = false; acl.isAllowed(child, resource, privilege) .then(function (result) { Expect(result).to.equal(expected, 'child result'); return acl.isAllowed(parent, resource, privilege); }) .then(function (result) { Expect(result).to.equal(expected, 'parent result'); return done(); }) .catch(done); }); it('should resolve true when child not allowed explicitly, but parent is allowed', function (done) { var child = 'Child'; var parent = 'Parent'; acl.allow(parent, resource, privilege); acl.inherit(child, parent); acl.isAllowed(child, resource, privilege) .then(function (result) { Expect(result).to.equal(expected, 'child result'); return acl.isAllowed(parent, resource, privilege); }) .then(function (result) { Expect(result).to.equal(expected, 'parent result'); return done(); }) .catch(done); }); it('should resolve false when allowed, but assertion returns false', function (done) { expected = false; acl.allow(role, resource, privilege, function () { return false; }); acl.isAllowed(role, resource, privilege) .then(function (result) { Expect(result).to.equal(expected, 'result'); return done(); }) .catch(done); }); it('should resolve true when allowed and assertion returns true', function (done) { acl.allow(role, resource, privilege, function () { return true; }); acl.isAllowed(role, resource, privilege) .then(function (result) { Expect(result).to.equal(expected, 'result'); return done(); }) .catch(done); }); }); });