UNPKG

irest-app-test

Version:

iRest is a zero-configuration application that allows you to easily create/manage APIs, generate random data on demand and perform operations on that data using REST interface.

1 lines 2.74 kB
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:!0}),exports["default"]=void 0;var _url=require("url"),_responseHelper=_interopRequireDefault(require("../../helpers/responseHelper")),_sqliteConf=_interopRequireDefault(require("../../sqliteConf")),_logger=_interopRequireDefault(require("../../logger")),_messages=require("../../constants/messages"),_schemaDefaults=require("../../constants/schemaDefaults"),_util=require("../../helpers/util"),handleUnauthorizeResponse=function(a,b){return a.statusCode=401,a.responseMessage="Bad request",(0,_responseHelper["default"])(a,b)},checkProjBasedAuth=function(a,b,c){var d=_sqliteConf["default"].Token,e=_sqliteConf["default"].Project,f=a.mockData,g=a.token;e.findByPk(f.projectId).then(function(e){_logger["default"].debug(e),e.authenticationType?d.findOne({where:{projectId:f.projectId}}).then(function(d){return d.token===g?void c():handleUnauthorizeResponse(a,b)})["catch"](function(a){_logger["default"].err(a)}):c()})["catch"](function(a){_logger["default"].error(a)})};function tokenValidator(a,b,c){var d=_schemaDefaults.queryParamObj.IREST_RAPID_DOC,e=_schemaDefaults.queryParamObj.IREST_AUTH_TOKEN,f=null===a||void 0===a?void 0:a.query[d],g=process.env.MOCK_BASE_URL;if(f)c();else{var h,i,j=_sqliteConf["default"].Mock,k=_sqliteConf["default"].Token,l=(0,_url.parse)(null===a||void 0===a?void 0:a.url),m=l.pathname,n=l.search,o=(0,_util.parseUrl)(n),p=m.replace("".concat(g,"/"),"")+o,q=(0,_util.parseCookies)(a),r=Object.prototype.hasOwnProperty.call(a.headers,e)||Object.prototype.hasOwnProperty.call(a.query,e)||(null===(h=a.headers)||void 0===h||null===(i=h.cookie)||void 0===i?void 0:i.includes(e)),s=a.query[e]||a.headers[e];Object.prototype.hasOwnProperty.call(q,e)&&(s=q[e]),r&&s===void 0&&(s=""),j.findOne({where:{endpoint:p}}).then(function(d){if(null===d)return a.statusCode=404,a.responseMessage=_messages.apiSimulationNoRecordFoundErrorMessage,(0,_responseHelper["default"])(a,b);var e=d.authenticationType;if(e===_schemaDefaults.MOCK_TOKEN_AUTEHNTICATION_TYPE.OFF)c();else if(e===_schemaDefaults.MOCK_TOKEN_AUTEHNTICATION_TYPE.MOCK_SPECIFIC){if(!r)return handleUnauthorizeResponse(a,b);k.findOne({where:{token:s,mockId:d._id}}).then(function(e){var f;return e?e.mockId&&e.token===s&&(null===e||void 0===e||null===(f=e.mockId)||void 0===f?void 0:f.toString())===d._id.toString()?void c():handleUnauthorizeResponse(a,b):handleUnauthorizeResponse(a,b)})["catch"](function(a){_logger["default"].error(a)})}else return a.mockData=d,a.token=s,checkProjBasedAuth(a,b,c)})["catch"](function(a){_logger["default"].error(a)})}}var _default=tokenValidator;exports["default"]=_default;