From 22668f8f4ba7ce20b9fd0cbffd72caefe3237627 Mon Sep 17 00:00:00 2001 From: Steven Oderayi Date: Wed, 26 Jun 2024 17:31:40 +0100 Subject: [PATCH 1/6] fix: fix request header validation --- package.json | 6 ++++++ src/acceptheaderpayee/handler.js | 6 +++--- src/acceptheaderpayee/routes.js | 10 +++++----- src/bulkQuotes/handler.js | 18 ++++++++--------- src/bulkQuotes/routes.js | 8 ++++---- src/bulkTransfers/handler.js | 6 +++--- src/bulkTransfers/routes.js | 6 +++--- src/bulkTransfersNegative/routes.js | 6 +++--- src/payee/handler.js | 30 ++++++++++++++--------------- src/payee/routes.js | 16 +++++++-------- src/payer/routes.js | 12 ++++++------ src/reservetransferpayee/handler.js | 30 ++++++++++++++--------------- src/reservetransferpayee/routes.js | 16 +++++++-------- src/testfsp1/handler.js | 18 ++++++++--------- src/testfsp2/handler.js | 18 ++++++++--------- src/testfsp3/handler.js | 18 ++++++++--------- src/testfsp4/handler.js | 18 ++++++++--------- src/transactionRequests/handler.js | 18 ++++++++--------- src/transactionRequests/routes.js | 8 ++++---- 19 files changed, 137 insertions(+), 131 deletions(-) diff --git a/package.json b/package.json index 4fbe997d..772d0e27 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,12 @@ "lint:fix": "npm run standard -- --fix", "start": "node src/index.js", "test": "echo \"Error: no test specified\" && exit 1", + "docker:build": "docker build --build-arg NODE_VERSION=\"$(cat .nvmrc)-alpine\" -t mojaloop/simulator:local .", + "docker:up": "docker-compose -f docker-compose.yml up", + "docker:stop": "docker-compose -f docker-compose.yml stop", + "docker:rm": "docker-compose -f docker-compose.yml rm -f -v", + "docker:down": "docker-compose -f docker-compose.yml down -v", + "docker:clean": "docker-compose -f docker-compose.yml down --rmi local", "audit:fix": "npm audit fix", "audit:check": "npx audit-ci --config ./audit-ci.jsonc", "dep:check": "npx ncu -e 2", diff --git a/src/acceptheaderpayee/handler.js b/src/acceptheaderpayee/handler.js index 04ca39d3..3b4572d8 100644 --- a/src/acceptheaderpayee/handler.js +++ b/src/acceptheaderpayee/handler.js @@ -143,7 +143,7 @@ exports.getPartiesByTypeAndId = function (req, h) { httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(correlationCache.get(req.params.id)) + data: correlationCache.get(req.params.id) } // Logger.isInfoEnabled && Logger.info((new Date().toISOString()), 'Executing PUT', url) @@ -232,7 +232,7 @@ exports.postQuotes = function (req, h) { httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(quotesResponse) + data: quotesResponse } // Logger.isInfoEnabled && Logger.info((new Date().toISOString()), 'Executing PUT', url) const res = await request(url, opts, req.span) @@ -314,7 +314,7 @@ exports.postTransfers = async function (req, h) { httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(transfersResponse) + data: transfersResponse } // Logger.isInfoEnabled && Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(transfersResponse)}]`) diff --git a/src/acceptheaderpayee/routes.js b/src/acceptheaderpayee/routes.js index fcf1bbc5..4beabdc4 100644 --- a/src/acceptheaderpayee/routes.js +++ b/src/acceptheaderpayee/routes.js @@ -83,7 +83,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), failAction: (request, h, err) => { throw err } } } @@ -114,7 +114,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), payload: Joi.object({ quoteId: Joi.string().guid().required().description('Id of quote').label('@ Quote Id must be in a valid GUID format. @'), transactionId: Joi.string().guid().required().description('Id of transaction').label('@ Transaction Id must be in a valid GUID format. @'), @@ -214,7 +214,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), payload: Joi.object({ transferId: Joi.string().guid().required().description('Id of transfer').label('@ Transfer Id must be in a valid GUID format. @'), payeeFsp: Joi.string().required().min(1).max(32).description('Financial Service Provider of Payee').label('@ A valid Payee FSP number must be supplied. @'), @@ -261,7 +261,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), @@ -303,7 +303,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), diff --git a/src/bulkQuotes/handler.js b/src/bulkQuotes/handler.js index 963d0c70..267ef22f 100644 --- a/src/bulkQuotes/handler.js +++ b/src/bulkQuotes/handler.js @@ -146,13 +146,13 @@ exports.postBulkQuotes = function (request, h) { 'FSPIOP-URI': `/bulkQuotes/${bulkQuoteRequest.bulkQuoteId}` }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(bulkQuotesResponse) + data: bulkQuotesResponse } // Logger.isInfoEnabled && Logger.info((new Date().toISOString()), 'Executing PUT', url) const res = await sendRequest(url, opts, request.span) @@ -268,13 +268,13 @@ exports.getBulkQuotesById = function (request, h) { 'FSPIOP-URI': `/bulkQuotes/${request.params.id}` }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(responseData) + data: responseData } // Logger.isInfoEnabled && Logger.info((new Date().toISOString()), 'Executing PUT', url) const res = await sendRequest(url, opts, request.span) @@ -336,13 +336,13 @@ const sendErrorCallback = async (fspiopError, bulkQuoteId, headers, span) => { 'FSPIOP-URI': `/bulkQuotes/${bulkQuoteId}/error` }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(fspiopError.toApiErrorObject()) + data: fspiopError.toApiErrorObject() } const res = await sendRequest(url, opts, span) if (res.status !== Enums.Http.ReturnCodes.OK.CODE) { diff --git a/src/bulkQuotes/routes.js b/src/bulkQuotes/routes.js index c61aadfe..17d55a87 100644 --- a/src/bulkQuotes/routes.js +++ b/src/bulkQuotes/routes.js @@ -54,7 +54,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), payload: Joi.object({ bulkQuoteId: Joi.string().guid().required().description('Id of bulkQuote').label('@ BulkQuote Id must be in a valid GUID format. @'), payer: Joi.object().required().keys({ @@ -162,7 +162,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().guid().required().description('path') }), @@ -195,7 +195,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), @@ -282,7 +282,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), diff --git a/src/bulkTransfers/handler.js b/src/bulkTransfers/handler.js index 16a6f0ee..566bf27d 100644 --- a/src/bulkTransfers/handler.js +++ b/src/bulkTransfers/handler.js @@ -101,13 +101,13 @@ exports.postBulkTransfers = async function (req, h) { // tracestate: req.headers.tracestate ? req.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(bulkTransferResponse) + data: bulkTransferResponse } // Logger.isInfoEnabled && Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(bulkTransferResponse)}]`) const res = await request(url, opts, req.span) diff --git a/src/bulkTransfers/routes.js b/src/bulkTransfers/routes.js index 5a272ec1..abc425a1 100644 --- a/src/bulkTransfers/routes.js +++ b/src/bulkTransfers/routes.js @@ -56,7 +56,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), payload: Joi.object({ bulkTransferId: Joi.string().guid().required().description('Id of bulk transfer').label('@ Bulk Transfer Id must be in a valid GUID format. @'), bulkQuoteId: Joi.string().guid().required().description('Id of bulk quote').label('@ Bulk Quote Id must be in a valid GUID format. @'), @@ -114,7 +114,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), @@ -175,7 +175,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), diff --git a/src/bulkTransfersNegative/routes.js b/src/bulkTransfersNegative/routes.js index 7f5cf8b6..250f1c3f 100644 --- a/src/bulkTransfersNegative/routes.js +++ b/src/bulkTransfersNegative/routes.js @@ -57,7 +57,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), payload: Joi.object({ bulkTransferId: Joi.string().guid().required().description('Id of bulk transfer').label('@ Bulk Transfer Id must be in a valid GUID format. @'), bulkQuoteId: Joi.string().guid().required().description('Id of bulk quote').label('@ Bulk Quote Id must be in a valid GUID format. @'), @@ -114,7 +114,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), @@ -175,7 +175,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), diff --git a/src/payee/handler.js b/src/payee/handler.js index 756d55ee..74078003 100644 --- a/src/payee/handler.js +++ b/src/payee/handler.js @@ -153,13 +153,13 @@ exports.getPartiesByTypeAndId = function (request, h) { // tracestate: request.headers.tracestate ? request.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(correlationCache.get(request.params.id)) + data: correlationCache.get(request.params.id) } // Logger.isInfoEnabled && Logger.info((new Date().toISOString()), 'Executing PUT', url) @@ -269,13 +269,13 @@ exports.postQuotes = function (request, h) { // tracestate: request.headers.tracestate ? request.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(quotesResponse) + data: quotesResponse } // Logger.isInfoEnabled && Logger.info((new Date().toISOString()), 'Executing PUT', url) const res = await sendRequest(url, opts, request.span) @@ -359,13 +359,13 @@ exports.postTransfers = async function (request, h) { // tracestate: request.headers.tracestate ? request.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(transfersResponse) + data: transfersResponse } // Logger.isInfoEnabled && Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(transfersResponse)}]`) @@ -564,13 +564,13 @@ exports.getQuotesById = function (request, h) { // tracestate: request.headers.tracestate ? request.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(responseData) + data: responseData } // Logger.isInfoEnabled && Logger.info((new Date().toISOString()), 'Executing PUT', url) const res = await sendRequest(url, opts, request.span) @@ -632,13 +632,13 @@ const sendErrorCallback = async (fspiopError, quoteId, headers, span) => { 'FSPIOP-URI': `/quotes/${quoteId}/error` }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(fspiopError.toApiErrorObject()) + data: fspiopError.toApiErrorObject() } const res = await sendRequest(url, opts, span) if (res.status !== Enums.Http.ReturnCodes.OK.CODE) { diff --git a/src/payee/routes.js b/src/payee/routes.js index 8be90535..56832dc5 100644 --- a/src/payee/routes.js +++ b/src/payee/routes.js @@ -84,7 +84,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), failAction: (request, h, err) => { throw err } } } @@ -115,7 +115,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), payload: Joi.object({ quoteId: Joi.string().guid().required().description('Id of quote').label('@ Quote Id must be in a valid GUID format. @'), transactionId: Joi.string().guid().required().description('Id of transaction').label('@ Transaction Id must be in a valid GUID format. @'), @@ -208,7 +208,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), @@ -244,7 +244,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), payload: Joi.object({ transferId: Joi.string().guid().required().description('Id of transfer').label('@ Transfer Id must be in a valid GUID format. @'), payeeFsp: Joi.string().required().min(1).max(32).description('Financial Service Provider of Payee').label('@ A valid Payee FSP number must be supplied. @'), @@ -292,7 +292,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), @@ -351,7 +351,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), @@ -395,7 +395,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), @@ -437,7 +437,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), diff --git a/src/payer/routes.js b/src/payer/routes.js index edec88ac..51af0996 100644 --- a/src/payer/routes.js +++ b/src/payer/routes.js @@ -72,7 +72,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), payload: Joi.object({ party: Joi.object().keys({ partyIdInfo: Joi.object().keys({ @@ -122,7 +122,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ type: Joi.string().required().description('path'), id: Joi.string().required().description('path') @@ -167,7 +167,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), @@ -226,7 +226,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), @@ -269,7 +269,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), @@ -312,7 +312,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), diff --git a/src/reservetransferpayee/handler.js b/src/reservetransferpayee/handler.js index 9b6aad5a..987d12e9 100644 --- a/src/reservetransferpayee/handler.js +++ b/src/reservetransferpayee/handler.js @@ -153,13 +153,13 @@ exports.getPartiesByTypeAndId = function (request, h) { // tracestate: request.headers.tracestate ? request.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(correlationCache.get(request.params.id)) + data: correlationCache.get(request.params.id) } // Logger.isInfoEnabled && Logger.info((new Date().toISOString()), 'Executing PUT', url) @@ -269,13 +269,13 @@ exports.postQuotes = function (request, h) { // tracestate: request.headers.tracestate ? request.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(quotesResponse) + data: quotesResponse } // Logger.isInfoEnabled && Logger.info((new Date().toISOString()), 'Executing PUT', url) const res = await sendRequest(url, opts, request.span) @@ -359,13 +359,13 @@ exports.postTransfers = async function (request, h) { // tracestate: request.headers.tracestate ? request.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(transfersResponse) + data: transfersResponse } // Logger.isInfoEnabled && Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(transfersResponse)}]`) @@ -564,13 +564,13 @@ exports.getQuotesById = function (request, h) { // tracestate: request.headers.tracestate ? request.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(responseData) + data: responseData } // Logger.isInfoEnabled && Logger.info((new Date().toISOString()), 'Executing PUT', url) const res = await sendRequest(url, opts, request.span) @@ -632,13 +632,13 @@ const sendErrorCallback = async (fspiopError, quoteId, headers, span) => { 'FSPIOP-URI': `/quotes/${quoteId}/error` }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(fspiopError.toApiErrorObject()) + data: fspiopError.toApiErrorObject() } const res = await sendRequest(url, opts, span) if (res.status !== Enums.Http.ReturnCodes.OK.CODE) { diff --git a/src/reservetransferpayee/routes.js b/src/reservetransferpayee/routes.js index 63444934..e1010077 100644 --- a/src/reservetransferpayee/routes.js +++ b/src/reservetransferpayee/routes.js @@ -84,7 +84,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), failAction: (request, h, err) => { throw err } } } @@ -115,7 +115,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), payload: Joi.object({ quoteId: Joi.string().guid().required().description('Id of quote').label('@ Quote Id must be in a valid GUID format. @'), transactionId: Joi.string().guid().required().description('Id of transaction').label('@ Transaction Id must be in a valid GUID format. @'), @@ -208,7 +208,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), @@ -244,7 +244,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), payload: Joi.object({ transferId: Joi.string().guid().required().description('Id of transfer').label('@ Transfer Id must be in a valid GUID format. @'), payeeFsp: Joi.string().required().min(1).max(32).description('Financial Service Provider of Payee').label('@ A valid Payee FSP number must be supplied. @'), @@ -292,7 +292,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), @@ -351,7 +351,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), @@ -395,7 +395,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), @@ -437,7 +437,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ id: Joi.string().required().description('path') }), diff --git a/src/testfsp1/handler.js b/src/testfsp1/handler.js index 2543c86b..013fd5bd 100644 --- a/src/testfsp1/handler.js +++ b/src/testfsp1/handler.js @@ -123,13 +123,13 @@ exports.getPartiesByTypeAndId = function (req, h) { // tracestate: req.headers.tracestate ? req.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(correlationCache.get(req.params.id)) + data: correlationCache.get(req.params.id) } console.log((new Date().toISOString()), 'Executing PUT', url) const res = await request(url, opts, req.span) @@ -270,13 +270,13 @@ exports.postQuotes = function (req, h) { // tracestate: req.headers.tracestate ? req.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(quotesResponse) + data: quotesResponse } // Logger.isInfoEnabled && Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(quotesResponse)}]`) const res = await request(url, opts, req.span) @@ -400,13 +400,13 @@ exports.postTransfers = async function (req, h) { // tracestate: req.headers.tracestate ? req.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(transfersResponse) + data: transfersResponse } // Logger.isInfoEnabled && Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(transfersResponse)}]`) const res = await request(url, opts, req.span) diff --git a/src/testfsp2/handler.js b/src/testfsp2/handler.js index 3aebd2de..1820c8ba 100644 --- a/src/testfsp2/handler.js +++ b/src/testfsp2/handler.js @@ -123,13 +123,13 @@ exports.getPartiesByTypeAndId = function (req, h) { // tracestate: req.headers.tracestate ? req.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(correlationCache.get(req.params.id)) + data: correlationCache.get(req.params.id) } // console.log((new Date().toISOString()), 'Executing PUT', url) const res = await request(url, opts, req.span) @@ -270,13 +270,13 @@ exports.postQuotes = function (req, h) { // tracestate: req.headers.tracestate ? req.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(quotesResponse) + data: quotesResponse } // Logger.isInfoEnabled && Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(quotesResponse)}]`) const res = await request(url, opts, req.span) @@ -400,13 +400,13 @@ exports.postTransfers = async function (req, h) { // tracestate: req.headers.tracestate ? req.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(transfersResponse) + data: transfersResponse } // Logger.isInfoEnabled && Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(transfersResponse)}]`) const res = await request(url, opts, req.span) diff --git a/src/testfsp3/handler.js b/src/testfsp3/handler.js index e4b9bb56..5e9b7918 100644 --- a/src/testfsp3/handler.js +++ b/src/testfsp3/handler.js @@ -123,13 +123,13 @@ exports.getPartiesByTypeAndId = function (req, h) { // tracestate: req.headers.tracestate ? req.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(correlationCache.get(req.params.id)) + data: correlationCache.get(req.params.id) } // console.log((new Date().toISOString()), 'Executing PUT', url) const res = await request(url, opts, req.span) @@ -270,13 +270,13 @@ exports.postQuotes = function (req, h) { // tracestate: req.headers.tracestate ? req.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(quotesResponse) + data: quotesResponse } // Logger.isInfoEnabled && Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(quotesResponse)}]`) const res = await request(url, opts, req.span) @@ -400,13 +400,13 @@ exports.postTransfers = async function (req, h) { // tracestate: req.headers.tracestate ? req.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(transfersResponse) + data: transfersResponse } // Logger.isInfoEnabled && Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(transfersResponse)}]`) const res = await request(url, opts, req.span) diff --git a/src/testfsp4/handler.js b/src/testfsp4/handler.js index 7ab7593a..52d751bd 100644 --- a/src/testfsp4/handler.js +++ b/src/testfsp4/handler.js @@ -123,13 +123,13 @@ exports.getPartiesByTypeAndId = function (req, h) { // tracestate: req.headers.tracestate ? req.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(correlationCache.get(req.params.id)) + data: correlationCache.get(req.params.id) } // console.log((new Date().toISOString()), 'Executing PUT', url) const res = await request(url, opts, req.span) @@ -270,13 +270,13 @@ exports.postQuotes = function (req, h) { // tracestate: req.headers.tracestate ? req.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(quotesResponse) + data: quotesResponse } // Logger.isInfoEnabled && Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(quotesResponse)}]`) const res = await request(url, opts, req.span) @@ -400,13 +400,13 @@ exports.postTransfers = async function (req, h) { // tracestate: req.headers.tracestate ? req.headers.tracestate : undefined }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], httpsAgent: new https.Agent({ rejectUnauthorized: false }), - data: JSON.stringify(transfersResponse) + data: transfersResponse } // Logger.isInfoEnabled && Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(transfersResponse)}]`) const res = await request(url, opts, req.span) diff --git a/src/transactionRequests/handler.js b/src/transactionRequests/handler.js index b848e939..46501bee 100644 --- a/src/transactionRequests/handler.js +++ b/src/transactionRequests/handler.js @@ -70,10 +70,10 @@ exports.getTransactionRequestById = function (request, h) { 'FSPIOP-URI': `/transactionRequests/${request.params.ID}` }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], - data: JSON.stringify(transactionRequestResponse) + data: transactionRequestResponse } const res = await sendRequest(url, opts, request.span) Logger.isInfoEnabled && Logger.info(`response: ${res.status}`) @@ -122,10 +122,10 @@ exports.postTransactionRequest = function (request, h) { 'FSPIOP-URI': `/transactionRequests/${request.payload.transactionRequestId}` }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], - data: JSON.stringify(transactionRequestsResponse) + data: transactionRequestsResponse } const res = await sendRequest(url, opts, request.span) Logger.isInfoEnabled && Logger.info(`response: ${res.status}`) @@ -194,10 +194,10 @@ const sendErrorCallback = async (fspiopError, transactionRequestId, headers, spa 'FSPIOP-URI': fspiopUriHeader }, transformRequest: [(data, headers) => { - delete headers.common.Accept - return data + headers.delete('Accept') + return JSON.stringify(data) }], - data: JSON.stringify(fspiopError.toApiErrorObject()) + data: fspiopError.toApiErrorObject() } const res = await sendRequest(url, opts, span) if (res.status !== Enums.Http.ReturnCodes.OK.CODE) { diff --git a/src/transactionRequests/routes.js b/src/transactionRequests/routes.js index 3f07017a..6c6e9fb7 100644 --- a/src/transactionRequests/routes.js +++ b/src/transactionRequests/routes.js @@ -55,7 +55,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ ID: Joi.string().guid().required().description('path').label('Supply a valid transfer Id to continue.') }) @@ -88,7 +88,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), payload: Joi.object({ transactionRequestId: Joi.string().guid().required().description('Id of transaction request').label('@ Transaction Request Id must be in a valid GUID format. @'), payee: Joi.object().keys({ @@ -172,7 +172,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ ID: Joi.string().required().description('path') }), @@ -213,7 +213,7 @@ module.exports = [ 'fspiop-http-method': Joi.string().optional(), traceparent: Joi.string().optional(), tracestate: Joi.string().optional() - }).unknown(false).options({ stripUnknown: true }), + }).unknown(true).options({ stripUnknown: true }), params: Joi.object({ ID: Joi.string().required().description('path') }), From dbf75bea79b91a42608684d30c02795e205f804c Mon Sep 17 00:00:00 2001 From: Steven Oderayi Date: Wed, 26 Jun 2024 17:35:02 +0100 Subject: [PATCH 2/6] chore(snapshot): 12.3.0-snapshot.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9c35c2cc..85b6cbcf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sims", - "version": "12.2.0", + "version": "12.3.0-snapshot.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "sims", - "version": "12.2.0", + "version": "12.3.0-snapshot.0", "license": "Apache-2.0", "dependencies": { "@hapi/boom": "10.0.1", diff --git a/package.json b/package.json index 772d0e27..4994eed6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sims", - "version": "12.2.0", + "version": "12.3.0-snapshot.0", "description": "A super-simple fsp simulator", "main": "src/index.js", "author": "ModusBox", From ff79498ae79e614fb2016666b08c8ef4b76fa50e Mon Sep 17 00:00:00 2001 From: Steven Oderayi Date: Thu, 27 Jun 2024 09:28:48 +0100 Subject: [PATCH 3/6] feat: use enf for HUB_NAME input --- src/lib/config.js | 6 ------ src/payee/handler.js | 10 +++++----- 2 files changed, 5 insertions(+), 11 deletions(-) delete mode 100644 src/lib/config.js diff --git a/src/lib/config.js b/src/lib/config.js deleted file mode 100644 index a419554d..00000000 --- a/src/lib/config.js +++ /dev/null @@ -1,6 +0,0 @@ -const Config = { - HUB_ID: 1, - HUB_NAME: 'Hub' -} - -module.exports = Config diff --git a/src/payee/handler.js b/src/payee/handler.js index 74078003..7f3d79ee 100644 --- a/src/payee/handler.js +++ b/src/payee/handler.js @@ -36,6 +36,7 @@ const ErrorHandler = require('@mojaloop/central-services-error-handling') const Metrics = require('../lib/metrics') const base64url = require('base64url') +const hubName = process.env.HUB_NAME || 'Hub' const partiesEndpoint = process.env.PARTIES_ENDPOINT || 'http://localhost:1080' const quotesEndpoint = process.env.QUOTES_ENDPOINT || 'http://localhost:1080' const transfersEndpoint = process.env.TRANSFERS_ENDPOINT || 'http://localhost:1080' @@ -43,7 +44,6 @@ const transfersFulfilResponseDisabled = (process.env.TRANSFERS_FULFIL_RESPONSE_D const signature = process.env.MOCK_JWS_SIGNATURE || 'abcJjvNrkyK2KBieDUbGfhaBUn75aDUATNF4joqA8OLs4QgSD7i6EO8BIdy6Crph3LnXnTM20Ai1Z6nt0zliS_qPPLU9_vi6qLb15FOkl64DQs9hnfoGeo2tcjZJ88gm19uLY_s27AJqC1GH1B8E2emLrwQMDMikwQcYvXoyLrL7LL3CjaLMKdzR7KTcQi1tCK4sNg0noIQLpV3eA61kess' const ilpSecret = process.env.ILP_SECRET || 'Quaixohyaesahju3thivuiChai5cahng' const Ilp = new Sdk.Ilp({ secret: ilpSecret }) -const Config = require('../lib/config') const extractUrls = (request) => { const urls = {} @@ -611,7 +611,7 @@ const sendErrorCallback = async (fspiopError, quoteId, headers, span) => { const protectedHeader = { alg: 'RS256', 'FSPIOP-Source': `${headers['fspiop-source']}`, - 'FSPIOP-Destination': Config.HUB_NAME, + 'FSPIOP-Destination': hubName, 'FSPIOP-URI': `/quotes/${quoteId}/error`, 'FSPIOP-HTTP-Method': 'PUT', Date: '' @@ -625,7 +625,7 @@ const sendErrorCallback = async (fspiopError, quoteId, headers, span) => { headers: { 'Content-Type': 'application/vnd.interoperability.quotes+json;version=1.0', 'FSPIOP-Source': headers['fspiop-source'], - 'FSPIOP-Destination': Config.HUB_NAME, + 'FSPIOP-Destination': hubName, Date: new Date().toUTCString(), 'FSPIOP-Signature': `${JSON.stringify(fspiopSignature)}`, 'FSPIOP-HTTP-Method': 'PUT', @@ -645,10 +645,10 @@ const sendErrorCallback = async (fspiopError, quoteId, headers, span) => { throw new Error(`Failed to send. Result: ${res}`) } - histTimerEnd({ success: true, fsp: 'payee', operation: 'sendErrorCallback', source: headers['fspiop-source'], destination: Config.HUB_NAME }) + histTimerEnd({ success: true, fsp: 'payee', operation: 'sendErrorCallback', source: headers['fspiop-source'], destination: hubName }) } catch (err) { Logger.isErrorEnabled && Logger.error(err) - histTimerEnd({ success: false, fsp: 'payee', operation: 'sendErrorCallback', source: headers['fspiop-source'], destination: Config.HUB_NAME }) + histTimerEnd({ success: false, fsp: 'payee', operation: 'sendErrorCallback', source: headers['fspiop-source'], destination: hubName }) } } From 4c9971abe11a3b5ec4e805126535c1125aa997d2 Mon Sep 17 00:00:00 2001 From: Steven Oderayi Date: Thu, 27 Jun 2024 09:29:07 +0100 Subject: [PATCH 4/6] chore(snapshot): 12.3.0-snapshot.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 85b6cbcf..18f07f89 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sims", - "version": "12.3.0-snapshot.0", + "version": "12.3.0-snapshot.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "sims", - "version": "12.3.0-snapshot.0", + "version": "12.3.0-snapshot.1", "license": "Apache-2.0", "dependencies": { "@hapi/boom": "10.0.1", diff --git a/package.json b/package.json index 4994eed6..e7fcbce0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sims", - "version": "12.3.0-snapshot.0", + "version": "12.3.0-snapshot.1", "description": "A super-simple fsp simulator", "main": "src/index.js", "author": "ModusBox", From 3941a58066f00f8fd2ae0bd481a3b8226dbdf00d Mon Sep 17 00:00:00 2001 From: Steven Oderayi Date: Thu, 27 Jun 2024 12:23:50 +0100 Subject: [PATCH 5/6] chore(snapshot): 12.3.0-snapshot.2 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 18f07f89..cbcd9172 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sims", - "version": "12.3.0-snapshot.1", + "version": "12.3.0-snapshot.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "sims", - "version": "12.3.0-snapshot.1", + "version": "12.3.0-snapshot.2", "license": "Apache-2.0", "dependencies": { "@hapi/boom": "10.0.1", diff --git a/package.json b/package.json index e7fcbce0..6ea4fda2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sims", - "version": "12.3.0-snapshot.1", + "version": "12.3.0-snapshot.2", "description": "A super-simple fsp simulator", "main": "src/index.js", "author": "ModusBox", From 61f4c57f490be79803ae22da420e3e5df833a062 Mon Sep 17 00:00:00 2001 From: Steven Oderayi Date: Thu, 27 Jun 2024 17:16:22 +0100 Subject: [PATCH 6/6] fix: fix config refs --- package-lock.json | 14 +++++++------- package.json | 2 +- src/bulkQuotes/handler.js | 10 +++++----- src/reservetransferpayee/handler.js | 10 +++++----- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index cbcd9172..73d40edb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "@mojaloop/central-services-metrics": "12.0.8", "@mojaloop/central-services-shared": "18.5.0", "@mojaloop/event-sdk": "^14.1.1", - "@mojaloop/sdk-standard-components": "18.2.0", + "@mojaloop/sdk-standard-components": "18.2.1", "axios": "1.7.2", "base64url": "3.0.1", "blipp": "4.0.2", @@ -1315,9 +1315,9 @@ } }, "node_modules/@mojaloop/sdk-standard-components": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@mojaloop/sdk-standard-components/-/sdk-standard-components-18.2.0.tgz", - "integrity": "sha512-kUhQ9V4//1Fk6gJJ6tJWqRKMeaWD11khFEgAMKnVnmZO70zf/9cc5wK+/R5dKDNgwpTBlfgK/8bX/SGDTgzkrA==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@mojaloop/sdk-standard-components/-/sdk-standard-components-18.2.1.tgz", + "integrity": "sha512-kp78Nfs2LNNbPyAzhePhLsIC4xRXRwSc2uMx2fkrTXVZohsdYY31+Te9lBI3oo++cGvSl+SmSBDLatqJ/RZIsg==", "dependencies": { "base64url": "3.0.1", "fast-safe-stringify": "^2.1.1", @@ -15668,9 +15668,9 @@ } }, "@mojaloop/sdk-standard-components": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@mojaloop/sdk-standard-components/-/sdk-standard-components-18.2.0.tgz", - "integrity": "sha512-kUhQ9V4//1Fk6gJJ6tJWqRKMeaWD11khFEgAMKnVnmZO70zf/9cc5wK+/R5dKDNgwpTBlfgK/8bX/SGDTgzkrA==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@mojaloop/sdk-standard-components/-/sdk-standard-components-18.2.1.tgz", + "integrity": "sha512-kp78Nfs2LNNbPyAzhePhLsIC4xRXRwSc2uMx2fkrTXVZohsdYY31+Te9lBI3oo++cGvSl+SmSBDLatqJ/RZIsg==", "requires": { "base64url": "3.0.1", "fast-safe-stringify": "^2.1.1", diff --git a/package.json b/package.json index 6ea4fda2..1cec2522 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "@mojaloop/central-services-metrics": "12.0.8", "@mojaloop/central-services-shared": "18.5.0", "@mojaloop/event-sdk": "^14.1.1", - "@mojaloop/sdk-standard-components": "18.2.0", + "@mojaloop/sdk-standard-components": "18.2.1", "axios": "1.7.2", "base64url": "3.0.1", "blipp": "4.0.2", diff --git a/src/bulkQuotes/handler.js b/src/bulkQuotes/handler.js index 267ef22f..065ea12c 100644 --- a/src/bulkQuotes/handler.js +++ b/src/bulkQuotes/handler.js @@ -35,8 +35,8 @@ const Sdk = require('@mojaloop/sdk-standard-components') const ErrorHandler = require('@mojaloop/central-services-error-handling') const Metrics = require('../lib/metrics') const base64url = require('base64url') -const Config = require('../lib/config') +const hubName = process.env.HUB_NAME || 'Hub' const quotesEndpoint = process.env.QUOTES_ENDPOINT || 'http://localhost:1080' const signature = process.env.MOCK_JWS_SIGNATURE || 'abcJjvNrkyK2KBieDUbGfhaBUn75aDUATNF4joqA8OLs4QgSD7i6EO8BIdy6Crph3LnXnTM20Ai1Z6nt0zliS_qPPLU9_vi6qLb15FOkl64DQs9hnfoGeo2tcjZJ88gm19uLY_s27AJqC1GH1B8E2emLrwQMDMikwQcYvXoyLrL7LL3CjaLMKdzR7KTcQi1tCK4sNg0noIQLpV3eA61kess' const ilpSecret = process.env.ILP_SECRET || 'Quaixohyaesahju3thivuiChai5cahng' @@ -315,7 +315,7 @@ const sendErrorCallback = async (fspiopError, bulkQuoteId, headers, span) => { const protectedHeader = { alg: 'RS256', 'FSPIOP-Source': `${headers['fspiop-source']}`, - 'FSPIOP-Destination': Config.HUB_NAME, + 'FSPIOP-Destination': hubName, 'FSPIOP-URI': `/bulkQuotes/${bulkQuoteId}/error`, 'FSPIOP-HTTP-Method': 'PUT', Date: '' @@ -329,7 +329,7 @@ const sendErrorCallback = async (fspiopError, bulkQuoteId, headers, span) => { headers: { 'Content-Type': 'application/vnd.interoperability.quotes+json;version=1.0', 'FSPIOP-Source': headers['fspiop-source'], - 'FSPIOP-Destination': Config.HUB_NAME, + 'FSPIOP-Destination': hubName, Date: new Date().toUTCString(), 'FSPIOP-Signature': `${JSON.stringify(fspiopSignature)}`, 'FSPIOP-HTTP-Method': 'PUT', @@ -349,10 +349,10 @@ const sendErrorCallback = async (fspiopError, bulkQuoteId, headers, span) => { throw new Error(`Failed to send. Result: ${res}`) } - histTimerEnd({ success: true, fsp: 'payee', operation: 'sendErrorCallback', source: headers['fspiop-source'], destination: Config.HUB_NAME }) + histTimerEnd({ success: true, fsp: 'payee', operation: 'sendErrorCallback', source: headers['fspiop-source'], destination: hubName }) } catch (err) { Logger.isErrorEnabled && Logger.error(err) - histTimerEnd({ success: false, fsp: 'payee', operation: 'sendErrorCallback', source: headers['fspiop-source'], destination: Config.HUB_NAME }) + histTimerEnd({ success: false, fsp: 'payee', operation: 'sendErrorCallback', source: headers['fspiop-source'], destination: hubName }) } } diff --git a/src/reservetransferpayee/handler.js b/src/reservetransferpayee/handler.js index 987d12e9..60d9fd30 100644 --- a/src/reservetransferpayee/handler.js +++ b/src/reservetransferpayee/handler.js @@ -36,6 +36,7 @@ const ErrorHandler = require('@mojaloop/central-services-error-handling') const Metrics = require('../lib/metrics') const base64url = require('base64url') +const hubName = process.env.HUB_NAME || 'Hub' const partiesEndpoint = process.env.PARTIES_ENDPOINT || 'http://localhost:1080' const quotesEndpoint = process.env.QUOTES_ENDPOINT || 'http://localhost:1080' const transfersEndpoint = process.env.TRANSFERS_ENDPOINT || 'http://localhost:1080' @@ -43,7 +44,6 @@ const transfersFulfilResponseDisabled = (process.env.TRANSFERS_FULFIL_RESPONSE_D const signature = process.env.MOCK_JWS_SIGNATURE || 'abcJjvNrkyK2KBieDUbGfhaBUn75aDUATNF4joqA8OLs4QgSD7i6EO8BIdy6Crph3LnXnTM20Ai1Z6nt0zliS_qPPLU9_vi6qLb15FOkl64DQs9hnfoGeo2tcjZJ88gm19uLY_s27AJqC1GH1B8E2emLrwQMDMikwQcYvXoyLrL7LL3CjaLMKdzR7KTcQi1tCK4sNg0noIQLpV3eA61kess' const ilpSecret = process.env.ILP_SECRET || 'Quaixohyaesahju3thivuiChai5cahng' const Ilp = new Sdk.Ilp({ secret: ilpSecret }) -const Config = require('../lib/config') const extractUrls = (request) => { const urls = {} @@ -611,7 +611,7 @@ const sendErrorCallback = async (fspiopError, quoteId, headers, span) => { const protectedHeader = { alg: 'RS256', 'FSPIOP-Source': `${headers['fspiop-source']}`, - 'FSPIOP-Destination': Config.HUB_NAME, + 'FSPIOP-Destination': hubName, 'FSPIOP-URI': `/quotes/${quoteId}/error`, 'FSPIOP-HTTP-Method': 'PUT', Date: '' @@ -625,7 +625,7 @@ const sendErrorCallback = async (fspiopError, quoteId, headers, span) => { headers: { 'Content-Type': 'application/vnd.interoperability.quotes+json;version=1.0', 'FSPIOP-Source': headers['fspiop-source'], - 'FSPIOP-Destination': Config.HUB_NAME, + 'FSPIOP-Destination': hubName, Date: new Date().toUTCString(), 'FSPIOP-Signature': `${JSON.stringify(fspiopSignature)}`, 'FSPIOP-HTTP-Method': 'PUT', @@ -645,10 +645,10 @@ const sendErrorCallback = async (fspiopError, quoteId, headers, span) => { throw new Error(`Failed to send. Result: ${res}`) } - histTimerEnd({ success: true, fsp: 'reservetransferpayee', operation: 'sendErrorCallback', source: headers['fspiop-source'], destination: Config.HUB_NAME }) + histTimerEnd({ success: true, fsp: 'reservetransferpayee', operation: 'sendErrorCallback', source: headers['fspiop-source'], destination: hubName }) } catch (err) { Logger.isErrorEnabled && Logger.error(err) - histTimerEnd({ success: false, fsp: 'reservetransferpayee', operation: 'sendErrorCallback', source: headers['fspiop-source'], destination: Config.HUB_NAME }) + histTimerEnd({ success: false, fsp: 'reservetransferpayee', operation: 'sendErrorCallback', source: headers['fspiop-source'], destination: hubName }) } }