@incdevco/framework
Version:
node.js lambda framework
184 lines (100 loc) • 3.97 kB
JavaScript
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);
});
});
});