@mojaloop/sdk-scheme-adapter 16.0.0 → 17.0.2-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.
Files changed (43) hide show
  1. package/.circleci/config.yml +463 -182
  2. package/CHANGELOG.md +24 -0
  3. package/Dockerfile +12 -5
  4. package/audit-resolve.json +30 -91
  5. package/docker-compose.yml +4 -2
  6. package/package.json +21 -19
  7. package/src/InboundServer/index.js +4 -2
  8. package/src/InboundServer/middlewares.js +12 -4
  9. package/src/OutboundServer/index.js +3 -2
  10. package/src/OutboundServer/middlewares.js +6 -2
  11. package/src/TestServer/index.js +4 -2
  12. package/src/index.js +0 -2
  13. package/src/lib/metrics.js +0 -2
  14. package/src/lib/model/AccountsModel.js +4 -7
  15. package/src/lib/model/Async2SyncModel.js +4 -3
  16. package/src/lib/model/InboundTransfersModel.js +16 -14
  17. package/src/lib/model/OutboundBulkQuotesModel.js +4 -7
  18. package/src/lib/model/OutboundBulkTransfersModel.js +4 -7
  19. package/src/lib/model/OutboundRequestToPayModel.js +5 -10
  20. package/src/lib/model/OutboundRequestToPayTransferModel.js +6 -12
  21. package/src/lib/model/OutboundTransfersModel.js +10 -9
  22. package/src/lib/model/common/BackendError.js +1 -13
  23. package/src/lib/model/common/Enums.js +30 -0
  24. package/src/lib/model/common/index.js +3 -2
  25. package/src/lib/router.js +3 -1
  26. package/src/lib/validate.js +10 -1
  27. package/test/config/integration.env +2 -2
  28. package/test/integration/lib/Outbound/parties.test.js +2 -1
  29. package/test/integration/lib/Outbound/quotes.test.js +3 -1
  30. package/test/integration/lib/Outbound/simpleTransfers.test.js +2 -1
  31. package/test/unit/inboundApi/handlers.test.js +3 -1
  32. package/test/unit/lib/model/AccountsModel.test.js +2 -1
  33. package/test/unit/lib/model/InboundTransfersModel.test.js +10 -6
  34. package/test/unit/lib/model/OutboundBulkQuotesModel.test.js +5 -3
  35. package/test/unit/lib/model/OutboundBulkTransfersModel.test.js +4 -3
  36. package/test/unit/lib/model/OutboundRequestToPayModel.test.js +3 -2
  37. package/test/unit/lib/model/OutboundRequestToPayTransferModel.test.js +4 -3
  38. package/test/unit/lib/model/OutboundTransfersModel.test.js +37 -34
  39. package/test/unit/lib/model/PartiesModel.test.js +2 -1
  40. package/test/unit/lib/model/QuotesModel.test.js +2 -1
  41. package/test/unit/lib/model/TransfersModel.test.js +2 -1
  42. package/test/unit/lib/model/data/getBulkTransfersBackendResponse.json +1 -1
  43. package/test/unit/lib/model/data/getBulkTransfersMojaloopResponse.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,4 +1,28 @@
1
1
  # Changelog: [mojaloop/thirdparty-api-svc](https://github.com/mojaloop/thirdparty-api-svc)
2
+ ### [17.0.1](https://github.com/mojaloop/sdk-scheme-adapter/compare/v17.0.0...v17.0.1) (2022-07-04)
3
+
4
+
5
+ ### Bug Fixes
6
+
7
+ * creating inbound server ([#329](https://github.com/mojaloop/sdk-scheme-adapter/issues/329)) ([962420f](https://github.com/mojaloop/sdk-scheme-adapter/commit/962420f6fed02722c5a9aeee6c108b6fbc9f021d))
8
+
9
+ ## [17.0.0](https://github.com/mojaloop/sdk-scheme-adapter/compare/v15.0.1...v17.0.0) (2022-07-04)
10
+
11
+
12
+ ### ⚠ BREAKING CHANGES
13
+
14
+ * add dummy pr to major version bump due to unsquashed title (#327)
15
+
16
+ ### Features
17
+
18
+ * suppress health check logs ([#328](https://github.com/mojaloop/sdk-scheme-adapter/issues/328)) ([64fadde](https://github.com/mojaloop/sdk-scheme-adapter/commit/64faddea8307aa0c19d56466d0afe8f8208c4d66))
19
+
20
+
21
+ ### Chore
22
+
23
+ * add dummy pr to major version bump due to unsquashed title ([#327](https://github.com/mojaloop/sdk-scheme-adapter/issues/327)) ([ff0f29b](https://github.com/mojaloop/sdk-scheme-adapter/commit/ff0f29b7ce560565ee21cf6ae84118e1b391b5b5))
24
+ * **release:** 16.0.0 [skip ci] ([0071c65](https://github.com/mojaloop/sdk-scheme-adapter/commit/0071c65c3665239d0a482e76498f9eec5c288043))
25
+
2
26
  ## [16.0.0](https://github.com/mojaloop/sdk-scheme-adapter/compare/v15.0.1...v16.0.0) (2022-07-01)
3
27
 
4
28
 
package/Dockerfile CHANGED
@@ -4,7 +4,7 @@ RUN apk add --no-cache git python3 build-base
4
4
 
5
5
  EXPOSE 3000
6
6
 
7
- WORKDIR /src
7
+ WORKDIR /opt/app
8
8
 
9
9
  # This is super-ugly, but it means we don't have to re-run npm install every time any of the source
10
10
  # files change- only when any dependencies change- which is a superior developer experience when
@@ -12,7 +12,12 @@ WORKDIR /src
12
12
  COPY ./package.json .
13
13
  COPY ./package-lock.json .
14
14
  RUN npm ci --only=production
15
+
16
+ COPY src /opt/app/src
17
+
15
18
  FROM node:16.15.0-alpine
19
+ WORKDIR /opt/app
20
+
16
21
 
17
22
  ARG BUILD_DATE
18
23
  ARG VCS_URL
@@ -28,8 +33,10 @@ LABEL org.label-schema.vcs-ref=$VCS_REF
28
33
  LABEL org.label-schema.url="https://mojaloop.io/"
29
34
  LABEL org.label-schema.version=$VERSION
30
35
 
31
- COPY --from=builder /src/ /src
32
- COPY ./src ./src
33
- COPY ./secrets /
36
+ # Create a non-root user: ml-user
37
+ RUN adduser -D ml-user
38
+ USER ml-user
39
+
40
+ COPY --chown=ml-user --from=builder /opt/app .
34
41
 
35
- CMD ["node", "src/index.js"]
42
+ CMD ["npm", "run", "start"]
@@ -2,124 +2,63 @@
2
2
  "decisions": {
3
3
  "1075703|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs": {
4
4
  "decision": "ignore",
5
- "madeAt": 1656678986448
5
+ "madeAt": 1657188195403,
6
+ "expiresAt": 1659780190646
6
7
  },
7
8
  "1075704|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs": {
8
9
  "decision": "ignore",
9
- "madeAt": 1656678989848
10
+ "madeAt": 1657188196343,
11
+ "expiresAt": 1659780190646
10
12
  },
11
- "1070412|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs": {
13
+ "1080944|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment": {
12
14
  "decision": "ignore",
13
- "madeAt": 1656679958470
15
+ "madeAt": 1657188197274,
16
+ "expiresAt": 1659780190646
14
17
  },
15
- "1070412|ejs": {
16
- "decision": "ignore",
17
- "madeAt": 1656679958471
18
- },
19
- "1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it": {
18
+ "1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment>shins>markdown-it": {
20
19
  "decision": "ignore",
21
- "madeAt": 1656679961621
20
+ "madeAt": 1657188198190,
21
+ "expiresAt": 1659780190646
22
22
  },
23
23
  "1070030|widdershins>markdown-it": {
24
24
  "decision": "ignore",
25
- "madeAt": 1656681873020
25
+ "madeAt": 1657188198190,
26
+ "expiresAt": 1659780190646
26
27
  },
27
- "1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html": {
28
+ "1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment>shins>markdown-it>sanitize-html": {
28
29
  "decision": "ignore",
29
- "madeAt": 1656679964361
30
+ "madeAt": 1657188199040,
31
+ "expiresAt": 1659780190646
30
32
  },
31
- "1070260|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html": {
33
+ "1070260|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment>shins>markdown-it>sanitize-html": {
32
34
  "decision": "ignore",
33
- "madeAt": 1656679966871
35
+ "madeAt": 1657188199954,
36
+ "expiresAt": 1659780190646
34
37
  },
35
- "1067553|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html>widdershins>swagger2openapi>better-ajv-errors>jsonpointer": {
38
+ "1070412|ejs": {
36
39
  "decision": "ignore",
37
- "madeAt": 1656679000803
40
+ "madeAt": 1657188200902,
41
+ "expiresAt": 1659780190646
38
42
  },
39
43
  "1067553|swagger2openapi>better-ajv-errors>jsonpointer": {
40
44
  "decision": "ignore",
41
- "madeAt": 1656679000803
42
- },
43
- "1067553|widdershins>markdown-it>swagger2openapi>better-ajv-errors>jsonpointer": {
44
- "decision": "ignore",
45
- "madeAt": 1656679000804
46
- },
47
- "1067946|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html>widdershins>swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv": {
48
- "decision": "ignore",
49
- "madeAt": 1656679005322
45
+ "madeAt": 1657188201786,
46
+ "expiresAt": 1659780190646
50
47
  },
51
48
  "1067946|swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv": {
52
49
  "decision": "ignore",
53
- "madeAt": 1656679005322
54
- },
55
- "1067946|widdershins>markdown-it>swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv": {
56
- "decision": "ignore",
57
- "madeAt": 1656679005322
58
- },
59
- "1068310|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>ejs>markdown-it>sanitize-html>widdershins>swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv>yargs>yargs-parser": {
60
- "decision": "ignore",
61
- "madeAt": 1656679007475
62
- },
63
- "1068310|widdershins>markdown-it>swagger2openapi>better-ajv-errors>jsonpointer>oas-validator>ajv>yargs>yargs-parser": {
64
- "decision": "ignore",
65
- "madeAt": 1656679007475
66
- },
67
- "1070412|shins>ejs": {
68
- "decision": "ignore",
69
- "madeAt": 1656679958471
70
- },
71
- "1070030|shins>ejs>markdown-it": {
72
- "decision": "ignore",
73
- "madeAt": 1656679961621
74
- },
75
- "1068155|shins>ejs>markdown-it>sanitize-html": {
76
- "decision": "ignore",
77
- "madeAt": 1656679964361
78
- },
79
- "1070260|shins>ejs>markdown-it>sanitize-html": {
80
- "decision": "ignore",
81
- "madeAt": 1656679966871
82
- },
83
- "1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>markdown-it": {
84
- "decision": "ignore",
85
- "madeAt": 1656681873020
86
- },
87
- "1068155|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>markdown-it>sanitize-html": {
88
- "decision": "ignore",
89
- "madeAt": 1656681876693
90
- },
91
- "1070260|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>shins>markdown-it>sanitize-html": {
92
- "decision": "ignore",
93
- "madeAt": 1656681880214
50
+ "madeAt": 1657188202661,
51
+ "expiresAt": 1659780190646
94
52
  },
95
53
  "1068310|widdershins>markdown-it>yargs>yargs-parser": {
96
54
  "decision": "ignore",
97
- "madeAt": 1656681883038
98
- },
99
- "1070030|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>widdershins>markdown-it": {
100
- "decision": "ignore",
101
- "madeAt": 1656691882275,
102
- "expiresAt": 1659283873047
103
- },
104
- "1070030|shins>markdown-it": {
105
- "decision": "ignore",
106
- "madeAt": 1656691882275,
107
- "expiresAt": 1659283873047
108
- },
109
- "1068310|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>widdershins>markdown-it>yargs>yargs-parser": {
110
- "decision": "ignore",
111
- "madeAt": 1656691883964,
112
- "expiresAt": 1659283873047
113
- },
114
- "1068155|shins>markdown-it>sanitize-html": {
115
- "decision": "ignore",
116
- "madeAt": 1656691885077,
117
- "expiresAt": 1659283873047
55
+ "madeAt": 1657188203603,
56
+ "expiresAt": 1659780190646
118
57
  },
119
- "1070260|shins>markdown-it>sanitize-html": {
58
+ "1080969|@mojaloop/central-services-shared>@mojaloop/event-sdk>grpc>protobufjs>moment": {
120
59
  "decision": "ignore",
121
- "madeAt": 1656691886045,
122
- "expiresAt": 1659283873047
60
+ "madeAt": 1657217280998,
61
+ "expiresAt": 1659809259103
123
62
  }
124
63
  },
125
64
  "rules": {},
@@ -22,9 +22,11 @@ services:
22
22
  - "4002:4002"
23
23
  depends_on:
24
24
  - redis
25
- command: sh -c "/wait4/wait4.js sdk-scheme-adapter; node src/index.js"
25
+ command: sh -c "/tmp/wait4/wait4.js sdk-scheme-adapter && npm run start"
26
+ # command: sh -c "/tmp/wait4/wait4.js sdk-scheme-adapter && sleep 999999"
26
27
  volumes:
27
- - ./docker/wait4:/wait4
28
+ - ./docker/wait4:/tmp/wait4
29
+ - ./secrets:/opt/app/secrets
28
30
 
29
31
  ml-testing-toolkit:
30
32
  networks:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mojaloop/sdk-scheme-adapter",
3
- "version": "16.0.0",
3
+ "version": "17.0.2-snapshot.10",
4
4
  "description": "An adapter for connecting to Mojaloop API enabled switches.",
5
5
  "main": "src/index.js",
6
6
  "types": "src/index.d.ts",
@@ -11,8 +11,9 @@
11
11
  "~": "src"
12
12
  },
13
13
  "scripts": {
14
- "audit:resolve": "SHELL=sh resolve-audit --production",
15
- "audit:check": "SHELL=sh check-audit --production",
14
+ "start": "node src/index.js",
15
+ "audit:resolve": "npx resolve-audit --production",
16
+ "audit:check": "npx check-audit --production",
16
17
  "build": "npm run build:openapi; npm run build:dto:outbound",
17
18
  "build:openapi": "npm run build:openapi:inbound && npm run build:openapi:outbound",
18
19
  "build:openapi:inbound": "openapi bundle --output ./src/InboundServer/api.yaml --ext yaml ./src/InboundServer/api_template.yaml",
@@ -20,7 +21,8 @@
20
21
  "build:dto:outbound": "openapi-typescript ./src/OutboundServer/api.yaml --output ./src/OutboundServer/api_interfaces/openapi.d.ts",
21
22
  "lint": "eslint ./src/",
22
23
  "lint:fix": "eslint ./src/ --fix",
23
- "test": "jest --ci --reporters=default --reporters=jest-junit --env=node test/unit/",
24
+ "test": "npm run test:unit",
25
+ "test:unit": "jest --runInBand --ci --reporters=default --reporters=jest-junit --env=node test/unit/",
24
26
  "test:int": "jest --ci --reporters=default --reporters=jest-junit --env=node test/integration",
25
27
  "validate:api": "npm run validate:api:in; npm run validate:api:out",
26
28
  "validate:api:in": "swagger-cli validate ./src/InboundServer/api.yaml",
@@ -55,20 +57,20 @@
55
57
  "url": "git@github.com:mojaloop/sdk-scheme-adapter.git"
56
58
  },
57
59
  "dependencies": {
58
- "@koa/cors": "^3.1.0",
60
+ "@koa/cors": "^3.3.0",
59
61
  "@mojaloop/central-services-shared": "17.0.2",
60
- "@mojaloop/sdk-standard-components": "^17.0.4",
62
+ "@mojaloop/sdk-standard-components": "^17.1.0",
61
63
  "ajv": "8.11.0",
62
64
  "axios": "^0.27.2",
63
65
  "co-body": "^6.1.0",
64
66
  "dotenv": "^16.0.1",
65
- "env-var": "^7.0.1",
66
- "express": "^4.17.2",
67
+ "env-var": "^7.1.1",
68
+ "express": "^4.18.1",
67
69
  "fast-json-patch": "^3.1.1",
68
70
  "javascript-state-machine": "^3.1.0",
69
71
  "js-yaml": "^4.1.0",
70
72
  "json-schema-ref-parser": "^9.0.9",
71
- "koa": "^2.13.1",
73
+ "koa": "^2.13.4",
72
74
  "koa-body": "^5.0.0",
73
75
  "lodash": "^4.17.21",
74
76
  "module-alias": "^2.2.2",
@@ -77,31 +79,31 @@
77
79
  "prom-client": "^14.0.1",
78
80
  "promise-timeout": "^1.3.0",
79
81
  "random-word-slugs": "^0.1.6",
80
- "redis": "^4.1.1",
81
- "uuidv4": "^6.2.12",
82
+ "redis": "^4.2.0",
83
+ "uuidv4": "^6.2.13",
82
84
  "ws": "^8.8.0"
83
85
  },
84
86
  "devDependencies": {
85
87
  "@babel/core": "^7.18.6",
86
88
  "@babel/preset-env": "^7.18.6",
87
89
  "@mojaloop/api-snippets": "^14.0.0",
88
- "@redocly/openapi-cli": "^1.0.0-beta.59",
90
+ "@redocly/openapi-cli": "^1.0.0-beta.94",
89
91
  "@types/jest": "^28.1.4",
90
92
  "babel-jest": "^28.1.2",
91
- "eslint": "^8.18.0",
93
+ "eslint": "^8.19.0",
92
94
  "eslint-config-airbnb-base": "^15.0.0",
93
- "eslint-plugin-import": "^2.24.2",
95
+ "eslint-plugin-import": "^2.26.0",
94
96
  "eslint-plugin-jest": "^26.5.3",
95
97
  "jest": "^28.1.2",
96
98
  "jest-junit": "^14.0.0",
97
99
  "nock": "^13.2.8",
98
- "npm-audit-resolver": "^3.0.0-0",
99
- "npm-check-updates": "^15.0.1",
100
+ "npm-audit-resolver": "^3.0.0-7",
101
+ "npm-check-updates": "^15.2.1",
100
102
  "openapi-response-validator": "^12.0.0",
101
- "openapi-typescript": "^5.4.0",
103
+ "openapi-typescript": "^5.4.1",
102
104
  "redis-mock": "^0.56.3",
103
- "standard-version": "^9.3.1",
104
- "supertest": "^6.1.6",
105
+ "standard-version": "^9.5.0",
106
+ "supertest": "^6.2.4",
105
107
  "swagger-cli": "^4.0.4"
106
108
  }
107
109
  }
@@ -23,6 +23,8 @@ const router = require('../lib/router');
23
23
  const handlers = require('./handlers');
24
24
  const middlewares = require('./middlewares');
25
25
 
26
+ const logExcludePaths = ['/'];
27
+
26
28
  class InboundApi extends EventEmitter {
27
29
  constructor(conf, logger, cache, validator, wso2) {
28
30
  super({ captureExceptions: true });
@@ -99,7 +101,7 @@ class InboundApi extends EventEmitter {
99
101
  api.use(middlewares.createJwsValidator(logger, jwsVerificationKeys, jwsExclusions));
100
102
  }
101
103
 
102
- api.use(middlewares.applyState({ cache, wso2, conf }));
104
+ api.use(middlewares.applyState({ cache, wso2, conf, logExcludePaths }));
103
105
  api.use(middlewares.createLogger(logger));
104
106
  api.use(middlewares.createRequestValidator(validator));
105
107
  api.use(middlewares.assignFspiopIdentifier());
@@ -133,7 +135,7 @@ class InboundServer extends EventEmitter {
133
135
  constructor(conf, logger, cache, wso2) {
134
136
  super({ captureExceptions: true });
135
137
  this._conf = conf;
136
- this._validator = new Validate();
138
+ this._validator = new Validate({ logExcludePaths });
137
139
  this._logger = logger;
138
140
  this._api = new InboundApi(
139
141
  conf,
@@ -353,13 +353,17 @@ const createLogger = (logger) => async (ctx, next) => {
353
353
  path: ctx.path,
354
354
  method: ctx.method
355
355
  }});
356
- ctx.state.logger.push({ body: ctx.request.body }).log('Request received');
356
+ if (!ctx.state.logExcludePaths.includes(ctx.path)) {
357
+ ctx.state.logger.push({body: ctx.request.body}).log('Request received');
358
+ }
357
359
  try {
358
360
  await next();
359
361
  } catch (err) {
360
362
  ctx.state.logger.push(err).log('Error');
361
363
  }
362
- await ctx.state.logger.log('Request processed');
364
+ if (!ctx.state.logExcludePaths.includes(ctx.path)) {
365
+ await ctx.state.logger.log('Request processed');
366
+ }
363
367
  };
364
368
 
365
369
 
@@ -369,10 +373,14 @@ const createLogger = (logger) => async (ctx, next) => {
369
373
  * @return {Function}
370
374
  */
371
375
  const createRequestValidator = (validator) => async (ctx, next) => {
372
- ctx.state.logger.log('Validating request');
376
+ if (!ctx.state.logExcludePaths.includes(ctx.path)) {
377
+ ctx.state.logger.log('Validating request');
378
+ }
373
379
  try {
374
380
  ctx.state.path = validator.validateRequest(ctx, ctx.state.logger);
375
- ctx.state.logger.log('Request passed validation');
381
+ if (!ctx.state.logExcludePaths.includes(ctx.path)) {
382
+ ctx.state.logger.log('Request passed validation');
383
+ }
376
384
  await next();
377
385
  } catch (err) {
378
386
  ctx.state.logger.push({ err }).log('Request failed validation.');
@@ -23,6 +23,7 @@ const handlers = require('./handlers');
23
23
  const middlewares = require('./middlewares');
24
24
 
25
25
  const endpointRegex = /\/.*/g;
26
+ const logExcludePaths = ['/'];
26
27
 
27
28
  class OutboundApi extends EventEmitter {
28
29
  constructor(conf, logger, cache, validator, metricsClient, wso2) {
@@ -36,7 +37,7 @@ class OutboundApi extends EventEmitter {
36
37
  this._api.use(middlewares.createErrorHandler(this._logger));
37
38
  this._api.use(middlewares.createRequestIdGenerator());
38
39
  this._api.use(koaBody()); // outbound always expects application/json
39
- this._api.use(middlewares.applyState({ cache, wso2, conf, metricsClient }));
40
+ this._api.use(middlewares.applyState({ cache, wso2, conf, metricsClient, logExcludePaths }));
40
41
  this._api.use(middlewares.createLogger(this._logger));
41
42
 
42
43
  //Note that we strip off any path on peerEndpoint config after the origin.
@@ -69,7 +70,7 @@ class OutboundApi extends EventEmitter {
69
70
  class OutboundServer extends EventEmitter {
70
71
  constructor(conf, logger, cache, metricsClient, wso2) {
71
72
  super({ captureExceptions: true });
72
- this._validator = new Validate();
73
+ this._validator = new Validate({ logExcludePaths });
73
74
  this._conf = conf;
74
75
  this._logger = logger;
75
76
  this._server = null;
@@ -20,10 +20,14 @@ const { applyState, createErrorHandler, createLogger, createRequestIdGenerator }
20
20
  * @return {Function}
21
21
  */
22
22
  const createRequestValidator = (validator) => async (ctx, next) => {
23
- ctx.state.logger.log('Validating request');
23
+ if (!ctx.state.logExcludePaths.includes(ctx.path)) {
24
+ ctx.state.logger.log('Validating request');
25
+ }
24
26
  try {
25
27
  ctx.state.path = validator.validateRequest(ctx, ctx.state.logger);
26
- ctx.state.logger.log('Request passed validation');
28
+ if (!ctx.state.logExcludePaths.includes(ctx.path)) {
29
+ ctx.state.logger.log('Request passed validation');
30
+ }
27
31
  await next();
28
32
  } catch (err) {
29
33
  ctx.state.logger.push({ err }).log('Request failed validation.');
@@ -21,6 +21,8 @@ const router = require('../lib/router');
21
21
  const handlers = require('./handlers');
22
22
  const middlewares = require('../InboundServer/middlewares');
23
23
 
24
+ const logExcludePaths = ['/'];
25
+
24
26
  const getWsIp = (req) => [
25
27
  req.socket.remoteAddress,
26
28
  ...(
@@ -36,7 +38,7 @@ class TestApi {
36
38
 
37
39
  this._api.use(middlewares.createErrorHandler(logger));
38
40
  this._api.use(middlewares.createRequestIdGenerator());
39
- this._api.use(middlewares.applyState({ cache }));
41
+ this._api.use(middlewares.applyState({ cache, logExcludePaths }));
40
42
  this._api.use(middlewares.createLogger(logger));
41
43
 
42
44
  this._api.use(middlewares.createRequestValidator(validator));
@@ -174,7 +176,7 @@ class TestServer {
174
176
  constructor({ port, logger, cache }) {
175
177
  this._port = port;
176
178
  this._logger = logger;
177
- this._validator = new Validate();
179
+ this._validator = new Validate({ logExcludePaths });
178
180
  this._api = new TestApi(this._logger.push({ component: 'api' }), this._validator, cache);
179
181
  this._server = http.createServer(this._api.callback());
180
182
  // TODO: why does this appear to need to be called after creating this._server (try reorder
package/src/index.js CHANGED
@@ -78,7 +78,6 @@ class Server extends EventEmitter {
78
78
  this.conf,
79
79
  this.logger.push(LOG_ID.INBOUND),
80
80
  this.cache,
81
- this.metricsClient,
82
81
  this.wso2,
83
82
  );
84
83
  this.inboundServer.on('error', (...args) => {
@@ -195,7 +194,6 @@ class Server extends EventEmitter {
195
194
  newConf,
196
195
  this.logger.push(LOG_ID.INBOUND),
197
196
  this.cache,
198
- this.metricsClient,
199
197
  this.wso2,
200
198
  );
201
199
  this.inboundServer.on('error', (...args) => {
@@ -131,8 +131,6 @@ class MetricsServer {
131
131
 
132
132
  result.use(koaBody());
133
133
  result.use(async ctx => {
134
- this._logger.log('Metrics request received');
135
-
136
134
  ctx.response.set('Content-Type', this._prometheusRegister.contentType);
137
135
  ctx.response.body = await this._prometheusRegister.metrics();
138
136
  });
@@ -16,10 +16,7 @@ const StateMachine = require('javascript-state-machine');
16
16
  const { MojaloopRequests, Errors } = require('@mojaloop/sdk-standard-components');
17
17
  const { BackendError } = require('./common');
18
18
 
19
- const stateEnum = {
20
- 'ERROR_OCCURRED': 'ERROR_OCCURRED',
21
- 'COMPLETED': 'COMPLETED',
22
- };
19
+ const { SDKStateEnum } = require('./common');
23
20
 
24
21
 
25
22
  /**
@@ -283,11 +280,11 @@ class AccountsModel {
283
280
 
284
281
  switch(this._data.currentState) {
285
282
  case 'succeeded':
286
- resp.currentState = stateEnum.COMPLETED;
283
+ resp.currentState = SDKStateEnum.COMPLETED;
287
284
  break;
288
285
 
289
286
  case 'errored':
290
- resp.currentState = stateEnum.ERROR_OCCURRED;
287
+ resp.currentState = SDKStateEnum.ERROR_OCCURRED;
291
288
  break;
292
289
 
293
290
  default:
@@ -295,7 +292,7 @@ class AccountsModel {
295
292
  `Account model response being returned from an unexpected state: ${this._data.currentState}. ` +
296
293
  'Returning ERROR_OCCURRED state'
297
294
  );
298
- resp.currentState = stateEnum.ERROR_OCCURRED;
295
+ resp.currentState = SDKStateEnum.ERROR_OCCURRED;
299
296
  break;
300
297
  }
301
298
  return resp;
@@ -12,6 +12,7 @@
12
12
  const util = require('util');
13
13
 
14
14
  const PSM = require('./common').PersistentStateMachine;
15
+ const { SDKStateEnum } = require('./common');
15
16
  const MojaloopRequests = require('@mojaloop/sdk-standard-components').MojaloopRequests;
16
17
  const deferredJob = require('./lib').deferredJob;
17
18
 
@@ -123,9 +124,9 @@ function generate({
123
124
  }
124
125
 
125
126
  const mapCurrentState = {
126
- start: 'WAITING_FOR_ACTION',
127
- succeeded: 'COMPLETED',
128
- errored: 'ERROR_OCCURRED'
127
+ start: SDKStateEnum.WAITING_FOR_ACTION,
128
+ succeeded: SDKStateEnum.COMPLETED,
129
+ errored: SDKStateEnum.ERROR_OCCURRED
129
130
  };
130
131
 
131
132
  /**