From ed61f4367d493ea304ee5abd536b1991bf6b31f5 Mon Sep 17 00:00:00 2001 From: maksimchepelev Date: Tue, 27 Nov 2018 17:44:14 +0300 Subject: [PATCH] isTest() in decorators --- package.json | 22 +++++++++++----------- src/controllers/tunnel-controller.js | 4 ++-- src/decorators/authorization-decorator.js | 7 +++++++ src/decorators/cli-decorator.js | 7 +++++++ src/decorators/response-decorator.js | 4 ++++ src/decorators/transaction-decorator.js | 9 +++++++++ src/helpers/app-helper.js | 3 +++ src/services/tunnel-service.js | 8 ++++---- 8 files changed, 47 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index bf0868e38..921f717cb 100644 --- a/package.json +++ b/package.json @@ -41,8 +41,8 @@ "postinstall": "bash scripts/postinstall.sh && NODE_ENV=production node ./src/main.js init", "lint": "./node_modules/.bin/eslint \"**/*.js\"", "automatic-release": "automatic-release", - "test": "NODE_ENV=test mocha", - "coverage": "NODE_ENV=test nyc mocha" + "test": "NODE_ENV=test mocha", + "coverage": "NODE_ENV=test nyc mocha" }, "preferGlobal": true, "bin": { @@ -81,14 +81,14 @@ }, "devDependencies": { "automatic-release": "^1.1.1", - "bdd-lazy-var": "^2.5.0", - "chai": "^4.2.0", - "chai-as-promised": "^7.1.1", - "chai-http": "^4.2.0", - "eslint": "^5.6.1", - "mocha": "^5.2.0", - "nyc": "^13.1.0", - "sinon": "^7.1.1", - "sinon-chai": "^3.2.0" + "bdd-lazy-var": "^2.5.0", + "chai": "^4.2.0", + "chai-as-promised": "^7.1.1", + "chai-http": "^4.2.0", + "eslint": "^5.6.1", + "mocha": "^5.2.0", + "nyc": "^13.1.0", + "sinon": "^7.1.1", + "sinon-chai": "^3.2.0" } } diff --git a/src/controllers/tunnel-controller.js b/src/controllers/tunnel-controller.js index 17a794df4..defb6efa4 100644 --- a/src/controllers/tunnel-controller.js +++ b/src/controllers/tunnel-controller.js @@ -45,6 +45,6 @@ const getTunnelEndPoint = async function (req, user) { }; module.exports = { - manageTunnelEndPoint: isTest() ? manageTunnelEndPoint : AuthDecorator.checkAuthToken(manageTunnelEndPoint), - getTunnelEndPoint: isTest() ? getTunnelEndPoint : AuthDecorator.checkAuthToken(getTunnelEndPoint), + manageTunnelEndPoint: AuthDecorator.checkAuthToken(manageTunnelEndPoint), + getTunnelEndPoint: AuthDecorator.checkAuthToken(getTunnelEndPoint), }; \ No newline at end of file diff --git a/src/decorators/authorization-decorator.js b/src/decorators/authorization-decorator.js index b4a36ba75..a3f78aee4 100644 --- a/src/decorators/authorization-decorator.js +++ b/src/decorators/authorization-decorator.js @@ -17,9 +17,13 @@ const AccessTokenManager = require('../sequelize/managers/access-token-manager') const FogManager = require('../sequelize/managers/iofog-manager') const FogAccessTokenManager = require('../sequelize/managers/iofog-access-token-manager') const Errors = require('../helpers/errors') +const { isTest } = require('../helpers/app-helper'); function checkAuthToken(f) { return async function() { + if (isTest()) { + return await f.apply(this, arguments); + } const fArgs = Array.prototype.slice.call(arguments); const req = fArgs[0]; @@ -46,6 +50,9 @@ function checkAuthToken(f) { function checkFogToken(f) { return async function() { + if (isTest()) { + return await f.apply(this, arguments); + } const fArgs = Array.prototype.slice.call(arguments); const req = fArgs[0]; diff --git a/src/decorators/cli-decorator.js b/src/decorators/cli-decorator.js index b0a84c9e0..0829bfaf7 100644 --- a/src/decorators/cli-decorator.js +++ b/src/decorators/cli-decorator.js @@ -16,9 +16,13 @@ const config = require('../config'); const UserManager = require('../sequelize/managers/user-manager'); const AccessTokenManager = require('../sequelize/managers/access-token-manager'); const Errors = require('../helpers/errors'); +const { isTest } = require('../helpers/app-helper'); function prepareUserById(f) { return async function() { + if (isTest()) { + return await f.apply(this, arguments); + } const fArgs = Array.prototype.slice.call(arguments) const obj = fArgs[0] @@ -42,6 +46,9 @@ function prepareUserById(f) { function prepareUserByEmail(f) { return async function() { + if (isTest()) { + return await f.apply(this, arguments); + } const fArgs = Array.prototype.slice.call(arguments) const obj = fArgs[0] diff --git a/src/decorators/response-decorator.js b/src/decorators/response-decorator.js index 1088391ff..2b2a8b448 100644 --- a/src/decorators/response-decorator.js +++ b/src/decorators/response-decorator.js @@ -11,9 +11,13 @@ * */ const logger = require('../logger'); +const { isTest } = require('../helpers/app-helper'); function handleErrors(f, successCode, errorsCodes) { return async function() { + if (isTest()) { + return await f.apply(this, arguments); + } let responseObject = {}; try { diff --git a/src/decorators/transaction-decorator.js b/src/decorators/transaction-decorator.js index 580df4d04..c35c6cd1e 100644 --- a/src/decorators/transaction-decorator.js +++ b/src/decorators/transaction-decorator.js @@ -15,9 +15,14 @@ const db = require('./../sequelize/models'); const retry = require('retry-as-promised'); const sequelize = db.sequelize; const Transaction = require('sequelize/lib/transaction'); +const { isTest } = require('../helpers/app-helper'); function transaction(f) { return async function() { + if (isTest()) { + return await f.apply(this, arguments); + } + const fArgs = Array.prototype.slice.call(arguments); //TODO [when transactions concurrency issue fixed]: Remove 'fArgs[fArgs.length - 1].fakeTransaction' if (fArgs.length > 0 && (fArgs[fArgs.length - 1] instanceof Transaction || fArgs[fArgs.length - 1].fakeTransaction)) { @@ -51,6 +56,10 @@ function generateTransaction(f) { function fakeTransaction(f) { const fakeTransactionObject = {fakeTransaction: true} return async function() { + if (isTest()) { + return await f.apply(this, arguments); + } + const fArgs = Array.prototype.slice.call(arguments); if (fArgs.length > 0 && fArgs[fArgs.length - 1] instanceof Transaction) { fArgs[fArgs.length - 1] = fakeTransactionObject; diff --git a/src/helpers/app-helper.js b/src/helpers/app-helper.js index b7d2a3df7..b0f7d3ad1 100644 --- a/src/helpers/app-helper.js +++ b/src/helpers/app-helper.js @@ -105,6 +105,9 @@ function generateAccessToken() { } function checkTransaction(transaction) { + if (isTest()) { + return + } //TODO [when transactions concurrency issue fixed]: Remove '!transaction.fakeTransaction' if (!transaction || (!(transaction instanceof Transaction) && !transaction.fakeTransaction)) { throw new Errors.TransactionError() diff --git a/src/services/tunnel-service.js b/src/services/tunnel-service.js index 3470483a9..ae868228e 100644 --- a/src/services/tunnel-service.js +++ b/src/services/tunnel-service.js @@ -74,8 +74,8 @@ const closeTunnel = async function (tunnelData, user, transaction) { }; module.exports = { - findTunnel: AppHelper.isTest() ? findTunnel : TransactionDecorator.generateTransaction(findTunnel), - openTunnel: AppHelper.isTest() ? openTunnel : TransactionDecorator.generateTransaction(openTunnel), - closeTunnel: AppHelper.isTest() ? closeTunnel : TransactionDecorator.generateTransaction(closeTunnel), - findAll: AppHelper.isTest() ? findAll : TransactionDecorator.generateTransaction(findAll), + findTunnel: TransactionDecorator.generateTransaction(findTunnel), + openTunnel: TransactionDecorator.generateTransaction(openTunnel), + closeTunnel: TransactionDecorator.generateTransaction(closeTunnel), + findAll: TransactionDecorator.generateTransaction(findAll), }; \ No newline at end of file