UNPKG

mongoose-restapi-ui

Version:

Rest api library for your mongoose apps, with react ui: mongoose-restapi-ui-component react library

940 lines 70.8 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: true }); var mocha_typescript_1 = require("mocha-typescript"); var mongoose_1 = require("mongoose"); var permissionSchema_1 = require("../src/models/permissionSchema"); var roleSchema_1 = require("../src/models/roleSchema"); var PermissionClass_1 = require("../src/models/PermissionClass"); var model_1 = require("../src/definitions/model"); var mongoose = require("mongoose"); var PermissionClassTest = /** @class */ (function () { function PermissionClassTest() { } PermissionClassTest_1 = PermissionClassTest; PermissionClassTest.before = function () { global.Promise = require("q").Promise; //use q library for mongoose promise mongoose.Promise = global.Promise; var MONGODB_CONNECTION = "mongodb://localhost:27017/test_mongoose_api_ui_permission_class"; PermissionClassTest_1.connection = mongoose.createConnection(MONGODB_CONNECTION); PermissionClassTest_1.permission = PermissionClassTest_1.connection.model('perm', permissionSchema_1.default); PermissionClassTest_1.role = PermissionClassTest_1.connection.model('rol', roleSchema_1.default); PermissionClassTest_1.user = PermissionClassTest_1.connection.model('user', new mongoose.Schema({ roles: [{ type: mongoose_1.Schema.Types.ObjectId, ref: 'rol' }] })); PermissionClassTest_1.model = PermissionClassTest_1.connection.model('test1', new mongoose.Schema({ string: String })); }; PermissionClassTest.after = function (done) { PermissionClassTest_1.connection.dropDatabase(function (err) { PermissionClassTest_1.connection.close(function (error) { if (err) return done(err); if (error) return done(error); done(error); }); }); }; PermissionClassTest.prototype['_getReadObjects function handle mongoose error'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var getFilterByPermissions = function (user, cb) { cb(null, null); }; var permissionModel = { find: function (filter, projection, cb) { cb(new Error('some error')); } }; var perm = new PermissionClass_1.default(PermissionClassTest_1.model, permissionModel, PermissionClassTest_1.role, { getFilterByPermissions: getFilterByPermissions }); var req = { user: user }; perm.getReadQuery(req, function (err, query) { err.message.should.be.eql('some error'); done(); }); }; PermissionClassTest.prototype['_getReadObjects function 0 items'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var getFilterByPermissions = function (user, cb) { cb(null, null); }; var perm = new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, PermissionClassTest_1.role, { getFilterByPermissions: getFilterByPermissions }); var req = { user: user }; perm.getReadQuery(req, function (err, query) { if (err) return done(err); query.should.be.eql({ _id: { $exists: false } }); done(); }); }; PermissionClassTest.prototype['_getReadObjects function 1 item'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var getFilterByPermissions = function (user, cb) { cb(null, null); }; var object = new PermissionClassTest_1.model({ string: 'string' }); new PermissionClassTest_1.permission({ table: PermissionClassTest_1.model.modelName, user: user, object: object, permission: model_1.PermissionEnum.READ }).save(function (err, doc) { if (err) return done(err); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, PermissionClassTest_1.role, { getFilterByPermissions: getFilterByPermissions }); var req = { user: user }; perm.getReadQuery(req, function (err, query) { if (err) return done(err); query.should.be.eql({ _id: { $in: [doc.object] } }); done(); }); }); }; PermissionClassTest.prototype['_getReadObjects function +1 item'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var getFilterByPermissions = function (user, cb) { cb(null, null); }; var object = new PermissionClassTest_1.model({ string: 'string' }); var object2 = new PermissionClassTest_1.model({ string: 'string' }); new PermissionClassTest_1.permission({ table: PermissionClassTest_1.model.modelName, user: user, object: object, permission: model_1.PermissionEnum.READ }).save(function (err, doc) { if (err) return done(err); new PermissionClassTest_1.permission({ table: PermissionClassTest_1.model.modelName, user: user, object: object2, permission: model_1.PermissionEnum.READ }).save(function (err, doc2) { if (err) return done(err); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, PermissionClassTest_1.role, { getFilterByPermissions: getFilterByPermissions }); var req = { user: user }; perm.getReadQuery(req, function (err, query) { if (err) return done(err); query.should.be.eql({ _id: { $in: [doc.object, doc2.object] } }); done(); }); }); }); }; PermissionClassTest.prototype['_getUserRoles function with no role function'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; new PermissionClass_1.default(PermissionClassTest_1.model, null, null, { getFilterByPermissions: function (a, cb) { return cb(null, null); } }).getReadQuery(req, function (err, query) { if (err) return done(err); if (query) return done(query); done(); }); }; PermissionClassTest.prototype['_getUserRoles function with no roles setted'] = function (done) { var user = new PermissionClassTest_1.user({}); var req = { user: user }; new PermissionClass_1.default(PermissionClassTest_1.model, null, PermissionClassTest_1.role, { getFilterByPermissions: function (a, cb) { return cb(null, null); } }) .getReadQuery(req, function (err, query) { if (err) return done(err); if (query) return done(query); done(); }); }; PermissionClassTest.prototype['_getUserRoles function with no roles'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; new PermissionClass_1.default(PermissionClassTest_1.model, null, PermissionClassTest_1.role, { getFilterByPermissions: function (a, cb) { return cb(null, null); } }) .getReadQuery(req, function (err, query) { if (err) return done(err); if (query) return done(query); done(); }); }; PermissionClassTest.prototype['_getUserRoles function with 1 roles'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; new PermissionClassTest_1.role({ name: 's_1_roles', schemas: [{ name: PermissionClassTest_1.model.modelName, permission: model_1.PermissionEnum.UPDATE }] }).save(function (err, role) { if (err) return done(err); user.roles = [role._id]; new PermissionClass_1.default(PermissionClassTest_1.model, null, PermissionClassTest_1.role, { getFilterByPermissions: function (a, cb) { return cb(null, null); } }) .getReadQuery(req, function (err, query) { if (err) return done(err); if (query) return done(query); done(); }); }); }; PermissionClassTest.prototype['_getUserRoles function with +1 roles'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; new PermissionClassTest_1.role({ name: 's_plus_1_role_update', schemas: [{ name: PermissionClassTest_1.model.modelName, permission: model_1.PermissionEnum.UPDATE }] }).save(function (err, role) { if (err) return done(err); new PermissionClassTest_1.role({ name: 's_plus_1_role', schemas: [{ name: PermissionClassTest_1.model.modelName, permission: model_1.PermissionEnum.READ }] }).save(function (err, role2) { if (err) return done(err); user.roles = [role._id, role2._id]; new PermissionClass_1.default(PermissionClassTest_1.model, null, PermissionClassTest_1.role, { getFilterByPermissions: function (a, cb) { return cb(null, null); } }) .getReadQuery(req, function (err, query) { if (err) return done(err); if (query) return done(query); done(); }); }); }); }; PermissionClassTest.prototype['_getUserRoles function with +1 roles descendant'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; new PermissionClassTest_1.role({ name: 's_plus_1_role_descendant', schemas: [{ name: PermissionClassTest_1.model.modelName, permission: model_1.PermissionEnum.UPDATE }] }).save(function (err, role) { if (err) return done(err); new PermissionClassTest_1.role({ name: 's_plus_1_role_descendant_ADMIN', schemas: [{ name: PermissionClassTest_1.model.modelName, permission: model_1.PermissionEnum.ADMIN }] }).save(function (err, role2) { if (err) return done(err); user.roles = [role._id, role2._id]; new PermissionClass_1.default(PermissionClassTest_1.model, null, PermissionClassTest_1.role, { getFilterByPermissions: function (a, cb) { return cb(null, null); } }) .getReadQuery(req, function (err, query) { if (err) return done(err); if (query) return done(query); done(); }); }); }); }; PermissionClassTest.prototype['_getMaxPermissionByDoc function with no permission'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var obj = new PermissionClassTest_1.model({}); new PermissionClass_1.default(PermissionClassTest_1.model, null, null, { getFilterByPermissions: function (a, cb) { return cb(null, null); } }) .hasReadPermission(req, obj, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done(); done('test failed.'); }); }; PermissionClassTest.prototype['_getMaxPermissionByDoc function with 0 docs'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var obj = new PermissionClassTest_1.model({}); new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, PermissionClassTest_1.role, { getFilterByPermissions: function (a, cb) { return cb(null, null); } }) .hasReadPermission(req, obj, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done('test failed'); done(); }); }; PermissionClassTest.prototype['_getMaxPermissionByDoc function with some docs'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var obj = new PermissionClassTest_1.model({}); new PermissionClassTest_1.permission({ table: PermissionClassTest_1.model.modelName, user: user, object: obj, permission: model_1.PermissionEnum.READ }).save(function (err, doc2) { if (err) return done(err); new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, PermissionClassTest_1.role, { getFilterByPermissions: function (a, cb) { return cb(null, null); } }) .hasReadPermission(req, obj, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done(); return done('test failed'); }); }); }; PermissionClassTest.prototype['getReadQuery function handle error'] = function (done) { var role = new PermissionClassTest_1.role({}); var user = new PermissionClassTest_1.user({ roles: [role] }); var req = { user: user }; var roleModel = { aggregate: function (filter, cb) { cb(new Error('some error')); } }; var perm = new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, roleModel, {}); perm.getReadQuery(req, function (err, query) { err.message.should.be.eql('some error'); done(); }); }; PermissionClassTest.prototype['getReadQuery with a role > READ'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; new PermissionClassTest_1.role({ name: 's_role_read>', schemas: [{ name: PermissionClassTest_1.model.modelName, permission: model_1.PermissionEnum.UPDATE }] }).save(function (err, role) { if (err) return done(err); user.roles = [role._id]; new PermissionClass_1.default(PermissionClassTest_1.model, null, null, { getFilterByPermissions: function (a, cb) { return cb(null, null); } }) .getReadQuery(req, function (err, query) { if (err) return done(err); if (query) return done(query); done(); }); }); }; PermissionClassTest.prototype['getReadQuery handle getFilterByPermissionserror'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; new PermissionClass_1.default(PermissionClassTest_1.model, null, PermissionClassTest_1.role, { getFilterByPermissions: function (a, cb) { return cb(new Error('some error'), null); } }) .getReadQuery(req, function (err, query) { err.message.should.be.equal('some error'); if (query) return done('test failed'); done(); }); }; PermissionClassTest.prototype['getReadQuery handle _getReadObjects error'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var getFilterByPermissions = function (user, cb) { cb(null, null); }; var permissionModel = { find: function (filter, projection, cb) { cb(new Error('some error')); } }; var perm = new PermissionClass_1.default(PermissionClassTest_1.model, permissionModel, PermissionClassTest_1.role, { getFilterByPermissions: getFilterByPermissions }); var req = { user: user }; perm.getReadQuery(req, function (err, query) { err.message.should.be.eql('some error'); done(); }); }; PermissionClassTest.prototype['getReadQuery with no permission'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; new PermissionClass_1.default(PermissionClassTest_1.model, null, null, { getFilterByPermissions: function (a, cb) { return cb(null, { r: 'the query' }); } }) .getReadQuery(req, function (err, query) { if (err) return done(err); query.r.should.be.eql('the query'); done(); }); }; PermissionClassTest.prototype['getReadQuery with 0 permission objects'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, PermissionClassTest_1.role, { getFilterByPermissions: function (a, cb) { return cb(null, { r: 'the query' }); } }) .getReadQuery(req, function (err, query) { if (err) return done(err); query.r.should.be.eql('the query'); done(); }); }; PermissionClassTest.prototype['getReadQuery with 0 permission objects and no query'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, PermissionClassTest_1.role, { getFilterByPermissions: function (a, cb) { return cb(null, null); } }) .getReadQuery(req, function (err, query) { if (err) return done(err); query.should.be.eql({ _id: { $exists: false } }); done(); }); }; PermissionClassTest.prototype['getReadQuery with +1 ermission objects and no query'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var getFilterByPermissions = function (user, cb) { cb(null, null); }; var object = new PermissionClassTest_1.model({ string: 'string' }); var object2 = new PermissionClassTest_1.model({ string: 'string' }); new PermissionClassTest_1.permission({ table: PermissionClassTest_1.model.modelName, user: user, object: object, permission: model_1.PermissionEnum.READ }).save(function (err, doc) { if (err) return done(err); new PermissionClassTest_1.permission({ table: PermissionClassTest_1.model.modelName, user: user, object: object2, permission: model_1.PermissionEnum.READ }).save(function (err, doc2) { if (err) return done(err); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, PermissionClassTest_1.role, { getFilterByPermissions: getFilterByPermissions }); perm.getReadQuery(req, function (err, query) { if (err) return done(err); query.should.be.eql({ _id: { $in: [doc.object, doc2.object] } }); done(); }); }); }); }; PermissionClassTest.prototype['getReadQuery with +1 ermission objects and with query'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var getFilterByPermissions = function (user, cb) { cb(null, 'the query'); }; var object = new PermissionClassTest_1.model({ string: 'string' }); var object2 = new PermissionClassTest_1.model({ string: 'string' }); new PermissionClassTest_1.permission({ table: PermissionClassTest_1.model.modelName, user: user, object: object, permission: model_1.PermissionEnum.READ }).save(function (err, doc) { if (err) return done(err); new PermissionClassTest_1.permission({ table: PermissionClassTest_1.model.modelName, user: user, object: object2, permission: model_1.PermissionEnum.READ }).save(function (err, doc2) { if (err) return done(err); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, PermissionClassTest_1.role, { getFilterByPermissions: getFilterByPermissions }); perm.getReadQuery(req, function (err, query) { if (err) return done(err); query.should.be.eql({ $and: ['the query', { _id: { $in: [doc.object, doc2.object] } }] }); done(); }); }); }); }; PermissionClassTest.prototype['_hasReadPermissionByOptions handle error'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var getFilterByPermissions = function (user, cb) { cb(new Error('some error')); }; var object = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, null, null, { getFilterByPermissions: getFilterByPermissions }); perm.hasReadPermission(req, object, function (err, hasReadPermission) { err.message.should.be.eql('some error'); if (hasReadPermission) return done('test failed'); done(); }); }; PermissionClassTest.prototype['_hasReadPermissionByOptions no query no role'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var getFilterByPermissions = function (user, cb) { cb(null, null); }; var object = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, null, null, { getFilterByPermissions: getFilterByPermissions }); perm.hasReadPermission(req, object, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done(); done('test failed'); }); }; PermissionClassTest.prototype['_hasReadPermissionByOptions no query with role'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var getFilterByPermissions = function (user, cb) { cb(null, null); }; var object = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, null, PermissionClassTest_1.role, { getFilterByPermissions: getFilterByPermissions }); perm.hasReadPermission(req, object, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done('test failed'); done(); }); }; PermissionClassTest.prototype['_hasReadPermissionByOptions handle query error'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var getFilterByPermissions = function (user, cb) { cb(null, 'some query'); }; var object = new PermissionClassTest_1.model({ string: 'string' }); var model = { findOne: function (filter, cb) { return cb(new Error('some error')); } }; var req = { user: user }; var perm = new PermissionClass_1.default(model, null, PermissionClassTest_1.role, { getFilterByPermissions: getFilterByPermissions }); perm.hasReadPermission(req, object, function (err, hasReadPermission) { err.message.should.be.eql('some error'); if (hasReadPermission) return done('test failed'); done(); }); }; PermissionClassTest.prototype['_hasReadPermissionByOptions with query and no doc'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var getFilterByPermissions = function (user, cb) { cb(null, { _id: { $exists: true } }); }; var object = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, null, PermissionClassTest_1.role, { getFilterByPermissions: getFilterByPermissions }); perm.hasReadPermission(req, object, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done('test failed'); done(); }); }; PermissionClassTest.prototype['_hasReadPermissionByOptions with query and doc'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var getFilterByPermissions = function (user, cb) { cb(null, { _id: { $exists: true } }); }; var object = new PermissionClassTest_1.model({ string: 'string' }); object.save(function (err) { if (err) return done(err); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, null, PermissionClassTest_1.role, { getFilterByPermissions: getFilterByPermissions }); perm.hasReadPermission(req, object, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done(); done('test failed'); }); }); }; PermissionClassTest.prototype['hasReadPermission handle role error'] = function (done) { var role = new PermissionClassTest_1.role({}); var user = new PermissionClassTest_1.user({ roles: [role] }); var req = { user: user }; var roleModel = { aggregate: function (filter, cb) { cb(new Error('some error')); } }; var doc = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, roleModel, {}); perm.hasReadPermission(req, doc, function (err, hasReadPermission) { err.message.should.be.eql('some error'); if (hasReadPermission) return done('test failed'); done(); }); }; PermissionClassTest.prototype['hasReadPermission handle getMaxPermissionsError error'] = function (done) { var role = new PermissionClassTest_1.role({}); var user = new PermissionClassTest_1.user({ roles: [role] }); var req = { user: user }; var permissionModel = { findOne: function (filter, cb) { cb(new Error('some error')); } }; var doc = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, permissionModel, null, {}); perm.hasReadPermission(req, doc, function (err, hasReadPermission) { err.message.should.be.eql('some error'); if (hasReadPermission) return done('test failed'); done(); }); }; PermissionClassTest.prototype['hasReadPermission with 1 role'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var doc = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, PermissionClassTest_1.role, {}); new PermissionClassTest_1.role({ name: 's_1_role_readper', schemas: [{ name: PermissionClassTest_1.model.modelName, permission: model_1.PermissionEnum.UPDATE }] }).save(function (err, role) { if (err) return done(err); user.roles = [role._id]; perm.hasReadPermission(req, doc, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done(); done('test failed'); }); }); }; PermissionClassTest.prototype['hasReadPermission with 1 permission'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var doc = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, PermissionClassTest_1.role, {}); doc.save(function (err, doc) { if (err) return done(err); new PermissionClassTest_1.permission({ table: PermissionClassTest_1.model.modelName, user: user._id, object: doc._id, permission: model_1.PermissionEnum.READ }).save(function (err) { if (err) return done(err); perm.hasReadPermission(req, doc, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done(); done('test failed'); }); }); }); }; PermissionClassTest.prototype['hasReadPermission with 0 permission'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var doc = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, PermissionClassTest_1.role, { getFilterByPermissions: function (a, cb) { return cb(null, null); } }); perm.hasReadPermission(req, doc, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done('test failed'); done(); }); }; PermissionClassTest.prototype['_hasAddPermissionByOptions handle error'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var hasAddPermission = function (user, cb) { cb(new Error('some error')); }; var object = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, null, null, { hasAddPermission: hasAddPermission }); perm.hasAddPermission(req, function (err, hasReadPermission) { err.message.should.be.eql('some error'); if (hasReadPermission) return done('test failed'); done(); }); }; PermissionClassTest.prototype['_hasAddPermissionByOptions response'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var hasAddPermission = function (user, cb) { cb(null, true); }; var object = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, null, null, { hasAddPermission: hasAddPermission }); perm.hasAddPermission(req, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done(); done('test failed'); }); }; PermissionClassTest.prototype['_hasAddPermissionByOptions without option and role'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var object = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, null, null, {}); perm.hasAddPermission(req, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done(); done('test failed'); }); }; PermissionClassTest.prototype['_hasAddPermissionByOptions without option and with role'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var object = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, null, PermissionClassTest_1.role, {}); perm.hasAddPermission(req, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done('test failed'); done(); }); }; PermissionClassTest.prototype['hasAddPermission handle role error'] = function (done) { var role = new PermissionClassTest_1.role({}); var user = new PermissionClassTest_1.user({ roles: [role] }); var req = { user: user }; var roleModel = { aggregate: function (filter, cb) { cb(new Error('some error')); } }; var doc = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, roleModel, {}); perm.hasAddPermission(req, function (err, hasReadPermission) { err.message.should.be.eql('some error'); if (hasReadPermission) return done('test failed'); done(); }); }; PermissionClassTest.prototype['hasAddPermission with role'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var perm = new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, PermissionClassTest_1.role, {}); new PermissionClassTest_1.role({ name: 'add_role', schemas: [{ name: PermissionClassTest_1.model.modelName, permission: model_1.PermissionEnum.ADD }] }).save(function (err, role) { if (err) return done(err); user.roles = [role._id]; perm.hasAddPermission(req, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done(); done('test failed'); }); }); }; PermissionClassTest.prototype['hasAddPermission without role'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var perm = new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, PermissionClassTest_1.role, {}); new PermissionClassTest_1.role({ name: 'no_role_add', schemas: [{ name: PermissionClassTest_1.model.modelName, permission: 0 }] }).save(function (err, role) { if (err) return done(err); user.roles = [role._id]; perm.hasAddPermission(req, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done('test failed'); done(); }); }); }; PermissionClassTest.prototype['_hasUpdatePermissionByOptions handle error'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var hasUpdatePermission = function (user, doc, cb) { cb(new Error('some error')); }; var object = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, null, null, { hasUpdatePermission: hasUpdatePermission }); perm.hasUpdatePermission(req, object, function (err, hasReadPermission) { err.message.should.be.eql('some error'); if (hasReadPermission) return done('test failed'); done(); }); }; PermissionClassTest.prototype['_hasUpdatePermissionByOptions response'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var hasUpdatePermission = function (user, doc, cb) { cb(null, true); }; var object = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, null, null, { hasUpdatePermission: hasUpdatePermission }); perm.hasUpdatePermission(req, object, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done(); done('test failed'); }); }; PermissionClassTest.prototype['_hasUpdatePermissionByOptions without option and role'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var object = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, null, null, {}); perm.hasUpdatePermission(req, object, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done(); done('test failed'); }); }; PermissionClassTest.prototype['_hasUpdatePermissionByOptions without option and with role'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var object = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, null, PermissionClassTest_1.role, {}); perm.hasUpdatePermission(req, object, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done('test failed'); done(); }); }; PermissionClassTest.prototype['hasUpdatePermission handle role error'] = function (done) { var role = new PermissionClassTest_1.role({}); var user = new PermissionClassTest_1.user({ roles: [role] }); var req = { user: user }; var roleModel = { aggregate: function (filter, cb) { cb(new Error('some error')); } }; var doc = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, roleModel, {}); perm.hasUpdatePermission(req, doc, function (err, hasReadPermission) { err.message.should.be.eql('some error'); if (hasReadPermission) return done('test failed'); done(); }); }; PermissionClassTest.prototype['hasUpdatePermission handle getMaxPermissionsError error'] = function (done) { var role = new PermissionClassTest_1.role({}); var user = new PermissionClassTest_1.user({ roles: [role] }); var req = { user: user }; var permissionModel = { findOne: function (filter, cb) { cb(new Error('some error')); } }; var doc = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, permissionModel, null, {}); perm.hasUpdatePermission(req, doc, function (err, hasReadPermission) { err.message.should.be.eql('some error'); if (hasReadPermission) return done('test failed'); done(); }); }; PermissionClassTest.prototype['hasUpdatePermission with permission'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var doc = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, PermissionClassTest_1.role, {}); new PermissionClassTest_1.permission({ table: PermissionClassTest_1.model.modelName, user: user, object: doc, permission: model_1.PermissionEnum.ADMIN }).save(function (err) { if (err) return done(err); perm.hasUpdatePermission(req, doc, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done(); done('test failed'); }); }); }; PermissionClassTest.prototype['hasUpdatePermission with role'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var doc = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, PermissionClassTest_1.role, {}); new PermissionClassTest_1.role({ name: 'update_role', schemas: [{ name: PermissionClassTest_1.model.modelName, permission: model_1.PermissionEnum.UPDATE }] }).save(function (err, role) { if (err) return done(err); user.roles = [role._id]; perm.hasUpdatePermission(req, doc, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done(); done('test failed'); }); }); }; PermissionClassTest.prototype['hasUpdatePermission without role'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var doc = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, PermissionClassTest_1.role, {}); new PermissionClassTest_1.role({ name: 'update_no_role', schemas: [{ name: PermissionClassTest_1.model.modelName, permission: 0 }] }).save(function (err, role) { if (err) return done(err); user.roles = [role._id]; perm.hasUpdatePermission(req, doc, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done('test failed'); done(); }); }); }; PermissionClassTest.prototype['_hasDeletePermissionByOptions handle error'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var hasDeletePermission = function (user, doc, cb) { cb(new Error('some error')); }; var object = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, null, null, { hasDeletePermission: hasDeletePermission }); perm.hasDeletePermission(req, object, function (err, hasReadPermission) { err.message.should.be.eql('some error'); if (hasReadPermission) return done('test failed'); done(); }); }; PermissionClassTest.prototype['_hasDeletePermissionByOptions response'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var hasDeletePermission = function (user, doc, cb) { cb(null, true); }; var object = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, null, null, { hasDeletePermission: hasDeletePermission }); perm.hasDeletePermission(req, object, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done(); done('test failed'); }); }; PermissionClassTest.prototype['_hasDeletePermissionByOptions without option and role'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var object = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, null, null, {}); perm.hasDeletePermission(req, object, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done(); done('test failed'); }); }; PermissionClassTest.prototype['_hasDeletePermissionByOptions without option and with role'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var object = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, null, PermissionClassTest_1.role, {}); perm.hasDeletePermission(req, object, function (err, hasReadPermission) { if (err) return done(err); if (hasReadPermission) return done('test failed'); done(); }); }; PermissionClassTest.prototype['hasDeletePermission handle role error'] = function (done) { var role = new PermissionClassTest_1.role({}); var user = new PermissionClassTest_1.user({ roles: [role] }); var req = { user: user }; var roleModel = { aggregate: function (filter, cb) { cb(new Error('some error')); } }; var doc = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, roleModel, {}); perm.hasDeletePermission(req, doc, function (err, hasReadPermission) { err.message.should.be.eql('some error'); if (hasReadPermission) return done('test failed'); done(); }); }; PermissionClassTest.prototype['hasDeletePermission handle getMaxPermissionsError error'] = function (done) { var role = new PermissionClassTest_1.role({}); var user = new PermissionClassTest_1.user({ roles: [role] }); var req = { user: user }; var permissionModel = { findOne: function (filter, cb) { cb(new Error('some error')); } }; var doc = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, permissionModel, null, {}); perm.hasDeletePermission(req, doc, function (err, hasReadPermission) { err.message.should.be.eql('some error'); if (hasReadPermission) return done('test failed'); done(); }); }; PermissionClassTest.prototype['hasDeletePermission with permission'] = function (done) { var user = new PermissionClassTest_1.user({ roles: [] }); var req = { user: user }; var doc = new PermissionClassTest_1.model({ string: 'string' }); var perm = new PermissionClass_1.default(PermissionClassTest_1.model, PermissionClassTest_1.permission, PermissionClassTest_1.role, {}); new PermissionClassTest_1.permission({ table: PermissionClassTest_1.model.modelName, user: user, object: