ml-testing-toolkit 18.16.6 → 18.17.0-snapshot.2
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.
package/.grype.yaml
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
ignore:
|
|
2
|
-
#
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
- vulnerability: CVE-2025-
|
|
6
|
-
|
|
7
|
-
- vulnerability: CVE-
|
|
8
|
-
|
|
9
|
-
- vulnerability:
|
|
10
|
-
- vulnerability: CVE-2025-
|
|
2
|
+
# Remove this ignore after verifying CI builds fresh image
|
|
3
|
+
- vulnerability: GHSA-5j98-mcp5-4vw2
|
|
4
|
+
include-aliases: true
|
|
5
|
+
- vulnerability: CVE-2025-60876
|
|
6
|
+
reason: "No fixes available as of 2026-01-14 on Dockerfile base image 22.21.1-alpine3.23"
|
|
7
|
+
- vulnerability: CVE-2026-22184
|
|
8
|
+
reason: "No fixes available as of 2026-01-16 on Dockerfile base image 22.21.1-alpine3.23"
|
|
9
|
+
- vulnerability: CVE-2026-28309
|
|
10
|
+
- vulnerability: CVE-2025-59465
|
|
11
|
+
- vulnerability: CVE-2025-55131
|
|
12
|
+
- vulnerability: GHSA-r6q2-hw4h-h46w
|
|
13
|
+
- vulnerability: GHSA-8qq5-rm4j-mr97
|
|
14
|
+
- vulnerability: CVE-2025-55130
|
|
15
|
+
- vulnerability: CVE-2026-21637
|
|
16
|
+
- vulnerability: CVE-2025-59466
|
|
17
|
+
- vulnerability: GHSA-xxjr-mmjv-4gpg
|
|
11
18
|
|
|
12
19
|
# Set output format defaults
|
|
13
20
|
output:
|
package/.nvmrc
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
22.
|
|
1
|
+
22.21.1
|
package/audit-ci.jsonc
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ml-testing-toolkit",
|
|
3
3
|
"description": "Testing Toolkit for Mojaloop implementations",
|
|
4
|
-
"version": "18.
|
|
4
|
+
"version": "18.17.0-snapshot.2",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Vijaya Kumar Guthi, ModusBox Inc. ",
|
|
7
7
|
"contributors": [
|
|
@@ -78,10 +78,10 @@
|
|
|
78
78
|
"@hapi/hapi": "21.4.4",
|
|
79
79
|
"@hapi/inert": "7.1.0",
|
|
80
80
|
"@hapi/vision": "7.0.3",
|
|
81
|
-
"@mojaloop/central-services-logger": "11.10.
|
|
81
|
+
"@mojaloop/central-services-logger": "11.10.3",
|
|
82
82
|
"@mojaloop/central-services-metrics": "12.8.3",
|
|
83
83
|
"@mojaloop/ml-schema-transformer-lib": "2.7.13",
|
|
84
|
-
"@mojaloop/ml-testing-toolkit-shared-lib": "14.3.
|
|
84
|
+
"@mojaloop/ml-testing-toolkit-shared-lib": "14.3.2",
|
|
85
85
|
"@mojaloop/sdk-standard-components": "19.18.4",
|
|
86
86
|
"@now-ims/hapi-now-auth": "2.1.0",
|
|
87
87
|
"@types/socket.io": "3.0.2",
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
"connection-string": "^5.0.0",
|
|
94
94
|
"cookie-parser": "1.4.7",
|
|
95
95
|
"cookies": "0.9.1",
|
|
96
|
-
"cors": "2.8.
|
|
96
|
+
"cors": "2.8.6",
|
|
97
97
|
"dotenv": "17.2.3",
|
|
98
98
|
"express": "5.2.1",
|
|
99
99
|
"express-validator": "7.3.1",
|
|
@@ -107,8 +107,8 @@
|
|
|
107
107
|
"json-refs": "3.0.15",
|
|
108
108
|
"json-rules-engine": "7.3.1",
|
|
109
109
|
"jsonwebtoken": "9.0.3",
|
|
110
|
-
"lodash": "4.17.
|
|
111
|
-
"mongoose": "9.1.
|
|
110
|
+
"lodash": "4.17.23",
|
|
111
|
+
"mongoose": "9.1.5",
|
|
112
112
|
"multer": "2.0.2",
|
|
113
113
|
"mustache": "4.2.0",
|
|
114
114
|
"mv": "2.1.1",
|
|
@@ -140,8 +140,24 @@ const handleTransferIlp = (context, response) => {
|
|
|
140
140
|
response.body.TxInfAndSts.ExctnConf = generatedFulfilment
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
|
+
|
|
143
144
|
if (context.request.method === 'get' && response.method === 'put' && pathMatch.test(response.path)) {
|
|
144
|
-
|
|
145
|
+
const transferId = response.path.match(pathMatch)[1]
|
|
146
|
+
const storedTransfer = context.storedTransfers?.[transferId]
|
|
147
|
+
|
|
148
|
+
// Check if stored request exists and is within 30 seconds
|
|
149
|
+
if (storedTransfer) {
|
|
150
|
+
if (storedTransfer.request.ilpPacket) {
|
|
151
|
+
const generatedFulfilment = ilpObj.calculateFulfil(storedTransfer.request.ilpPacket).replace('"', '')
|
|
152
|
+
response.body.fulfilment = generatedFulfilment
|
|
153
|
+
} else if (storedTransfer.request.CdtTrfTxInf?.VrfctnOfTerms?.IlpV4PrepPacket) {
|
|
154
|
+
const generatedFulfilment = ilpV4Obj.calculateFulfil(storedTransfer.request.CdtTrfTxInf.VrfctnOfTerms.IlpV4PrepPacket).replace('"', '')
|
|
155
|
+
response.body.TxInfAndSts.ExctnConf = generatedFulfilment
|
|
156
|
+
}
|
|
157
|
+
delete context.storedTransfers[transferId]
|
|
158
|
+
} else {
|
|
159
|
+
delete response.body.fulfilment
|
|
160
|
+
}
|
|
145
161
|
}
|
|
146
162
|
}
|
|
147
163
|
|
|
@@ -318,6 +318,23 @@ 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
|
+
if (req.method === 'post' && (transferPathMatch.test(req.path) || fxTransferPathMatch.test(req.path))) {
|
|
325
|
+
if (!context.storedTransfers) {
|
|
326
|
+
context.storedTransfers = {}
|
|
327
|
+
}
|
|
328
|
+
const isFxTransfer = fxTransferPathMatch.test(req.path)
|
|
329
|
+
const transferId = req.path.match(isFxTransfer ? fxTransferPathMatch : transferPathMatch)[1]
|
|
330
|
+
customLogger.logMessage('debug', 'Storing transfer for validation', { additionalData: { transferId }, request: req })
|
|
331
|
+
|
|
332
|
+
context.storedTransfers[transferId] = {
|
|
333
|
+
request: req.payload,
|
|
334
|
+
type: isFxTransfer ? 'fxTransfer' : 'transfer'
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
321
338
|
// Getting callback info from callback map file
|
|
322
339
|
try {
|
|
323
340
|
const cbMapRawdata = await utils.readFileAsync(item.callbackMapFile)
|