ml-testing-toolkit 18.16.5 → 18.17.0-snapshot.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -48,10 +48,7 @@ const getConnection = async () => {
48
48
  }
49
49
 
50
50
  // TLS/SSL support
51
- const mongoOptions = {
52
- useNewUrlParser: true,
53
- useUnifiedTopology: true
54
- }
51
+ const mongoOptions = {}
55
52
 
56
53
  if (systemConfig.DB.SSL_ENABLED) {
57
54
  mongoOptions.tls = true
@@ -30,6 +30,7 @@
30
30
  const { ilpFactory, ILP_VERSIONS } = require('@mojaloop/sdk-standard-components').Ilp
31
31
  const customLogger = require('../../requestLogger')
32
32
  const { logger } = require('../../logger')
33
+ const objectStore = require('../../objectStore')
33
34
 
34
35
  let ilpObj = null
35
36
  let ilpV4Obj = null
@@ -140,8 +141,39 @@ const handleTransferIlp = (context, response) => {
140
141
  response.body.TxInfAndSts.ExctnConf = generatedFulfilment
141
142
  }
142
143
  }
144
+
145
+ customLogger.logMessage('debug', 'Generated callback body', { additionalData: { context, response } })
143
146
  if (context.request.method === 'get' && response.method === 'put' && pathMatch.test(response.path)) {
144
- delete response.body.fulfilment
147
+ customLogger.logMessage('debug', 'Returning stored fulfilment if exists for transfer GET')
148
+ const transferId = response.path.match(pathMatch)[1]
149
+ customLogger.logMessage('debug', 'Fetching stored transfer for fulfilment', { additionalData: { transferId } })
150
+ // Use objectStore to get the stored transfer
151
+ const storedTransfer = objectStore.get('storedTransfers', transferId, context.request.customInfo?.user)
152
+ customLogger.logMessage('debug', 'Stored transfer fetched for fulfilment', { additionalData: { storedTransfer, context } })
153
+ // Check if stored request exists and is within 30 seconds
154
+ if (storedTransfer) {
155
+ if (storedTransfer.request?.ilpPacket) {
156
+ customLogger.logMessage('debug', 'Stored transfer has ilpPacket. Generating fulfilment.', { additionalData: { transferId, ilpPacket: storedTransfer.request.ilpPacket } })
157
+ const generatedFulfilment = ilpObj.calculateFulfil(storedTransfer.request.ilpPacket).replace('"', '')
158
+ response.body.fulfilment = generatedFulfilment
159
+ customLogger.logMessage('debug', 'Fulfilment set in response body', { additionalData: { transferId, fulfilment: generatedFulfilment } })
160
+ } else if (storedTransfer.request?.CdtTrfTxInf?.VrfctnOfTerms?.IlpV4PrepPacket) {
161
+ customLogger.logMessage('debug', 'Stored transfer has IlpV4PrepPacket. Generating fulfilment.', { additionalData: { transferId, IlpV4PrepPacket: storedTransfer.request.CdtTrfTxInf.VrfctnOfTerms.IlpV4PrepPacket } })
162
+ const generatedFulfilment = ilpV4Obj.calculateFulfil(storedTransfer.request.CdtTrfTxInf.VrfctnOfTerms.IlpV4PrepPacket).replace('"', '')
163
+ response.body.TxInfAndSts.ExctnConf = generatedFulfilment
164
+ customLogger.logMessage('debug', 'ExctnConf set in response body', { additionalData: { transferId, ExctnConf: generatedFulfilment } })
165
+ } else {
166
+ customLogger.logMessage('warn', 'No ILP packet or IlpV4PrepPacket found in stored transfer request', { additionalData: { transferId, storedTransfer } })
167
+ }
168
+ // Remove the stored transfer from objectStore
169
+ objectStore.get('storedTransfers', undefined, context.request.customInfo?.user) // Ensure init
170
+ objectStore.set('storedTransfers', {
171
+ ...objectStore.get('storedTransfers', undefined, context.request.customInfo?.user),
172
+ [transferId]: undefined
173
+ }, context.request.customInfo?.user)
174
+ } else {
175
+ delete response.body.fulfilment
176
+ }
145
177
  }
146
178
  }
147
179
 
@@ -318,6 +318,25 @@ const generateAsyncCallback = async (item, context, req) => {
318
318
  return
319
319
  }
320
320
  } else {
321
+ // Store transfers early - right after validation
322
+ const transferPathMatch = /\/transfers(?:\/([^/]+))?$/
323
+ const fxTransferPathMatch = /\/fxTransfers(?:\/([^/]+))?$/
324
+ customLogger.logMessage('debug', 'Processing transfer request', { additionalData: { method: req.method, path: req.path }, request: req })
325
+ if (req.method === 'post' && (transferPathMatch.test(req.path) || fxTransferPathMatch.test(req.path))) {
326
+ const isFxTransfer = fxTransferPathMatch.test(req.path)
327
+ let transferId = (req.payload && req.payload.transferId) || (req.payload && req.payload.commitRequestId)
328
+ if (!transferId && req.payload && req.payload.CdtTrfTxInf && req.payload.CdtTrfTxInf.PmtId && req.payload.CdtTrfTxInf.PmtId.TxId) {
329
+ transferId = req.payload.CdtTrfTxInf.PmtId.TxId
330
+ }
331
+ customLogger.logMessage('debug', 'Storing transfer for validation', { additionalData: { transferId }, request: req })
332
+
333
+ // Use objectStore to store the transfer
334
+ objectStore.push('storedTransfers', transferId, {
335
+ request: req.payload,
336
+ type: isFxTransfer ? 'fxTransfer' : 'transfer'
337
+ }, req.customInfo.user)
338
+ }
339
+
321
340
  // Getting callback info from callback map file
322
341
  try {
323
342
  const cbMapRawdata = await utils.readFileAsync(item.callbackMapFile)
@@ -426,7 +445,7 @@ const generateAsyncCallback = async (item, context, req) => {
426
445
  return
427
446
  }
428
447
  }
429
-
448
+ customLogger.logMessage('debug', 'Generated callback body', { additionalData: { body: generatedCallback.body }, request: req })
430
449
  if (generatedCallback.body) {
431
450
  // Append ILP properties to callback
432
451
  const fulfilment = IlpModel.handleQuoteIlp(context, generatedCallback)
@@ -35,7 +35,8 @@ const storedObject = {
35
35
  transactions: {},
36
36
  inboundEnvironment: {},
37
37
  requests: {},
38
- callbacks: {}
38
+ callbacks: {},
39
+ storedTransfers: {}
39
40
  }
40
41
  }
41
42
 
@@ -103,6 +104,7 @@ const clearOldObjects = () => {
103
104
  clear('callbacks', interval)
104
105
  clear('requestsHistory', interval)
105
106
  clear('callbacksHistory', interval)
107
+ clear('storedTransfers', interval)
106
108
  }
107
109
 
108
110
  const initObjectStore = (initConfig = null) => {