Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(infitx/iprod-93): used https.Agent for WSO2 requests in api-svc #457

Merged
merged 13 commits into from
Mar 19, 2024
Merged
Prev Previous commit
Next Next commit
feat(iprod-93): added OUT_USE_CERT_FILES_FOR_AUTH env var for OIDC en…
…dpoint
  • Loading branch information
geka-evk committed Oct 23, 2023
commit 8a019a1cf7ef428ab8b05a156cd7316e5f8617c0
2 changes: 1 addition & 1 deletion modules/api-svc/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@
"babel-jest": "^29.7.0",
"eslint": "^8.52.0",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-plugin-import": "^2.28.1",
"eslint-plugin-import": "^2.29.0",
"eslint-plugin-jest": "^27.4.3",
"jest": "^29.7.0",
"jest-junit": "^16.0.0",
Expand Down
7 changes: 3 additions & 4 deletions modules/api-svc/src/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,6 @@ const env = from(process.env, {
asResourceVersions: (resourceString) => parseResourceVersions(resourceString),
});

const OUTBOUND_MUTUAL_TLS_USE_FILES = env.get('OUTBOUND_MUTUAL_TLS_USE_FILES').default('false').asBool();

module.exports = {
__parseResourceVersion: parseResourceVersions,
control: {
Expand All @@ -84,11 +82,12 @@ module.exports = {
mutualTLS: {
enabled: env.get('OUTBOUND_MUTUAL_TLS_ENABLED').default('false').asBool(),
},
creds: OUTBOUND_MUTUAL_TLS_USE_FILES ? {
creds: {
ca: env.get('OUT_CA_CERT_PATH').asFileListContent(),
cert: env.get('OUT_CLIENT_CERT_PATH').asFileContent(),
key: env.get('OUT_CLIENT_KEY_PATH').asFileContent(),
} : {}, // will be populated from CONFIGURATION ws-message from pm-management-api
},
useCertFilesForAuth: env.get('OUT_USE_CERT_FILES_FOR_AUTH').default('false').asBool()
},
},
backendEventHandler: {
Expand Down
2 changes: 1 addition & 1 deletion modules/api-svc/src/lib/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ const createAuthClient = (conf, logger) => {
const auth = new WSO2Auth({
...wso2.auth,
logger,
tlsCreds: outbound.tls.mutualTLS.enabled && outbound.tls.creds,
tlsCreds: outbound.tls.useCertFilesForAuth && outbound.tls.creds,
});

return Object.freeze({
Expand Down
14 changes: 11 additions & 3 deletions modules/api-svc/test/unit/config.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,19 @@
const fs = require('fs');
const path = require('path');
const os = require('os');
const sdkSC = require('@mojaloop/sdk-standard-components');
const { createAuthClient } = require('../../src/lib/utils');

const outErrorStatusKey = 'outErrorStatusKey';

jest.mock('dotenv', () => ({
config: jest.fn(),
}));

jest.mock('@mojaloop/sdk-standard-components', () => ({
WSO2Auth: jest.fn(),
}));

describe('config', () => {
let certDir;
let env;
Expand Down Expand Up @@ -125,9 +131,11 @@ describe('config', () => {
});
});

it('should return outbound.tls.creds as empty object if OUTBOUND_MUTUAL_TLS_USE_FILES is false', () => {
process.env.OUTBOUND_MUTUAL_TLS_USE_FILES = 'false';
it('should pass outbound tlsCreds as false to WSO2Auth ctor, if OUT_USE_CERT_FILES_FOR_AUTH is false', () => {
process.env.OUT_USE_CERT_FILES_FOR_AUTH = 'false';
const config = require('~/config');
expect(config.outbound.tls.creds).toStrictEqual({});
createAuthClient(config, {});
const { tlsCreds } = sdkSC.WSO2Auth.mock.calls[0][0];
expect(tlsCreds).toBe(false);
});
});
171 changes: 117 additions & 54 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2835,7 +2835,7 @@ __metadata:
env-var: ^7.4.1
eslint: ^8.52.0
eslint-config-airbnb-base: ^15.0.0
eslint-plugin-import: ^2.28.1
eslint-plugin-import: ^2.29.0
eslint-plugin-jest: ^27.4.3
express: ^4.18.2
fast-json-patch: ^3.1.1
Expand Down Expand Up @@ -4622,16 +4622,16 @@ __metadata:
languageName: node
linkType: hard

"array-includes@npm:^3.1.6":
version: 3.1.6
resolution: "array-includes@npm:3.1.6"
"array-includes@npm:^3.1.7":
version: 3.1.7
resolution: "array-includes@npm:3.1.7"
dependencies:
call-bind: ^1.0.2
define-properties: ^1.1.4
es-abstract: ^1.20.4
get-intrinsic: ^1.1.3
define-properties: ^1.2.0
es-abstract: ^1.22.1
get-intrinsic: ^1.2.1
is-string: ^1.0.7
checksum: f22f8cd8ba8a6448d91eebdc69f04e4e55085d09232b5216ee2d476dab3ef59984e8d1889e662c6a0ed939dcb1b57fd05b2c0209c3370942fc41b752c82a2ca5
checksum: 06f9e4598fac12a919f7c59a3f04f010ea07f0b7f0585465ed12ef528a60e45f374e79d1bddbb34cdd4338357d00023ddbd0ac18b0be36964f5e726e8965d7fc
languageName: node
linkType: hard

Expand All @@ -4642,7 +4642,7 @@ __metadata:
languageName: node
linkType: hard

"array.prototype.findlastindex@npm:^1.2.2":
"array.prototype.findlastindex@npm:^1.2.3":
version: 1.2.3
resolution: "array.prototype.findlastindex@npm:1.2.3"
dependencies:
Expand All @@ -4655,7 +4655,7 @@ __metadata:
languageName: node
linkType: hard

"array.prototype.flat@npm:^1.2.5, array.prototype.flat@npm:^1.3.1":
"array.prototype.flat@npm:^1.2.5":
version: 1.3.1
resolution: "array.prototype.flat@npm:1.3.1"
dependencies:
Expand All @@ -4667,15 +4667,27 @@ __metadata:
languageName: node
linkType: hard

"array.prototype.flatmap@npm:^1.3.1":
version: 1.3.1
resolution: "array.prototype.flatmap@npm:1.3.1"
"array.prototype.flat@npm:^1.3.2":
version: 1.3.2
resolution: "array.prototype.flat@npm:1.3.2"
dependencies:
call-bind: ^1.0.2
define-properties: ^1.1.4
es-abstract: ^1.20.4
define-properties: ^1.2.0
es-abstract: ^1.22.1
es-shim-unscopables: ^1.0.0
checksum: 5d6b4bf102065fb3f43764bfff6feb3295d372ce89591e6005df3d0ce388527a9f03c909af6f2a973969a4d178ab232ffc9236654149173e0e187ec3a1a6b87b
languageName: node
linkType: hard

"array.prototype.flatmap@npm:^1.3.2":
version: 1.3.2
resolution: "array.prototype.flatmap@npm:1.3.2"
dependencies:
call-bind: ^1.0.2
define-properties: ^1.2.0
es-abstract: ^1.22.1
es-shim-unscopables: ^1.0.0
checksum: 8c1c43a4995f12cf12523436da28515184c753807b3f0bc2ca6c075f71c470b099e2090cc67dba8e5280958fea401c1d0c59e1db0143272aef6cd1103921a987
checksum: ce09fe21dc0bcd4f30271f8144083aa8c13d4639074d6c8dc82054b847c7fc9a0c97f857491f4da19d4003e507172a78f4bcd12903098adac8b9cd374f734be3
languageName: node
linkType: hard

Expand Down Expand Up @@ -7146,14 +7158,14 @@ __metadata:
languageName: node
linkType: hard

"eslint-import-resolver-node@npm:^0.3.7":
version: 0.3.7
resolution: "eslint-import-resolver-node@npm:0.3.7"
"eslint-import-resolver-node@npm:^0.3.9":
version: 0.3.9
resolution: "eslint-import-resolver-node@npm:0.3.9"
dependencies:
debug: ^3.2.7
is-core-module: ^2.11.0
resolve: ^1.22.1
checksum: 3379aacf1d2c6952c1b9666c6fa5982c3023df695430b0d391c0029f6403a7775414873d90f397e98ba6245372b6c8960e16e74d9e4a3b0c0a4582f3bdbe3d6e
is-core-module: ^2.13.0
resolve: ^1.22.4
checksum: 439b91271236b452d478d0522a44482e8c8540bf9df9bd744062ebb89ab45727a3acd03366a6ba2bdbcde8f9f718bab7fe8db64688aca75acf37e04eafd25e22
languageName: node
linkType: hard

Expand Down Expand Up @@ -7181,30 +7193,30 @@ __metadata:
languageName: node
linkType: hard

"eslint-plugin-import@npm:^2.28.1":
version: 2.28.1
resolution: "eslint-plugin-import@npm:2.28.1"
"eslint-plugin-import@npm:^2.29.0":
version: 2.29.0
resolution: "eslint-plugin-import@npm:2.29.0"
dependencies:
array-includes: ^3.1.6
array.prototype.findlastindex: ^1.2.2
array.prototype.flat: ^1.3.1
array.prototype.flatmap: ^1.3.1
array-includes: ^3.1.7
array.prototype.findlastindex: ^1.2.3
array.prototype.flat: ^1.3.2
array.prototype.flatmap: ^1.3.2
debug: ^3.2.7
doctrine: ^2.1.0
eslint-import-resolver-node: ^0.3.7
eslint-import-resolver-node: ^0.3.9
eslint-module-utils: ^2.8.0
has: ^1.0.3
is-core-module: ^2.13.0
hasown: ^2.0.0
is-core-module: ^2.13.1
is-glob: ^4.0.3
minimatch: ^3.1.2
object.fromentries: ^2.0.6
object.groupby: ^1.0.0
object.values: ^1.1.6
object.fromentries: ^2.0.7
object.groupby: ^1.0.1
object.values: ^1.1.7
semver: ^6.3.1
tsconfig-paths: ^3.14.2
peerDependencies:
eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
checksum: e8ae6dd8f06d8adf685f9c1cfd46ac9e053e344a05c4090767e83b63a85c8421ada389807a39e73c643b9bff156715c122e89778169110ed68d6428e12607edf
checksum: 19ee541fb95eb7a796f3daebe42387b8d8262bbbcc4fd8a6e92f63a12035f3d2c6cb8bc0b6a70864fa14b1b50ed6b8e6eed5833e625e16cb6bb98b665beff269
languageName: node
linkType: hard

Expand Down Expand Up @@ -8039,6 +8051,13 @@ __metadata:
languageName: node
linkType: hard

"function-bind@npm:^1.1.2":
version: 1.1.2
resolution: "function-bind@npm:1.1.2"
checksum: 2b0ff4ce708d99715ad14a6d1f894e2a83242e4a52ccfcefaee5e40050562e5f6dafc1adbb4ce2d4ab47279a45dc736ab91ea5042d843c3c092820dfe032efb1
languageName: node
linkType: hard

"function.prototype.name@npm:^1.1.5":
version: 1.1.5
resolution: "function.prototype.name@npm:1.1.5"
Expand Down Expand Up @@ -8547,6 +8566,15 @@ __metadata:
languageName: node
linkType: hard

"hasown@npm:^2.0.0":
version: 2.0.0
resolution: "hasown@npm:2.0.0"
dependencies:
function-bind: ^1.1.2
checksum: 6151c75ca12554565098641c98a40f4cc86b85b0fd5b6fe92360967e4605a4f9610f7757260b4e8098dd1c2ce7f4b095f2006fe72a570e3b6d2d28de0298c176
languageName: node
linkType: hard

"hexoid@npm:1.0.0, hexoid@npm:^1.0.0":
version: 1.0.0
resolution: "hexoid@npm:1.0.0"
Expand Down Expand Up @@ -9056,21 +9084,30 @@ __metadata:
languageName: node
linkType: hard

"is-core-module@npm:^2.11.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0":
version: 2.11.0
resolution: "is-core-module@npm:2.11.0"
"is-core-module@npm:^2.13.0":
version: 2.13.0
resolution: "is-core-module@npm:2.13.0"
dependencies:
has: ^1.0.3
checksum: f96fd490c6b48eb4f6d10ba815c6ef13f410b0ba6f7eb8577af51697de523e5f2cd9de1c441b51d27251bf0e4aebc936545e33a5d26d5d51f28d25698d4a8bab
checksum: 053ab101fb390bfeb2333360fd131387bed54e476b26860dc7f5a700bbf34a0ec4454f7c8c4d43e8a0030957e4b3db6e16d35e1890ea6fb654c833095e040355
languageName: node
linkType: hard

"is-core-module@npm:^2.13.0":
version: 2.13.0
resolution: "is-core-module@npm:2.13.0"
"is-core-module@npm:^2.13.1":
version: 2.13.1
resolution: "is-core-module@npm:2.13.1"
dependencies:
hasown: ^2.0.0
checksum: 256559ee8a9488af90e4bad16f5583c6d59e92f0742e9e8bb4331e758521ee86b810b93bae44f390766ffbc518a0488b18d9dab7da9a5ff997d499efc9403f7c
languageName: node
linkType: hard

"is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0":
version: 2.11.0
resolution: "is-core-module@npm:2.11.0"
dependencies:
has: ^1.0.3
checksum: 053ab101fb390bfeb2333360fd131387bed54e476b26860dc7f5a700bbf34a0ec4454f7c8c4d43e8a0030957e4b3db6e16d35e1890ea6fb654c833095e040355
checksum: f96fd490c6b48eb4f6d10ba815c6ef13f410b0ba6f7eb8577af51697de523e5f2cd9de1c441b51d27251bf0e4aebc936545e33a5d26d5d51f28d25698d4a8bab
languageName: node
linkType: hard

Expand Down Expand Up @@ -11961,7 +11998,7 @@ __metadata:
languageName: node
linkType: hard

"object.fromentries@npm:^2.0.6":
"object.fromentries@npm:^2.0.7":
version: 2.0.7
resolution: "object.fromentries@npm:2.0.7"
dependencies:
Expand All @@ -11972,7 +12009,7 @@ __metadata:
languageName: node
linkType: hard

"object.groupby@npm:^1.0.0":
"object.groupby@npm:^1.0.1":
version: 1.0.1
resolution: "object.groupby@npm:1.0.1"
dependencies:
Expand All @@ -11995,14 +12032,14 @@ __metadata:
languageName: node
linkType: hard

"object.values@npm:^1.1.6":
version: 1.1.6
resolution: "object.values@npm:1.1.6"
"object.values@npm:^1.1.7":
version: 1.1.7
resolution: "object.values@npm:1.1.7"
dependencies:
call-bind: ^1.0.2
define-properties: ^1.1.4
es-abstract: ^1.20.4
checksum: f6fff9fd817c24cfd8107f50fb33061d81cd11bacc4e3dbb3852e9ff7692fde4dbce823d4333ea27cd9637ef1b6690df5fbb61f1ed314fa2959598dc3ae23d8e
define-properties: ^1.2.0
es-abstract: ^1.22.1
checksum: f3e4ae4f21eb1cc7cebb6ce036d4c67b36e1c750428d7b7623c56a0db90edced63d08af8a316d81dfb7c41a3a5fa81b05b7cc9426e98d7da986b1682460f0777
languageName: node
linkType: hard

Expand Down Expand Up @@ -13411,7 +13448,7 @@ __metadata:
languageName: node
linkType: hard

"resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.0, resolve@npm:^1.22.1":
"resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.0":
version: 1.22.1
resolution: "resolve@npm:1.22.1"
dependencies:
Expand All @@ -13424,7 +13461,20 @@ __metadata:
languageName: node
linkType: hard

"resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.14.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.1#~builtin<compat/resolve>":
"resolve@npm:^1.22.4":
version: 1.22.8
resolution: "resolve@npm:1.22.8"
dependencies:
is-core-module: ^2.13.0
path-parse: ^1.0.7
supports-preserve-symlinks-flag: ^1.0.0
bin:
resolve: bin/resolve
checksum: f8a26958aa572c9b064562750b52131a37c29d072478ea32e129063e2da7f83e31f7f11e7087a18225a8561cfe8d2f0df9dbea7c9d331a897571c0a2527dbb4c
languageName: node
linkType: hard

"resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.14.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.0#~builtin<compat/resolve>":
version: 1.22.1
resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin<compat/resolve>::version=1.22.1&hash=c3c19d"
dependencies:
Expand All @@ -13437,6 +13487,19 @@ __metadata:
languageName: node
linkType: hard

"resolve@patch:resolve@^1.22.4#~builtin<compat/resolve>":
version: 1.22.8
resolution: "resolve@patch:resolve@npm%3A1.22.8#~builtin<compat/resolve>::version=1.22.8&hash=c3c19d"
dependencies:
is-core-module: ^2.13.0
path-parse: ^1.0.7
supports-preserve-symlinks-flag: ^1.0.0
bin:
resolve: bin/resolve
checksum: 5479b7d431cacd5185f8db64bfcb7286ae5e31eb299f4c4f404ad8aa6098b77599563ac4257cb2c37a42f59dfc06a1bec2bcf283bb448f319e37f0feb9a09847
languageName: node
linkType: hard

"responselike@npm:^3.0.0":
version: 3.0.0
resolution: "responselike@npm:3.0.0"
Expand Down