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
JavaScript
"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: