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.
@@ -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
  }