irest-app-test
Version:
iRest simulator application tooling and scripts - Backend
9 lines • 10.5 kB
JavaScript
;var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:!0}),exports["default"]=void 0;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty")),_typeof2=_interopRequireDefault(require("@babel/runtime/helpers/typeof")),_slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")),_url=require("url"),_messages=require("../../../constants/messages"),_responseHelper=_interopRequireDefault(require("../../../helpers/responseHelper")),_schemaDefaults=require("../../../constants/schemaDefaults"),_logger=_interopRequireDefault(require("../../../logger")),_sqliteConf=_interopRequireDefault(require("../../../sqliteConf"));function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){(0,_defineProperty2["default"])(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}var _process$env=process.env,API_BASE_URL=_process$env.API_BASE_URL,MOCK_BASE_URL=_process$env.MOCK_BASE_URL;function create(a,b){var c=_sqliteConf["default"].User,d=_sqliteConf["default"].Project,e=_sqliteConf["default"].Mock,f=a.body,g=a.query.isPreview,h=(0,_url.parse)(f.endpoint),i=h.pathname;// validate user exist or not
c.findByPk(f.userId).then(function(c){if(c){var h="WHERE";h+=" endpoint LIKE '%".concat(f.projectName,"/").concat(i,"%' AND serviceResponseType = '").concat(f.serviceResponseType,"'");var j="Select * from Mocks ".concat(h," ");_sqliteConf["default"].sequelize.query(j).then(function(c){var h=(0,_slicedToArray2["default"])(c[0],1),i=h[0];if(null!==i&&void 0!==i&&i._id&&!g)return a.statusCode=417,a.responseMessage="".concat(_messages.mockCreationUniqueEndpointExistMessage,": ").concat(f.endpoint),a.responseData={endpoint:f.endpoint,mockName:f.mockName},(0,_responseHelper["default"])(a,b);f.path=MOCK_BASE_URL;var j=_schemaDefaults.serviceResponseType.EXISTING_API,k=_schemaDefaults.serviceResponseType.DEFAULT_SERVICE_RESPONSE;// handle existing api for POST CREATION CALL
// service response will be saved when user hits the rest call
if(f.serviceResponseType!==j&&delete f.referenceId,f.isDelay||delete f.delaySeconds,f.isDynamicResponse||(delete f.dynamicResponseKey,delete f.dynamicResponseRandom,delete f.dynamicResponseSpecific,delete f.dynamicResponseSpecificKeyValue,delete f.isDynamicImportCount,delete f.dynamicImportCount,delete f.isDynamicImportSize,delete f.dynamicImportSize),f.isDynamicResponse&&f.dynamicResponseRandom&&(delete f.dynamicResponseSpecific,delete f.dynamicResponseSpecificKeyValue),f.isDynamicResponse&&f.dynamicResponseSpecific&&(delete f.dynamicResponseRandom,"object"===(0,_typeof2["default"])(f.dynamicResponseSpecificKeyValue)&&f.dynamicResponseSpecificKeyValue.constructor===Object||"object"===(0,_typeof2["default"])(f.dynamicResponseSpecificKeyValue)&&f.dynamicResponseSpecificKeyValue.constructor===Array))// stringify object/array body
try{f.dynamicResponseSpecificKeyValue=JSON.stringify(f.dynamicResponseSpecificKeyValue)}catch(c){return _logger["default"].error(JSON.stringify(c)),a.statusCode=400,a.responseMessage=_messages.invalidDynamicResponseSpecificKeyValueMessage,a.responseData={endpoint:f.endpoint,mockName:f.mockName},(0,_responseHelper["default"])(a,b)}f.isDynamicResponse&&f.isDynamicImportCount&&(delete f.isDynamicImportSize,delete f.dynamicImportSize),f.isDynamicResponse&&f.isDynamicImportSize&&(delete f.isDynamicImportCount,delete f.dynamicImportCount),f.isBulkDataCount&&(delete f.isBulkDataSize,delete f.bulkDataSize),f.isBulkDataSize&&(delete f.isBulkDataCount,delete f.bulkDataCount);// dynamic response extra key removal before insert into the DB
// end point
// manually validate the json body and convert into string before save
var l=f.serviceResponseBody;if("object"===(0,_typeof2["default"])(l)&&l.constructor===Object)try{l=JSON.stringify(l),f.serviceResponseBody=l}catch(c){return _logger["default"].error(JSON.stringify(c)),a.statusCode=400,a.responseMessage=_messages.invalidServiceResponseBodyMessage,a.responseData={endpoint:f.endpoint,mockName:f.mockName},(0,_responseHelper["default"])(a,b)}d.findByPk(f.projectId).then(function(c){_logger["default"].debug(c),c&&(f.endpointRequestPath=f.endpoint,f.endpoint="".concat(f.projectName,"/").concat(f.endpoint),f.headers=JSON.stringify(f.headers),f.params=JSON.stringify(f.params),e.findAll({where:{projectId:f.projectId}}).then(function(c){var d=c.map(function(a){return a.mockName.toLowerCase()});return!g&&d.includes(f.mockName.toLowerCase())?(a.statusCode=417,a.responseMessage="".concat(_messages.mockCreationUniqueMockName,": ").concat(f.mockName),a.responseData={endpoint:f.endpoint,mockName:f.mockName},(0,_responseHelper["default"])(a,b)):f.serviceResponseType===k?defaultOptionHandler(a,b,g):saveOptionHandler(a,b,g)}))})})["catch"](function(c){return _logger["default"].error(JSON.stringify(c)),(0,_responseHelper["default"])(a,b)})}else return a.responseMessage=_messages.mockCreationUserNotExistMessage,a.statusCode=400,a.responseData={endpoint:f.endpoint,mockName:f.mockName},(0,_responseHelper["default"])(a,b)})["catch"](function(c){return _logger["default"].error(JSON.stringify(c)),(0,_responseHelper["default"])(a,b)})}function saveOptionHandler(a,b,c){var d=a.body,e=_sqliteConf["default"].Project,f=c?_sqliteConf["default"].TempMock:_sqliteConf["default"].Mock,g=c?_sqliteConf["default"].TempApiResponseSchemaType:_sqliteConf["default"].ApiResponseSchemaType,h=d.ApiResponseSchemaTypes,i=d.statusCode,j=d.mockName,k=d.endpoint,l=[];d.allowedMethods=JSON.stringify(d.allowedMethods),f.create(d).then(function(f){try{Object.keys(h).forEach(function(a){l.push({method:a,successResponse:JSON.stringify(h[a]),statusCode:i,projectId:null===d||void 0===d?void 0:d.projectId,mockId:f._id})})}catch(c){return _logger["default"].error(JSON.stringify(c)),a.responseData={endpoint:d.endpoint,mockName:d.mockName},(0,_responseHelper["default"])(a,b)}g.bulkCreate(l).then(function(){return a.responseMessage=_messages.mockCreationSuccessMessage,a.statusCode=201,a.responseData={id:f._id,mockName:f.mockName,endpoint:f.endpoint,allowedMethods:f.allowedMethods,mockUrl:"".concat(API_BASE_URL).concat(MOCK_BASE_URL,"/").concat(f.endpoint)},b.on("finish",function(a){a?_logger["default"].debug("Error, skipping the mock count for mock with mockId ".concat(f._id)):e.increment({count:c?0:1},{where:{_id:d.projectId}})}),(0,_responseHelper["default"])(a,b)})["catch"](function(c){return _logger["default"].error(JSON.stringify(c)),a.responseData={endpoint:d.endpoint,mockName:d.mockName},(0,_responseHelper["default"])(a,b)})})["catch"](function(c){var d,e;return _logger["default"].error(JSON.stringify(c)),null!==c&&void 0!==c&&null!==(d=c.fields)&&void 0!==d&&d.includes("endpoint")?(a.statusCode=417,a.responseMessage="".concat(_messages.mockCreationUniqueEndpointExistMessage,": ").concat(k," "),a.responseData={endpoint:k,mockName:j},(0,_responseHelper["default"])(a,b)):null!==c&&void 0!==c&&null!==(e=c.fields)&&void 0!==e&&e.includes("mockName")?(a.statusCode=417,a.responseMessage="".concat(_messages.mockCreationUniqueMockName,": ").concat(j),a.responseData={endpoint:k,mockName:j},(0,_responseHelper["default"])(a,b)):(0,_responseHelper["default"])(a,b)})}// serviceResponseType === "default"
function defaultOptionHandler(a,b,c){var d=c?_sqliteConf["default"].TempMock:_sqliteConf["default"].Mock,e=_sqliteConf["default"].Project,f=c?_sqliteConf["default"].TempApiResponseSchemaType:_sqliteConf["default"].ApiResponseSchemaType,g=a.body,h=g.ApiResponseSchemaTypes,i=g.statusCode,j=[];g.allowedMethods=JSON.stringify(g.allowedMethods),d.create(g).then(function(d){try{Object.keys(h).forEach(function(a){j.push({method:a,successResponse:JSON.stringify(""===h[a]?{}:h[a]),statusCode:i,projectId:null===g||void 0===g?void 0:g.projectId,mockId:d._id})})}catch(c){return _logger["default"].error(JSON.stringify(c)),a.responseData={endpoint:g.endpoint,mockName:g.mockName},(0,_responseHelper["default"])(a,b)}f.bulkCreate(j).then(function(){return a.mok=d,b.on("finish",function(a){a?_logger["default"].debug("Error, skipping the mock count for mock with mockId ".concat(d._id)):e.increment({count:c?0:1},{where:{_id:g.projectId}})}),storeServiceResponse(a,b,c)})["catch"](function(c){return _logger["default"].error(JSON.stringify(c)),a.responseData={endpoint:g.endpoint,mockName:g.mockName},(0,_responseHelper["default"])(a,b)})})["catch"](function(c){var d,e;return _logger["default"].error(JSON.stringify(c)),null!==c&&void 0!==c&&null!==(d=c.fields)&&void 0!==d&&d.includes("endpoint")?(a.statusCode=417,a.responseMessage="".concat(_messages.mockCreationUniqueEndpointExistMessage,": ").concat(a.body.endpoint),a.responseData={endpoint:a.body.endpoint,mockName:a.body.mockName},(0,_responseHelper["default"])(a,b)):null!==c&&void 0!==c&&null!==(e=c.fields)&&void 0!==e&&e.includes("mockName")?(a.statusCode=417,a.responseMessage="".concat(_messages.mockCreationUniqueMockName,": ").concat(a.body.mockName),a.responseData={endpoint:a.body.endpoint,mockName:a.body.mockName},(0,_responseHelper["default"])(a,b)):(0,_responseHelper["default"])(a,b)})}function storeServiceResponse(a,b,c){var d=a.body;d.mockId=a.mok._id;var e=c?_sqliteConf["default"].TempServiceResponse:_sqliteConf["default"].ServiceResponse;if("application/octet-stream"===d.contentType){var f=Buffer.from("Some actual data or file content","utf-8");d=_objectSpread(_objectSpread({},d),{},{serviceResponseBody:f})}e.create(d).then(function(){a.responseMessage=_messages.mockCreationSuccessMessage,a.statusCode=201;var c=a.mok;return a.responseData={id:c._id,mockName:c.mockName,endpoint:c.endpoint,mockUrl:"".concat(API_BASE_URL).concat(MOCK_BASE_URL,"/").concat(c.endpoint),allowedMethods:c.allowedMethods},(0,_responseHelper["default"])(a,b)})["catch"](function(c){return _logger["default"].error(JSON.stringify(c)),a.responseData={endpoint:d.endpoint,mockName:d.mockName},(0,_responseHelper["default"])(a,b)})}var _default=exports["default"]=create;