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
JavaScript
;
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