UNPKG

cloudboost-tv

Version:

Database Service that does Storage, Search, Real-time and a whole lot more.

243 lines (198 loc) 7.2 kB
describe("ACL", function () { it("Should update the ACL object.", function (done) { this.timeout(20000); if(CB._isNode){ console.log('Skipped, Not meant for NodeJS'); done(); return; } var obj = new CB.CloudObject('Employee'); obj.ACL = new CB.ACL(); obj.ACL.setRoleWriteAccess("x",true); obj.ACL.setPublicWriteAccess(true); obj.save().then(function(list) { list.ACL.setRoleWriteAccess("y",true); list.ACL.setPublicWriteAccess(true); list.save().then(function(obj) { var query = new CB.CloudQuery("Employee"); query.findById(obj.id, { success : function(obj){ if(obj.ACL.document.write.allow.role.length === 2) { done(); } else done("Cannot update the ACL"); }, error : function(error) { done(error); } }) }, function(error){ done(error); }); }, function (error) { done(error); }); }); it("Should set the public write access", function (done) { this.timeout(20000); if(CB._isNode){ console.log('Skipped, Not meant for NodeJS'); done(); return; } var obj = new CB.CloudObject('student4'); obj.ACL = new CB.ACL(); obj.ACL.setPublicWriteAccess(false); obj.save().then(function(list) { var acl=list.get('ACL'); if(acl.document.write.deny.user.length === 0) { obj.set('age',15); obj.save().then(function(){ throw "Should not save object with no right access"; },function(){ done(); }); } else throw "public write access set error" }, function () { throw "public write access save error"; }); }); it("Should persist ACL object inside of CloudObject after save.", function (done) { this.timeout(20000); var obj = new CB.CloudObject('student4'); obj.ACL = new CB.ACL(); obj.ACL.setUserWriteAccess('id',true); obj.save().then(function(obj) { var acl=obj.get('ACL'); if(acl.document.write.allow.user.length === 1 && acl.document.write.allow.user[0] === 'id') { //query this object and see if ACL persisted. var query = new CB.CloudQuery("student4"); query.equalTo('id',obj.id); query.find({ success : function(list){ if(list.length ===1) { var acl = list[0].ACL; if(acl.document.write.allow.user.length === 1 && acl.document.write.allow.user[0] === 'id'){ done(); }else{ done("Cannot persist ACL object"); } } else{ done("Cannot get cloudobject"); } }, error : function(error){ } }); } else done("ACL write access on user cannot be set"); }, function () { throw "public write access save error"; }); }); it("Should set the public read access", function (done) { this.timeout(20000); if(CB._isNode){ console.log('Skipped, Not meant for NodeJS'); done(); return; } var obj = new CB.CloudObject('student4'); obj.ACL = new CB.ACL(); obj.ACL.setPublicReadAccess(false); obj.save().then(function(list) { var acl=list.get('ACL'); if(acl.document.read.deny.user.length === 0) done(); else throw "public read access set error" }, function () { throw "public read access save error"; }); }); var username = util.makeString(); var passwd = "abcd"; var userObj = new CB.CloudUser(); it("Should create new user", function (done) { if(CB._isNode){ console.log('Skipped, Not meant for NodeJS'); done(); return; } this.timeout(20000); userObj.set('username', username); userObj.set('password',passwd); userObj.set('email',util.makeEmail()); userObj.signUp().then(function(list) { if(list.get('username') === username) done(); else done('User unable to log in'); }, function (err) { done(err); }); }); it("Should set the user read access", function (done) { if(CB._isNode){ console.log('Skipped, Not meant for NodeJS'); done(); return; } this.timeout(20000); var obj = new CB.CloudObject('student4'); obj.ACL = new CB.ACL(); obj.ACL.setUserReadAccess(userObj.get('id'),true); obj.save().then(function(list) { acl=list.get('ACL'); if(acl.document.read.allow.user.indexOf(userObj.get('id')) >= 0) done(); else throw "user read access set error" }, function () { throw "user read access save error"; }); }); it("Should allow users of role to write", function (done) { if(CB._isNode){ console.log('Skipped, Not meant for NodeJS'); done(); return; } this.timeout(20000); var obj = new CB.CloudObject('student4'); obj.ACL = new CB.ACL(); obj.ACL.setRoleWriteAccess(userObj.get('id'),true); obj.save().then(function(list) { acl=list.get('ACL'); if(acl.document.write.allow.role.indexOf(userObj.get('id'))>=0) done(); else throw "user role write access set error" }, function () { throw "user role write access save error"; }); }); it("Should allow users of role to read", function (done) { if(CB._isNode){ console.log('Skipped, Not meant for NodeJS'); done(); return; } this.timeout(20000); var obj = new CB.CloudObject('student4'); obj.ACL.setRoleReadAccess(userObj.get('id'),true); obj.save().then(function(list) { acl=list.get('ACL'); if(acl.document.read.allow.role.indexOf(userObj.get('id'))>=0) done(); else throw "user role read access set error" }, function () { throw "user role read access save error"; }); }); });