UNPKG

mongoose-restapi-ui

Version:

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

1,120 lines 49 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 router_1 = require("../src/router"); var express = require("express"); var mongoose = require("mongoose"); var bodyParser = require("body-parser"); var model_1 = require("../src/definitions/model"); var chai = require("chai"); var userSchema = new mongoose.Schema({ roles: [mongoose.Schema.Types.ObjectId] }); var CUSTOMER = 'Customer'; var PROVIDER = 'Provider'; var RouterTest = /** @class */ (function () { function RouterTest() { } RouterTest_1 = RouterTest; RouterTest.before = function (done) { var app = express(); app.use(bodyParser.json()); 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_router"; RouterTest_1.connection = mongoose.createConnection(MONGODB_CONNECTION); var customerSchema = new mongoose.Schema({ name: String, number: Number, boolean: Boolean, date: Date, objectid: mongoose.Schema.Types.ObjectId }); var providerSchema = new mongoose.Schema({ ref: { type: mongoose.Schema.Types.ObjectId, ref: CUSTOMER } }); var hasAddPerm = function (req, callback) { callback(null, true); }; var hasPerm = function (req, doc, callback) { callback(null, true); }; RouterTest_1.customer = RouterTest_1.connection.model(CUSTOMER, customerSchema); RouterTest_1.provider = RouterTest_1.connection.model(PROVIDER, providerSchema); var router = router_1.ApiRouter(); router.setGlobalRoute('/'); router.setModel("/" + PROVIDER, RouterTest_1.provider, { hasAdminPermission: hasPerm, hasEditPermission: hasPerm, hasAddPermission: hasAddPerm }); router.setModel("/" + CUSTOMER, RouterTest_1.customer, { hasAdminPermission: hasPerm, hasEditPermission: hasPerm, hasAddPermission: hasAddPerm, name: 'name' }); app.use('/', router); app.get('/tree', router.publishUiTree()); RouterTest_1.server = app; var chaiHttp = require('chai-http'); chai.use(chaiHttp); chai.should(); var app2 = express(); var router2 = router_1.ApiRouter({ isMongo4: true }); router2.setGlobalRoute('/mongo4'); router2.setModel("/" + PROVIDER, RouterTest_1.provider); router2.setModel("/" + CUSTOMER, RouterTest_1.customer, { name: 'name' }); app2.use('/', router2); app2.get('/tree', router2.publishUiTree()); RouterTest_1.server2 = app2; done(); }; RouterTest.after = function (done) { RouterTest_1.connection.dropDatabase(function (error) { if (error) return done(error); RouterTest_1.connection.close(function (error) { if (error) return done(error); done(error); }); }); }; RouterTest.prototype.getAllCustomerObjects = function (done) { chai.request(RouterTest_1.server) .get("/" + CUSTOMER) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.total_pages.should.be.eql(0); res.body.count.should.be.eql(0); res.body.page.should.be.eql(1); res.body.results.should.be.a('array'); res.body.results.length.should.be.eql(0); done(); }); }; RouterTest.prototype.getAllProviderObjects = function (done) { chai.request(RouterTest_1.server) .get("/" + PROVIDER) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.total_pages.should.be.eql(0); res.body.count.should.be.eql(0); res.body.page.should.be.eql(1); res.body.results.should.be.a('array'); res.body.results.length.should.be.eql(0); done(); }); }; RouterTest.prototype.postCustomer = function (done) { var customer = { name: 'Hector' }; chai.request(RouterTest_1.server) .post("/" + CUSTOMER) .send(customer) .end(function (err, res) { if (err) return done(err); res.should.have.status(201); res.body.should.be.a('object'); res.body.should.have.property('_id'); res.body.should.have.property('name').eql('Hector'); RouterTest_1.customerRef = res.body; done(); }); }; RouterTest.prototype.getIdCustomer = function (done) { chai.request(RouterTest_1.server) .get("/" + CUSTOMER + "/" + RouterTest_1.customerRef._id) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id'); res.body.should.have.property('name').eql('Hector'); done(); }); }; RouterTest.prototype.getNameCustomer = function (done) { chai.request(RouterTest_1.server) .get("/" + CUSTOMER + "/" + RouterTest_1.customerRef.name) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id'); res.body.should.have.property('name').eql('Hector'); done(); }); }; RouterTest.prototype.updateCustomer = function (done) { var customer = { name: 'Hector', number: 1 }; chai.request(RouterTest_1.server) .put("/" + CUSTOMER + "/" + RouterTest_1.customerRef._id) .send(customer) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id').eql(RouterTest_1.customerRef._id); res.body.should.have.property('name').eql('Hector'); res.body.should.have.property('number').eql(1); RouterTest_1.customerRef = res.body; done(); }); }; RouterTest.prototype.updateByNameCustomer = function (done) { var customer = { name: 'Hector', number: 2 }; chai.request(RouterTest_1.server) .put("/" + CUSTOMER + "/" + RouterTest_1.customerRef.name) .send(customer) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id').eql(RouterTest_1.customerRef._id); res.body.should.have.property('name').eql('Hector'); res.body.should.have.property('number').eql(2); RouterTest_1.customerRef = res.body; done(); }); }; RouterTest.prototype.applyPatchCustomer = function (done) { var customer = { number: 3 }; chai.request(RouterTest_1.server) .patch("/" + CUSTOMER + "/" + RouterTest_1.customerRef._id) .send(customer) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id').eql(RouterTest_1.customerRef._id); res.body.should.have.property('name').eql('Hector'); res.body.should.have.property('number').eql(3); RouterTest_1.customerRef = res.body; done(); }); }; RouterTest.prototype.applyPatchByNameCustomer = function (done) { var customer = { number: 4 }; chai.request(RouterTest_1.server) .patch("/" + CUSTOMER + "/" + RouterTest_1.customerRef.name) .send(customer) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id').eql(RouterTest_1.customerRef._id); res.body.should.have.property('name').eql('Hector'); res.body.should.have.property('number').eql(4); RouterTest_1.customerRef = res.body; done(); }); }; RouterTest.prototype.deleteCustomer = function (done) { chai.request(RouterTest_1.server) .delete("/" + CUSTOMER + "/" + RouterTest_1.customerRef._id) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id').eql(RouterTest_1.customerRef._id); res.body.should.have.property('name').eql('Hector'); RouterTest_1.customerRef = res.body; done(); }); }; RouterTest.prototype.getTree = function (done) { chai.request(RouterTest_1.server) .get('/tree') .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('array'); res.body.length.should.be.eql(2); done(); }); }; var RouterTest_1; __decorate([ mocha_typescript_1.test("should get all customer objects") ], RouterTest.prototype, "getAllCustomerObjects", null); __decorate([ mocha_typescript_1.test("should get all Provider objects") ], RouterTest.prototype, "getAllProviderObjects", null); __decorate([ mocha_typescript_1.test("should get create a customer object") ], RouterTest.prototype, "postCustomer", null); __decorate([ mocha_typescript_1.test("find by id - should get get the created customer object") ], RouterTest.prototype, "getIdCustomer", null); __decorate([ mocha_typescript_1.test("find by name - should get get the created customer object") ], RouterTest.prototype, "getNameCustomer", null); __decorate([ mocha_typescript_1.test("should update the created customer object") ], RouterTest.prototype, "updateCustomer", null); __decorate([ mocha_typescript_1.test("should update finded by name the created customer object") ], RouterTest.prototype, "updateByNameCustomer", null); __decorate([ mocha_typescript_1.test("should update a field the created customer object") ], RouterTest.prototype, "applyPatchCustomer", null); __decorate([ mocha_typescript_1.test("should update a field finded by name the created customer object") ], RouterTest.prototype, "applyPatchByNameCustomer", null); __decorate([ mocha_typescript_1.test("should delete the created customer object") ], RouterTest.prototype, "deleteCustomer", null); __decorate([ mocha_typescript_1.test("should get the tree") ], RouterTest.prototype, "getTree", null); RouterTest = RouterTest_1 = __decorate([ mocha_typescript_1.suite ], RouterTest); return RouterTest; }()); var RouterTestPermissions = /** @class */ (function () { function RouterTestPermissions() { } RouterTestPermissions_1 = RouterTestPermissions; RouterTestPermissions.before = function (done) { var app = express(); app.use(bodyParser.json()); 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_router_permissions"; RouterTestPermissions_1.connection = mongoose.createConnection(MONGODB_CONNECTION); var customerSchema = new mongoose.Schema({ name: String, number: Number, boolean: Boolean, date: Date, objectid: mongoose.Schema.Types.ObjectId }); var providerSchema = new mongoose.Schema({ ref: { type: mongoose.Schema.Types.ObjectId, ref: CUSTOMER } }); var User = RouterTestPermissions_1.connection.model('User', userSchema); RouterTestPermissions_1.customer = RouterTestPermissions_1.connection.model(CUSTOMER, customerSchema); RouterTestPermissions_1.provider = RouterTestPermissions_1.connection.model(PROVIDER, providerSchema); var router = router_1.ApiRouter({ strict: true }); RouterTestPermissions_1.user = new User(); var adminId = null; router.use(function (req, res, next) { req.user = RouterTestPermissions_1.user; req.user.roles = [adminId]; next(); }); router.setConnection(RouterTestPermissions_1.connection); router.setGlobalRoute('/'); RouterTestPermissions_1.emm = router.setModel("/" + PROVIDER, RouterTestPermissions_1.provider); router.setModel("/" + CUSTOMER, RouterTestPermissions_1.customer, { name: 'name' }); app.use('/', router); app.get('/tree', router.publishUiTree()); var RoleModel = router.roleModel(); new RoleModel({ name: 'admin', schemas: [{ name: RouterTestPermissions_1.provider.modelName, permission: model_1.PermissionEnum.ADMIN }, { name: RouterTestPermissions_1.customer.modelName, permission: model_1.PermissionEnum.ADMIN }] }).save(function (err, doc) { if (err) return done(err); adminId = doc._id; var chaiHttp = require('chai-http'); chai.use(chaiHttp); chai.should(); RouterTestPermissions_1.server = app; done(); }); }; RouterTestPermissions.after = function (done) { RouterTestPermissions_1.connection.dropDatabase(function (err) { if (err) return done(err); RouterTestPermissions_1.connection.close(function (error) { if (error) return done(error); done(error); }); }); }; RouterTestPermissions.prototype.getAllCustomerObjects = function (done) { chai.request(RouterTestPermissions_1.server) .get("/" + CUSTOMER) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.total_pages.should.be.eql(0); res.body.count.should.be.eql(0); res.body.page.should.be.eql(1); res.body.results.should.be.a('array'); res.body.results.length.should.be.eql(0); done(); }); }; RouterTestPermissions.prototype.getAllProviderObjects = function (done) { chai.request(RouterTestPermissions_1.server) .get("/" + PROVIDER) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.total_pages.should.be.eql(0); res.body.count.should.be.eql(0); res.body.page.should.be.eql(1); res.body.results.should.be.a('array'); res.body.results.length.should.be.eql(0); done(); }); }; RouterTestPermissions.prototype.postCustomer = function (done) { var customer = { name: 'Hector' }; chai.request(RouterTestPermissions_1.server) .post("/" + CUSTOMER) .send(customer) .end(function (err, res) { if (err) return done(err); res.should.have.status(201); res.body.should.be.a('object'); res.body.should.have.property('_id'); res.body.should.have.property('name').eql('Hector'); RouterTestPermissions_1.customerRef = res.body; done(); }); }; RouterTestPermissions.prototype.getIdCustomer = function (done) { chai.request(RouterTestPermissions_1.server) .get("/" + CUSTOMER + "/" + RouterTestPermissions_1.customerRef._id) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id'); res.body.should.have.property('name').eql('Hector'); done(); }); }; RouterTestPermissions.prototype.getNameCustomer = function (done) { chai.request(RouterTestPermissions_1.server) .get("/" + CUSTOMER + "/" + RouterTestPermissions_1.customerRef.name) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id'); res.body.should.have.property('name').eql('Hector'); done(); }); }; RouterTestPermissions.prototype.updateCustomer = function (done) { var customer = { name: 'Hector', number: 1 }; chai.request(RouterTestPermissions_1.server) .put("/" + CUSTOMER + "/" + RouterTestPermissions_1.customerRef._id) .send(customer) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id').eql(RouterTestPermissions_1.customerRef._id); res.body.should.have.property('name').eql('Hector'); res.body.should.have.property('number').eql(1); RouterTestPermissions_1.customerRef = res.body; done(); }); }; RouterTestPermissions.prototype.updateByNameCustomer = function (done) { var customer = { name: 'Hector', number: 2 }; chai.request(RouterTestPermissions_1.server) .put("/" + CUSTOMER + "/" + RouterTestPermissions_1.customerRef.name) .send(customer) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id').eql(RouterTestPermissions_1.customerRef._id); res.body.should.have.property('name').eql('Hector'); res.body.should.have.property('number').eql(2); RouterTestPermissions_1.customerRef = res.body; done(); }); }; RouterTestPermissions.prototype.applyPatchCustomer = function (done) { var customer = { number: 3 }; chai.request(RouterTestPermissions_1.server) .patch("/" + CUSTOMER + "/" + RouterTestPermissions_1.customerRef._id) .send(customer) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id').eql(RouterTestPermissions_1.customerRef._id); res.body.should.have.property('name').eql('Hector'); res.body.should.have.property('number').eql(3); RouterTestPermissions_1.customerRef = res.body; done(); }); }; RouterTestPermissions.prototype.applyPatchByNameCustomer = function (done) { var customer = { number: 4 }; chai.request(RouterTestPermissions_1.server) .patch("/" + CUSTOMER + "/" + RouterTestPermissions_1.customerRef.name) .send(customer) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id').eql(RouterTestPermissions_1.customerRef._id); res.body.should.have.property('name').eql('Hector'); res.body.should.have.property('number').eql(4); RouterTestPermissions_1.customerRef = res.body; done(); }); }; RouterTestPermissions.prototype.deleteCustomer = function (done) { chai.request(RouterTestPermissions_1.server) .delete("/" + CUSTOMER + "/" + RouterTestPermissions_1.customerRef._id) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id').eql(RouterTestPermissions_1.customerRef._id); res.body.should.have.property('name').eql('Hector'); RouterTestPermissions_1.customerRef = res.body; done(); }); }; RouterTestPermissions.prototype.getTree = function (done) { chai.request(RouterTest.server) .get('/tree') .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('array'); res.body.length.should.be.eql(2); done(); }); }; var RouterTestPermissions_1; __decorate([ mocha_typescript_1.test("should get all customer objects") ], RouterTestPermissions.prototype, "getAllCustomerObjects", null); __decorate([ mocha_typescript_1.test("should get all Provider objects") ], RouterTestPermissions.prototype, "getAllProviderObjects", null); __decorate([ mocha_typescript_1.test("should create a customer object") ], RouterTestPermissions.prototype, "postCustomer", null); __decorate([ mocha_typescript_1.test("find by id - should get get the created customer object") ], RouterTestPermissions.prototype, "getIdCustomer", null); __decorate([ mocha_typescript_1.test("find by name - should get get the created customer object") ], RouterTestPermissions.prototype, "getNameCustomer", null); __decorate([ mocha_typescript_1.test("should update the created customer object") ], RouterTestPermissions.prototype, "updateCustomer", null); __decorate([ mocha_typescript_1.test("should update finded by name the created customer object") ], RouterTestPermissions.prototype, "updateByNameCustomer", null); __decorate([ mocha_typescript_1.test("should update a field the created customer object") ], RouterTestPermissions.prototype, "applyPatchCustomer", null); __decorate([ mocha_typescript_1.test("should update a field finded by name the created customer object") ], RouterTestPermissions.prototype, "applyPatchByNameCustomer", null); __decorate([ mocha_typescript_1.test("should delete the created customer object") ], RouterTestPermissions.prototype, "deleteCustomer", null); __decorate([ mocha_typescript_1.test("should get the tree") ], RouterTestPermissions.prototype, "getTree", null); RouterTestPermissions = RouterTestPermissions_1 = __decorate([ mocha_typescript_1.suite ], RouterTestPermissions); return RouterTestPermissions; }()); var RouterTestPermissionsEndPoints = /** @class */ (function () { function RouterTestPermissionsEndPoints() { } RouterTestPermissionsEndPoints_1 = RouterTestPermissionsEndPoints; RouterTestPermissionsEndPoints.before = function (done) { var app = express(); app.use(bodyParser.json()); 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_router_permissions_endpoints"; RouterTestPermissionsEndPoints_1.connection = mongoose.createConnection(MONGODB_CONNECTION); var customerSchema = new mongoose.Schema({ name: String, number: Number, boolean: Boolean, date: Date, objectid: mongoose.Schema.Types.ObjectId }); var providerSchema = new mongoose.Schema({ ref: { type: mongoose.Schema.Types.ObjectId, ref: CUSTOMER } }); var user = RouterTestPermissionsEndPoints_1.connection.model('User', userSchema); RouterTestPermissionsEndPoints_1.customer = RouterTestPermissionsEndPoints_1.connection.model(CUSTOMER, customerSchema); RouterTestPermissionsEndPoints_1.provider = RouterTestPermissionsEndPoints_1.connection.model(PROVIDER, providerSchema); RouterTestPermissionsEndPoints_1.router = router_1.ApiRouter({ strict: true }); var router = RouterTestPermissionsEndPoints_1.router; var idAdmin = null; router.use(function (req, res, next) { req.user = new user({ roles: [idAdmin] }); next(); }); router.setConnection(RouterTestPermissionsEndPoints_1.connection); router.setGlobalRoute('/'); var hasAdminPermission = function (req, doc, callback) { callback(null, true); }; RouterTestPermissionsEndPoints_1.schema = router.setModel("/" + PROVIDER, RouterTestPermissionsEndPoints_1.provider, { hasAdminPermission: hasAdminPermission }); router.setModel("/" + CUSTOMER, RouterTestPermissionsEndPoints_1.customer, { name: 'name', hasAdminPermission: hasAdminPermission }); app.use('/', router); app.get('/tree', router.publishUiTree()); var RoleModel = router.roleModel(); new RoleModel({ name: 'admin', schemas: [{ name: RouterTestPermissionsEndPoints_1.provider.modelName, permission: model_1.PermissionEnum.ADMIN }, { name: RouterTestPermissionsEndPoints_1.customer.modelName, permission: model_1.PermissionEnum.ADMIN }] }).save(function (err, doc) { if (err) return done(err); idAdmin = doc._id; RouterTestPermissionsEndPoints_1.server = app; var chaiHttp = require('chai-http'); chai.use(chaiHttp); chai.should(); done(); }); }; RouterTestPermissionsEndPoints.after = function (done) { RouterTestPermissionsEndPoints_1.connection.dropDatabase(function (error) { if (error) return done(error); RouterTestPermissionsEndPoints_1.connection.close(function (error) { if (error) return done(error); done(error); }); }); }; RouterTestPermissionsEndPoints.prototype.getAllCustomerObjects = function (done) { chai.request(RouterTestPermissionsEndPoints_1.server) .get("/" + CUSTOMER) .end(function (err, res) { chai.request(RouterTestPermissionsEndPoints_1.server) .get("/" + CUSTOMER) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.total_pages.should.be.eql(0); res.body.count.should.be.eql(0); res.body.page.should.be.eql(1); res.body.results.should.be.a('array'); res.body.results.length.should.be.eql(0); done(); }); }); }; RouterTestPermissionsEndPoints.prototype.getAllProviderObjects = function (done) { chai.request(RouterTestPermissionsEndPoints_1.server) .get("/" + PROVIDER) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.total_pages.should.be.eql(0); res.body.count.should.be.eql(0); res.body.page.should.be.eql(1); res.body.results.should.be.a('array'); res.body.results.length.should.be.eql(0); done(); }); }; RouterTestPermissionsEndPoints.prototype.postCustomer = function (done) { var customer = { name: 'Hector' }; chai.request(RouterTestPermissionsEndPoints_1.server) .post("/" + CUSTOMER) .send(customer) .end(function (err, res) { if (err) return done(err); res.should.have.status(201); res.body.should.be.a('object'); res.body.should.have.property('_id'); res.body.should.have.property('name').eql('Hector'); RouterTestPermissionsEndPoints_1.customerRef = res.body; done(); }); }; RouterTestPermissionsEndPoints.prototype.getIdCustomer = function (done) { chai.request(RouterTestPermissionsEndPoints_1.server) .get("/" + CUSTOMER + "/" + RouterTestPermissionsEndPoints_1.customerRef._id) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id'); res.body.should.have.property('name').eql('Hector'); done(); }); }; RouterTestPermissionsEndPoints.prototype.getNameCustomer = function (done) { chai.request(RouterTestPermissionsEndPoints_1.server) .get("/" + CUSTOMER + "/" + RouterTestPermissionsEndPoints_1.customerRef.name) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id'); res.body.should.have.property('name').eql('Hector'); done(); }); }; RouterTestPermissionsEndPoints.prototype.updateCustomer = function (done) { var customer = { name: 'Hector', number: 1 }; chai.request(RouterTestPermissionsEndPoints_1.server) .put("/" + CUSTOMER + "/" + RouterTestPermissionsEndPoints_1.customerRef._id) .send(customer) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id').eql(RouterTestPermissionsEndPoints_1.customerRef._id); res.body.should.have.property('name').eql('Hector'); res.body.should.have.property('number').eql(1); RouterTestPermissionsEndPoints_1.customerRef = res.body; done(); }); }; RouterTestPermissionsEndPoints.prototype.updateByNameCustomer = function (done) { var customer = { name: 'Hector', number: 2 }; chai.request(RouterTestPermissionsEndPoints_1.server) .put("/" + CUSTOMER + "/" + RouterTestPermissionsEndPoints_1.customerRef.name) .send(customer) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id').eql(RouterTestPermissionsEndPoints_1.customerRef._id); res.body.should.have.property('name').eql('Hector'); res.body.should.have.property('number').eql(2); RouterTestPermissionsEndPoints_1.customerRef = res.body; done(); }); }; RouterTestPermissionsEndPoints.prototype.applyPatchCustomer = function (done) { var customer = { number: 3 }; chai.request(RouterTestPermissionsEndPoints_1.server) .patch("/" + CUSTOMER + "/" + RouterTestPermissionsEndPoints_1.customerRef._id) .send(customer) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id').eql(RouterTestPermissionsEndPoints_1.customerRef._id); res.body.should.have.property('name').eql('Hector'); res.body.should.have.property('number').eql(3); RouterTestPermissionsEndPoints_1.customerRef = res.body; done(); }); }; RouterTestPermissionsEndPoints.prototype.applyPatchByNameCustomer = function (done) { var customer = { number: 4 }; chai.request(RouterTestPermissionsEndPoints_1.server) .patch("/" + CUSTOMER + "/" + RouterTestPermissionsEndPoints_1.customerRef.name) .send(customer) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id').eql(RouterTestPermissionsEndPoints_1.customerRef._id); res.body.should.have.property('name').eql('Hector'); res.body.should.have.property('number').eql(4); RouterTestPermissionsEndPoints_1.customerRef = res.body; done(); }); }; RouterTestPermissionsEndPoints.prototype.deleteCustomer = function (done) { chai.request(RouterTestPermissionsEndPoints_1.server) .delete("/" + CUSTOMER + "/" + RouterTestPermissionsEndPoints_1.customerRef._id) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('_id').eql(RouterTestPermissionsEndPoints_1.customerRef._id); res.body.should.have.property('name').eql('Hector'); RouterTestPermissionsEndPoints_1.customerRef = res.body; done(); }); }; RouterTestPermissionsEndPoints.prototype.getTree = function (done) { chai.request(RouterTestPermissionsEndPoints_1.server) .get('/tree') .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('array'); res.body.length.should.be.eql(2); done(); }); }; RouterTestPermissionsEndPoints.prototype.getTreeHandleError = function (done) { var p = RouterTestPermissionsEndPoints_1.schema.getMaxPermission; RouterTestPermissionsEndPoints_1.schema.getMaxPermission = function (err, cb) { return cb('error'); }; chai.request(RouterTestPermissionsEndPoints_1.server) .get('/tree') .end(function (err, res) { RouterTestPermissionsEndPoints_1.schema.getMaxPermission = p; if (err) return done(err); res.should.have.status(500); done(); }); }; var RouterTestPermissionsEndPoints_1; __decorate([ mocha_typescript_1.test("should get all customer objects") ], RouterTestPermissionsEndPoints.prototype, "getAllCustomerObjects", null); __decorate([ mocha_typescript_1.test("should get all Provider objects") ], RouterTestPermissionsEndPoints.prototype, "getAllProviderObjects", null); __decorate([ mocha_typescript_1.test("should get create a customer object") ], RouterTestPermissionsEndPoints.prototype, "postCustomer", null); __decorate([ mocha_typescript_1.test("find by id - should get get the created customer object") ], RouterTestPermissionsEndPoints.prototype, "getIdCustomer", null); __decorate([ mocha_typescript_1.test("find by name - should get get the created customer object") ], RouterTestPermissionsEndPoints.prototype, "getNameCustomer", null); __decorate([ mocha_typescript_1.test("should update the created customer object") ], RouterTestPermissionsEndPoints.prototype, "updateCustomer", null); __decorate([ mocha_typescript_1.test("should update finded by name the created customer object") ], RouterTestPermissionsEndPoints.prototype, "updateByNameCustomer", null); __decorate([ mocha_typescript_1.test("should update a field the created customer object") ], RouterTestPermissionsEndPoints.prototype, "applyPatchCustomer", null); __decorate([ mocha_typescript_1.test("should update a field finded by name the created customer object") ], RouterTestPermissionsEndPoints.prototype, "applyPatchByNameCustomer", null); __decorate([ mocha_typescript_1.test("should delete the created customer object") ], RouterTestPermissionsEndPoints.prototype, "deleteCustomer", null); __decorate([ mocha_typescript_1.test("should get the tree") ], RouterTestPermissionsEndPoints.prototype, "getTree", null); __decorate([ mocha_typescript_1.test("tree handle error from permissions") ], RouterTestPermissionsEndPoints.prototype, "getTreeHandleError", null); RouterTestPermissionsEndPoints = RouterTestPermissionsEndPoints_1 = __decorate([ mocha_typescript_1.suite ], RouterTestPermissionsEndPoints); return RouterTestPermissionsEndPoints; }()); var RouterTestRoleEndPoints = /** @class */ (function () { function RouterTestRoleEndPoints() { } RouterTestRoleEndPoints_1 = RouterTestRoleEndPoints; RouterTestRoleEndPoints.before = function (done) { var app = express(); var app2 = express(); app.use(bodyParser.json()); 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_router_role"; RouterTestRoleEndPoints_1.connection = mongoose.createConnection(MONGODB_CONNECTION); var customerSchema = new mongoose.Schema({ name: String, number: Number, boolean: Boolean, date: Date, objectid: mongoose.Schema.Types.ObjectId }); var providerSchema = new mongoose.Schema({ ref: { type: mongoose.Schema.Types.ObjectId, ref: CUSTOMER } }); var User = RouterTestRoleEndPoints_1.connection.model('User', userSchema); RouterTestRoleEndPoints_1.customer = RouterTestRoleEndPoints_1.connection.model(CUSTOMER, customerSchema); RouterTestRoleEndPoints_1.provider = RouterTestRoleEndPoints_1.connection.model(PROVIDER, providerSchema); RouterTestRoleEndPoints_1.router = router_1.ApiRouter({ strict: true }); var router = RouterTestRoleEndPoints_1.router; var idAdmin = null; router.setConnection(RouterTestRoleEndPoints_1.connection); router.setGlobalRoute(''); router.setGlobalRoute('/'); RouterTestRoleEndPoints_1.schema = router.setModel("/" + PROVIDER, RouterTestRoleEndPoints_1.provider); router.setModel("/" + CUSTOMER, RouterTestRoleEndPoints_1.customer, { name: 'name' }); app.use(function (req, res, next) { req.user = new User({ roles: [idAdmin], super_admin: true }); req.user.super_admin = true; next(); }); app2.use(function (req, res, next) { req.user = new User({ roles: [idAdmin], super_admin: false }); next(); }); app2.use('/', router); app.use('/', router); router.setRoleEndpoints('/roles2/'); router.setRoleEndpoints(); app.get('/tree', router.publishUiTree()); var RoleModel = router.roleModel(); new RoleModel({ name: 'admin', schemas: [{ name: RouterTestRoleEndPoints_1.provider.modelName, permission: model_1.PermissionEnum.ADMIN }, { name: RouterTestRoleEndPoints_1.customer.modelName, permission: model_1.PermissionEnum.ADMIN }] }).save(function (err, doc) { if (err) return done(err); idAdmin = doc._id; RouterTestRoleEndPoints_1.server = app; RouterTestRoleEndPoints_1.server2 = app2; var chaiHttp = require('chai-http'); chai.use(chaiHttp); chai.should(); done(); }); }; RouterTestRoleEndPoints.after = function (done) { RouterTestRoleEndPoints_1.connection.dropDatabase(function (err) { if (err) return done(err); RouterTestRoleEndPoints_1.connection.close(function (error) { if (error) return done(error); done(error); }); }); }; RouterTestRoleEndPoints.prototype.getAllCustomerObjectsWithoutAuth = function (done) { chai.request(RouterTestRoleEndPoints_1.server2) .get("/roles") .end(function (err, res) { if (err) return done(err); res.should.have.status(403); done(); }); }; RouterTestRoleEndPoints.prototype.getAllCustomerObjects = function (done) { chai.request(RouterTestRoleEndPoints_1.server) .get("/roles") .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.should.be.a('array'); done(); }); }; RouterTestRoleEndPoints.prototype.postRole = function (done) { chai.request(RouterTestRoleEndPoints_1.server) .post("/roles") .send({ name: 'roleTest', schemas: [] }) .end(function (err, res) { if (err) return done(err); res.should.have.status(201); done(); }); }; RouterTestRoleEndPoints.prototype.getRoleNotFound = function (done) { chai.request(RouterTestRoleEndPoints_1.server) .get("/roles/roleTest_not_found") .end(function (err, res) { if (err) return done(err); res.should.have.status(404); done(); }); }; RouterTestRoleEndPoints.prototype.getSpecificRole = function (done) { chai.request(RouterTestRoleEndPoints_1.server) .get("/roles/roleTest") .end(function (err, res) { if (err) return done(err); res.should.have.status(200); RouterTestRoleEndPoints_1.id = res.body._id; done(); }); }; RouterTestRoleEndPoints.prototype.getSpecificRoleId = function (done) { chai.request(RouterTestRoleEndPoints_1.server) .get("/roles/" + RouterTestRoleEndPoints_1.id) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); done(); }); }; RouterTestRoleEndPoints.prototype.updateSpecificRoleId = function (done) { chai.request(RouterTestRoleEndPoints_1.server) .put("/roles/" + RouterTestRoleEndPoints_1.id) .send({ name: 'pepito' }) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); done(); }); }; RouterTestRoleEndPoints.prototype.patchSpecificRoleId = function (done) { chai.request(RouterTestRoleEndPoints_1.server) .patch("/roles/" + RouterTestRoleEndPoints_1.id) .send({ name: 'pepito' }) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.name.should.be.eql('pepito'); done(); }); }; RouterTestRoleEndPoints.prototype.patchSchemasSpecificRoleId = function (done) { chai.request(RouterTestRoleEndPoints_1.server) .patch("/roles/" + RouterTestRoleEndPoints_1.id) .send({ schemas: [{ name: 'pepe', permission: 0 }] }) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); res.body.schemas.should.be.a('array'); res.body.schemas.length.should.be.eql(1); done(); }); }; RouterTestRoleEndPoints.prototype.removeSpecificRole = function (done) { chai.request(RouterTestRoleEndPoints_1.server) .delete("/roles/" + RouterTestRoleEndPoints_1.id) .end(function (err, res) { if (err) return done(err); res.should.have.status(200); done(); }); }; var RouterTestRoleEndPoints_1; __decorate([ mocha_typescript_1.test("should get unauth") ], RouterTestRoleEndPoints.prototype, "getAllCustomerObjectsWithoutAuth", null); __decorate([ mocha_typescript_1.test("should get all role objects") ], RouterTestRoleEndPoints.prototype, "getAllCustomerObjects", null); __decorate([ mocha_typescript_1.test("should post a role") ], RouterTestRoleEndPoints.prototype, "postRole", null); __decorate([ mocha_typescript_1.test("should get 404 not found") ], RouterTestRoleEndPoints.prototype, "getRoleNotFound", null); __decorate([ mocha_typescript_1.test("should get a role") ], RouterTestRoleEndPoints.prototype, "getSpecificRole", null); __decorate([ mocha_typescript_1.test("should get a role by id") ], RouterTestRoleEndPoints.prototype, "getSpecificRoleId", null); __decorate([ mocha_typescript_1.test("should update a role by id") ], RouterTestRoleEndPoints.prototype, "updateSpecificRoleId", null); __decorate([ mocha_typescript_1.test("should change name of role by id") ], RouterTestRoleEndPoints.prototype, "patchSpecificRoleId", null); __decorate([ mocha_typescript_1.test("should change name of role by id") ], RouterTestRoleEndPoints.prototype, "patchSchemasSpecificRoleId", null); __decorate([ mocha_typescript_1.test("should remove a role") ], RouterTestRoleEndPoints.prototype, "removeSpecificRole", null); RouterTestRoleEndPoints = RouterTestRoleEndPoints_1 = __decorate([ mocha_typescript_1.suite ], RouterTestRoleEndPoints); return RouterTestRoleEndPoints; }()); //# sourceMappingURL=Router.test.js.map