irest-app-test
Version:
iRest simulator application tooling and scripts - Backend
4 lines • 10.1 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")),_xml2js=require("xml2js"),_sqliteConf=_interopRequireDefault(require("../../../sqliteConf")),_messages=require("../../../constants/messages"),_responseHelper=_interopRequireDefault(require("../../../helpers/responseHelper")),_logger=_interopRequireDefault(require("../../../logger"));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}/* eslint-disable no-param-reassign */function saveApiResponseHandler(a,b){if(a.mockData.allowedMethods.includes(a.method)){if("POST"===a.method)return postApiResponseHandler(a,b);if("PUT"===a.method)return putApiResponseHandler(a,b);if("PATCH"===a.method)return patchApiResponseHandler(a,b);if("DELETE"===a.method)return deleteApiResponseHandler(a,b);if("GET"===a.method)return existingApiResponseHandler(a,b)}return a.statusCode=405,a.responseMessage=_messages.methodNotAllowedErrorMessage,(0,_responseHelper["default"])(a,b)}function postApiResponseHandler(a,b){var c={mockId:a.mockData._id},d=a.mockData.ApiResponseSchemaTypes;a.rawBody&&(_logger["default"].debug("rawbody",a.rawBody),_logger["default"].debug("body",a.body));var e=a.body;("object"===(0,_typeof2["default"])(e)&&e.constructor===Object||"object"===(0,_typeof2["default"])(e)&&e.constructor===Array)&&(e=JSON.stringify(e)),c.serviceResponseBody=e,c.contentType=a.headers["content-type"],_logger["default"].debug(a.headers["content-type"]);var f=_sqliteConf["default"].ServiceResponse,g=d.find(function(a){return"POST"===a.method}),h=g.dataValues.successResponse;f.create(c).then(function(c){var d;a.responseMessage=_messages.dataStoredSuccessMessage,a.statusCode=null===a||void 0===a||null===(d=a.mockData)||void 0===d?void 0:d.statusCode,h=h.replaceAll(":\"$IREST_RECORD_ID\"",":\"".concat(c._id,"\""));try{return a.mockApi=0!==Object.keys(JSON.parse(h)).length,a.responseData=0===Object.keys(JSON.parse(h)).length?{id:c._id}:JSON.parse(h),(0,_responseHelper["default"])(a,b)}catch(c){return _logger["default"].error(JSON.stringify(c)),(0,_responseHelper["default"])(a,b)}})["catch"](function(c){return _logger["default"].error(JSON.stringify(c)),(0,_responseHelper["default"])(a,b)})}function putApiResponseHandler(a,b){var c=_sqliteConf["default"].ServiceResponse,d=a.mockData.ApiResponseSchemaTypes,e={},f=a.query["irest-record-id"];a.rawBody&&(_logger["default"].debug("rawbody",a.rawBody),_logger["default"].debug("body",a.body));var g=d.find(function(a){return"PUT"===a.method}),h=g.dataValues.successResponse,i=a.body;// eslint-disable-next-line object-shorthand
("object"===(0,_typeof2["default"])(i)&&i.constructor===Object||"object"===(0,_typeof2["default"])(i)&&i.constructor===Array)&&(i=JSON.stringify(i)),e.serviceResponseBody=i,_logger["default"].debug(a.headers["content-type"]),e.contentType=a.headers["content-type"],c.update(e,{where:{_id:f}}).then(function(c){var d;if(null===c)return a.statusCode=404,a.responseMessage=_messages.apiSimulationNoRecordFoundErrorMessage,(0,_responseHelper["default"])(a,b);a.responseMessage=_messages.dataUpdatedSuccessMessage,a.statusCode=null===a||void 0===a||null===(d=a.mockData)||void 0===d?void 0:d.statusCode,h=h.replaceAll(":\"$IREST_RECORD_ID\"",":\"".concat(f,"\""));try{return a.mockApi=0!==Object.keys(JSON.parse(h)).length,a.responseData=0===Object.keys(JSON.parse(h)).length?{id:f}:JSON.parse(h),(0,_responseHelper["default"])(a,b)}catch(c){return _logger["default"].error(JSON.stringify(c)),(0,_responseHelper["default"])(a,b)}})["catch"](function(c){return _logger["default"].error(JSON.stringify(c)),(0,_responseHelper["default"])(a,b)})}function patchApiResponseHandler(a,b){var c=_sqliteConf["default"].ServiceResponse,d=a.mockData.ApiResponseSchemaTypes,e=a.query["irest-record-id"],f=Object.keys(a.body).length;if(!e||0>=f)return a.statusCode=400,a.responseMessage=_messages.badRequestMessage,(0,_responseHelper["default"])(a,b);var g=d.find(function(a){return"PATCH"===a.method}),h=g.dataValues.successResponse;c.findByPk(e).then(function(d){if(null===d)return a.statusCode=404,a.responseMessage=_messages.apiSimulationNoRecordFoundErrorMessage,(0,_responseHelper["default"])(a,b);var f={},g=a.body;if("object"===(0,_typeof2["default"])(g)&&g.constructor===Object||"object"===(0,_typeof2["default"])(d.serviceResponseBody)&&d.serviceResponseBody.constructor===Object){var i=JSON.parse(d.serviceResponseBody);g=_objectSpread(_objectSpread({},i),g),g=JSON.stringify(g),f.serviceResponseBody=g}else return a.responseMessage=_messages.badRequestMessage,a.statusCode=400,(0,_responseHelper["default"])(a,b);// eslint-disable-next-line object-shorthand
_logger["default"].debug(f),c.update(f,{where:{_id:e}}).then(function(c){var d;if(null===c)return a.statusCode=404,a.responseMessage=_messages.apiSimulationNoRecordFoundErrorMessage,(0,_responseHelper["default"])(a,b);a.responseMessage=_messages.dataUpdatedSuccessMessage,a.statusCode=null===a||void 0===a||null===(d=a.mockData)||void 0===d?void 0:d.statusCode,h=h.replaceAll(":\"$IREST_RECORD_ID\"",":\"".concat(e,"\""));try{return a.mockApi=0!==Object.keys(JSON.parse(h)).length,a.responseData=0===Object.keys(JSON.parse(h)).length?{id:e}:JSON.parse(h),(0,_responseHelper["default"])(a,b)}catch(c){return _logger["default"].error(JSON.stringify(c)),(0,_responseHelper["default"])(a,b)}})["catch"](function(c){return _logger["default"].error(JSON.stringify(c)),(0,_responseHelper["default"])(a,b)})})["catch"](function(c){return _logger["default"].error(JSON.stringify(c)),(0,_responseHelper["default"])(a,b)})}function deleteApiResponseHandler(a,b){var c=a.mockData.ApiResponseSchemaTypes,d=a.query["irest-record-id"],e=_sqliteConf["default"].ServiceResponse,f=c.find(function(a){return"DELETE"===a.method}),g=f.dataValues.successResponse;e.destroy({where:{_id:d}}).then(function(c){var e;if(null===c)return a.statusCode=404,a.responseMessage=_messages.apiSimulationNoRecordFoundErrorMessage,(0,_responseHelper["default"])(a,b);a.responseMessage=_messages.dataDeleteSuccessMessage,a.statusCode=null===a||void 0===a||null===(e=a.mockData)||void 0===e?void 0:e.statusCode,g=g.replaceAll(":\"$IREST_RECORD_ID\"",":\"".concat(d,"\""));try{return a.mockApi=0!==Object.keys(JSON.parse(g)).length,a.responseData=0===Object.keys(JSON.parse(g)).length?{id:d}:JSON.parse(g),(0,_responseHelper["default"])(a,b)}catch(c){return _logger["default"].error(JSON.stringify(c)),(0,_responseHelper["default"])(a,b)}})["catch"](function(c){return _logger["default"].error(JSON.stringify(c)),(0,_responseHelper["default"])(a,b)})}var builder=new _xml2js.Builder;function existingApiResponseHandler(a,b){var c=a.mockData._id,d=a.mockData.ApiResponseSchemaTypes,e=_sqliteConf["default"].ServiceResponse;// eslint-disable-next-line no-prototype-builtins
if(a.query&&a.query.hasOwnProperty("irest-record-id")){var f=a.query["irest-record-id"],g=d.find(function(a){return"GET_BY_ID"===a.method}),h=g.dataValues.successResponse;e.findByPk(f).then(function(c){var d;if(null===c)return a.statusCode=404,a.responseMessage=_messages.apiSimulationNoRecordFoundErrorMessage,(0,_responseHelper["default"])(a,b);a.statusCode=null===a||void 0===a||null===(d=a.mockData)||void 0===d?void 0:d.statusCode,a.responseMessage="Single Record";var e,f=c._id;"application/json"===c.contentType?e=JSON.parse(c.serviceResponseBody):"application/xml"===c.contentType?(0,_xml2js.parseString)(c.serviceResponseBody,function(a,b){e=builder.buildObject(b),_logger["default"].debug("xml",e)}):e=c.serviceResponseBody;var g=[],i=_objectSpread({IREST_RECORD_ID:f},e);g.push(i),h=h.replaceAll(":\"$dataObject\"",":".concat(JSON.stringify(g)));try{return a.mockApi=0!==Object.keys(JSON.parse(h)).length,a.responseData=0===Object.keys(JSON.parse(h)).length?g:JSON.parse(h),(0,_responseHelper["default"])(a,b)}catch(c){return _logger["default"].error(JSON.stringify(c)),(0,_responseHelper["default"])(a,b)}})["catch"](function(c){return _logger["default"].error(JSON.stringify(c)),(0,_responseHelper["default"])(a,b)})}else{var i=d.find(function(a){return"GET"===a.method}),j=i.dataValues.successResponse;e.findAll({where:{mockId:c}}).then(function(c){var d;if(null===c)return a.statusCode=404,a.responseMessage=_messages.apiSimulationNoRecordFoundErrorMessage,(0,_responseHelper["default"])(a,b);var e=[];Array.prototype.forEach.call(c,function(a){var b;"application/json"===a.contentType?b=JSON.parse(a.serviceResponseBody):"application/xml"===a.contentType?(0,_xml2js.parseString)(a.serviceResponseBody,function(a,c){b=builder.buildObject(c),_logger["default"].debug("xml",b)}):b=a.serviceResponseBody;var c=a._id,d=_objectSpread({IREST_RECORD_ID:c},b);e.push(d)}),j=j.replaceAll(":\"$dataArray\"",":".concat(JSON.stringify(e))),a.statusCode=null===a||void 0===a||null===(d=a.mockData)||void 0===d?void 0:d.statusCode,a.responseMessage="Record List!";try{return a.mockApi=0!==Object.keys(JSON.parse(j)).length,a.responseData=0===Object.keys(JSON.parse(j)).length?e:JSON.parse(j),(0,_responseHelper["default"])(a,b)}catch(c){return _logger["default"].error(JSON.stringify(c)),(0,_responseHelper["default"])(a,b)}})["catch"](function(c){return _logger["default"].error(JSON.stringify(c)),(0,_responseHelper["default"])(a,b)})}}var _default=exports["default"]=saveApiResponseHandler;