ml-testing-toolkit 18.14.4 → 18.15.1-url-handling.0
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/CHANGELOG.md +12 -0
- package/package.json +7 -7
- package/{sbom-v18.14.2.csv → sbom-v18.15.0.csv} +119 -113
- package/src/lib/api-management.js +1 -17
- package/src/lib/config.js +8 -1
- package/src/lib/db/adapters/dbAdapter.js +3 -0
- package/src/lib/mocking/openApiMockHandler.js +3 -3
- package/src/lib/utils.js +16 -0
|
@@ -29,7 +29,6 @@
|
|
|
29
29
|
|
|
30
30
|
const addFormats = require('ajv-formats')
|
|
31
31
|
const OpenApiBackend = require('openapi-backend').default
|
|
32
|
-
const fs = require('node:fs')
|
|
33
32
|
const Utils = require('./utils')
|
|
34
33
|
const path = require('path')
|
|
35
34
|
const Config = require('./config')
|
|
@@ -38,24 +37,9 @@ const OpenApiMockHandler = require('./mocking/openApiMockHandler')
|
|
|
38
37
|
|
|
39
38
|
const apiDefinitionsPath = 'spec_files/api_definitions/'
|
|
40
39
|
|
|
41
|
-
// check if the file contains URL and return it instead of the file name
|
|
42
|
-
const checkUrl = async fileName => {
|
|
43
|
-
const buffer = Buffer.alloc(10)
|
|
44
|
-
const fileHandle = await fs.promises.open(fileName, 'r')
|
|
45
|
-
try {
|
|
46
|
-
await fileHandle.read(buffer, 0, 10, 0)
|
|
47
|
-
} finally {
|
|
48
|
-
await fileHandle.close()
|
|
49
|
-
}
|
|
50
|
-
const prefix = buffer.toString('utf8').replace('\uFEFF', '') // Remove BOM
|
|
51
|
-
return (prefix.startsWith('"http'))
|
|
52
|
-
? JSON.parse(fs.readFileSync(fileName).toString('utf8'))
|
|
53
|
-
: fileName
|
|
54
|
-
}
|
|
55
|
-
|
|
56
40
|
const validateDefinition = async (apiFilePath) => {
|
|
57
41
|
const newApi = new OpenApiBackend({
|
|
58
|
-
definition: await checkUrl(path.join(apiFilePath)),
|
|
42
|
+
definition: await Utils.checkUrl(path.join(apiFilePath)),
|
|
59
43
|
customizeAjv: ajv => addFormats(ajv),
|
|
60
44
|
strict: true,
|
|
61
45
|
quick: true
|
package/src/lib/config.js
CHANGED
|
@@ -107,6 +107,7 @@ const _getSecretsFromEnvironment = () => {
|
|
|
107
107
|
process.env.REPORTING_DB_SSL_ENABLED ||
|
|
108
108
|
process.env.REPORTING_DB_SSL_VERIFY ||
|
|
109
109
|
process.env.REPORTING_DB_SSL_CA_FILE_PATH ||
|
|
110
|
+
process.env.REPORTING_DB_SSL_CLIENT_CERT_FILE_PATH ||
|
|
110
111
|
process.env.REPORTING_DB_PARAMS
|
|
111
112
|
) {
|
|
112
113
|
try {
|
|
@@ -115,6 +116,7 @@ const _getSecretsFromEnvironment = () => {
|
|
|
115
116
|
const reportingDbSslEnabled = process.env.REPORTING_DB_SSL_ENABLED === 'true'
|
|
116
117
|
const reportingDbSslVerify = process.env.REPORTING_DB_SSL_VERIFY !== 'false'
|
|
117
118
|
const reportingDbSslCa = process.env.REPORTING_DB_SSL_CA_FILE_PATH
|
|
119
|
+
const reportingDbClientCert = process.env.REPORTING_DB_SSL_CLIENT_CERT_FILE_PATH
|
|
118
120
|
const reportingDbConnectionParams = process.env.REPORTING_DB_PARAMS
|
|
119
121
|
? JSON.parse(process.env.REPORTING_DB_PARAMS)
|
|
120
122
|
: undefined
|
|
@@ -131,13 +133,17 @@ const _getSecretsFromEnvironment = () => {
|
|
|
131
133
|
if (
|
|
132
134
|
process.env.REPORTING_DB_SSL_ENABLED ||
|
|
133
135
|
process.env.REPORTING_DB_SSL_VERIFY ||
|
|
134
|
-
process.env.REPORTING_DB_SSL_CA_FILE_PATH
|
|
136
|
+
process.env.REPORTING_DB_SSL_CA_FILE_PATH ||
|
|
137
|
+
process.env.REPORTING_DB_SSL_CLIENT_CERT_FILE_PATH
|
|
135
138
|
) {
|
|
136
139
|
secretsFromEnvironment.DB.SSL_ENABLED = reportingDbSslEnabled
|
|
137
140
|
secretsFromEnvironment.DB.SSL_VERIFY = reportingDbSslVerify
|
|
138
141
|
if (reportingDbSslCa) {
|
|
139
142
|
secretsFromEnvironment.DB.SSL_CA_FILE_PATH = reportingDbSslCa
|
|
140
143
|
}
|
|
144
|
+
if (reportingDbClientCert) {
|
|
145
|
+
secretsFromEnvironment.DB.SSL_CLIENT_CERT_FILE_PATH = reportingDbClientCert
|
|
146
|
+
}
|
|
141
147
|
}
|
|
142
148
|
|
|
143
149
|
// Hide CA from being logged
|
|
@@ -145,6 +151,7 @@ const _getSecretsFromEnvironment = () => {
|
|
|
145
151
|
if (logSecrets.DB && logSecrets.DB.SSL_CA_FILE_PATH) logSecrets.DB.SSL_CA_FILE_PATH = mask(logSecrets.DB.SSL_CA_FILE_PATH)
|
|
146
152
|
if (logSecrets.DB && logSecrets.DB.PASSWORD) logSecrets.DB.PASSWORD = mask(logSecrets.DB.PASSWORD)
|
|
147
153
|
if (logSecrets.DB && logSecrets.DB.CONNECTION_STRING) logSecrets.DB.CONNECTION_STRING = mask(logSecrets.DB.CONNECTION_STRING)
|
|
154
|
+
if (logSecrets.DB && logSecrets.DB.SSL_CLIENT_CERT_FILE_PATH) logSecrets.DB.SSL_CLIENT_CERT_FILE_PATH = mask(logSecrets.DB.SSL_CLIENT_CERT_FILE_PATH)
|
|
148
155
|
console.log('Secrets retrieved from environment to be merged into system config', logSecrets)
|
|
149
156
|
if (logSecrets.DB && logSecrets.DB.PARAMS) logSecrets.DB.PARAMS = JSON.stringify(logSecrets.DB.PARAMS)
|
|
150
157
|
} catch (err) {
|
|
@@ -62,6 +62,9 @@ const getConnection = async () => {
|
|
|
62
62
|
if (systemConfig.DB.SSL_CA_FILE_PATH) {
|
|
63
63
|
mongoOptions.tlsCAFile = systemConfig.DB.SSL_CA_FILE_PATH
|
|
64
64
|
}
|
|
65
|
+
if (systemConfig.DB.SSL_CLIENT_CERT_FILE_PATH) {
|
|
66
|
+
mongoOptions.tlsCertificateKeyFile = systemConfig.DB.SSL_CLIENT_CERT_FILE_PATH
|
|
67
|
+
}
|
|
65
68
|
}
|
|
66
69
|
|
|
67
70
|
const csMongoDBObj = new ConnectionString()
|
|
@@ -64,9 +64,9 @@ module.exports.initilizeMockHandler = async () => {
|
|
|
64
64
|
// Get API Definitions from configuration
|
|
65
65
|
const apiDefinitions = await OpenApiDefinitionsModel.getApiDefinitions()
|
|
66
66
|
// Create create openApiBackend objects for all the api definitions
|
|
67
|
-
apis = apiDefinitions.map(item => {
|
|
67
|
+
apis = await Promise.all(apiDefinitions.map(async item => {
|
|
68
68
|
const tempObj = new OpenApiBackend({
|
|
69
|
-
definition: path.join(item.specFile),
|
|
69
|
+
definition: await utils.checkUrl(path.join(item.specFile)),
|
|
70
70
|
customizeAjv: ajv => addFormats(ajv),
|
|
71
71
|
strict: true,
|
|
72
72
|
quick: true,
|
|
@@ -100,7 +100,7 @@ module.exports.initilizeMockHandler = async () => {
|
|
|
100
100
|
...item,
|
|
101
101
|
openApiBackendObject: tempObj
|
|
102
102
|
}
|
|
103
|
-
})
|
|
103
|
+
}))
|
|
104
104
|
|
|
105
105
|
for (const api of apis) {
|
|
106
106
|
customLogger.logMessage('info', 'Initializing the api spec file: ' + api.specFile, { notification: false })
|
package/src/lib/utils.js
CHANGED
|
@@ -70,6 +70,21 @@ const resolveRoot = path => resolve(process.env.TTK_ROOT || '.', path)
|
|
|
70
70
|
const resolve1 = fn => (arg1, ...rest) => fn(resolveRoot(arg1), ...rest)
|
|
71
71
|
const resolve2 = fn => (arg1, arg2, ...rest) => fn(resolveRoot(arg1), resolveRoot(arg2), ...rest)
|
|
72
72
|
|
|
73
|
+
// check if the file contains URL and return it instead of the file name
|
|
74
|
+
const checkUrl = async fileName => {
|
|
75
|
+
const buffer = Buffer.alloc(10)
|
|
76
|
+
const fileHandle = await fs.promises.open(fileName, 'r')
|
|
77
|
+
try {
|
|
78
|
+
await fileHandle.read(buffer, 0, 10, 0)
|
|
79
|
+
} finally {
|
|
80
|
+
await fileHandle.close()
|
|
81
|
+
}
|
|
82
|
+
const prefix = buffer.toString('utf8').replace('\uFEFF', '') // Remove BOM
|
|
83
|
+
return (prefix.startsWith('"http'))
|
|
84
|
+
? JSON.parse(fs.readFileSync(fileName).toString('utf8'))
|
|
85
|
+
: fileName
|
|
86
|
+
}
|
|
87
|
+
|
|
73
88
|
module.exports = {
|
|
74
89
|
readFileAsync: resolve1(readFileAsync),
|
|
75
90
|
writeFileAsync: resolve1(writeFileAsync),
|
|
@@ -85,5 +100,6 @@ module.exports = {
|
|
|
85
100
|
getHeader,
|
|
86
101
|
headersToLowerCase,
|
|
87
102
|
urlToPath,
|
|
103
|
+
checkUrl,
|
|
88
104
|
resolve: resolveRoot
|
|
89
105
|
}
|