Skip to content

Commit 69b16bc

Browse files
authored
fix: fix mongo tls argument (#334)
1 parent 0509d31 commit 69b16bc

File tree

4 files changed

+10
-74
lines changed

4 files changed

+10
-74
lines changed

src/lib/config.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,14 +106,14 @@ const _getSecretsFromEnvironment = () => {
106106
process.env.REPORTING_DB_CONNECTION_STRING ||
107107
process.env.REPORTING_DB_SSL_ENABLED ||
108108
process.env.REPORTING_DB_SSL_VERIFY ||
109-
process.env.REPORTING_DB_SSL_CA
109+
process.env.REPORTING_DB_SSL_CA_FILE_PATH
110110
) {
111111
try {
112112
const reportingDbConnectionPassword = process.env.REPORTING_DB_CONNECTION_PASSWORD
113113
const reportingDbConnectionString = process.env.REPORTING_DB_CONNECTION_STRING
114114
const reportingDbSslEnabled = process.env.REPORTING_DB_SSL_ENABLED === 'true'
115115
const reportingDbSslVerify = process.env.REPORTING_DB_SSL_VERIFY !== 'false'
116-
const reportingDbSslCa = process.env.REPORTING_DB_SSL_CA
116+
const reportingDbSslCa = process.env.REPORTING_DB_SSL_CA_FILE_PATH
117117

118118
secretsFromEnvironment.DB = {
119119
PASSWORD: reportingDbConnectionPassword,
@@ -123,18 +123,18 @@ const _getSecretsFromEnvironment = () => {
123123
if (
124124
process.env.REPORTING_DB_SSL_ENABLED ||
125125
process.env.REPORTING_DB_SSL_VERIFY ||
126-
process.env.REPORTING_DB_SSL_CA
126+
process.env.REPORTING_DB_SSL_CA_FILE_PATH
127127
) {
128128
secretsFromEnvironment.DB.SSL_ENABLED = reportingDbSslEnabled
129129
secretsFromEnvironment.DB.SSL_VERIFY = reportingDbSslVerify
130130
if (reportingDbSslCa) {
131-
secretsFromEnvironment.DB.SSL_CA = reportingDbSslCa
131+
secretsFromEnvironment.DB.SSL_CA_FILE_PATH = reportingDbSslCa
132132
}
133133
}
134134

135135
// Hide CA from being logged
136136
const logSecrets = _.cloneDeep(secretsFromEnvironment)
137-
if (logSecrets.DB && logSecrets.DB.SSL_CA) logSecrets.DB.SSL_CA = mask(logSecrets.DB.SSL_CA)
137+
if (logSecrets.DB && logSecrets.DB.SSL_CA_FILE_PATH) logSecrets.DB.SSL_CA_FILE_PATH = mask(logSecrets.DB.SSL_CA_FILE_PATH)
138138
if (logSecrets.DB && logSecrets.DB.PASSWORD) logSecrets.DB.PASSWORD = mask(logSecrets.DB.PASSWORD)
139139
if (logSecrets.DB && logSecrets.DB.CONNECTION_STRING) logSecrets.DB.CONNECTION_STRING = mask(logSecrets.DB.CONNECTION_STRING)
140140
console.log('Secrets retrieved from environment to be merged into system config', logSecrets)

src/lib/db/adapters/dbAdapter.js

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -59,23 +59,8 @@ const getConnection = async () => {
5959
console.log(`SSL_VERIFY is set to ${systemConfig.DB.SSL_VERIFY} (type: ${typeof systemConfig.DB.SSL_VERIFY})`)
6060
mongoOptions.tlsAllowInvalidCertificates = !systemConfig.DB.SSL_VERIFY
6161
}
62-
if (systemConfig.DB.SSL_CA) {
63-
// SSL_CA is a string (from kube secret), may be PEM or comma-separated PEMs
64-
let ca = systemConfig.DB.SSL_CA
65-
if (typeof ca === 'string') {
66-
// If comma-separated, split into array
67-
if (ca.includes(',')) {
68-
ca = ca.split(',').map(s => s.trim())
69-
}
70-
}
71-
// Convert to Buffer(s) if needed
72-
if (Array.isArray(ca)) {
73-
ca = ca.map(item => Buffer.isBuffer(item) ? item : Buffer.from(item))
74-
} else if (!Buffer.isBuffer(ca)) {
75-
ca = Buffer.from(ca)
76-
}
77-
// Mongoose expects tlsCAFile as a Buffer or array of Buffers
78-
mongoOptions.tlsCAFile = ca
62+
if (systemConfig.DB.SSL_CA_FILE_PATH) {
63+
mongoOptions.tlsCAFile = systemConfig.DB.SSL_CA_FILE_PATH
7964
}
8065
}
8166

test/unit/lib/config.test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ describe('Config', () => {
179179
})
180180
process.env.REPORTING_DB_CONNECTION_PASSWORD = '123'
181181
process.env.REPORTING_DB_CONNECTION_STRING = 'connection_string'
182-
process.env.REPORTING_DB_SSL_CA = 'ssl_ca'
182+
process.env.REPORTING_DB_SSL_CA_FILE_PATH = 'ssl_ca'
183183
process.env.REPORTING_DB_SSL_ENABLED = 'true'
184184
process.env.REPORTING_DB_SSL_VERIFY = 'true'
185185

@@ -188,7 +188,7 @@ describe('Config', () => {
188188
DB: {
189189
PASSWORD: '123',
190190
CONNECTION_STRING: 'connection_string',
191-
SSL_CA: 'ssl_ca',
191+
SSL_CA_FILE_PATH: 'ssl_ca',
192192
SSL_ENABLED: true,
193193
SSL_VERIFY: true
194194
}
@@ -207,7 +207,7 @@ describe('Config', () => {
207207

208208
delete process.env.REPORTING_DB_CONNECTION_PASSWORD
209209
delete process.env.REPORTING_DB_CONNECTION_STRING
210-
delete process.env.REPORTING_DB_SSL_CA
210+
delete process.env.REPORTING_DB_SSL_CA_FILE_PATH
211211
delete process.env.REPORTING_DB_SSL_ENABLED
212212
process.env.REPORTING_DB_SSL_VERIFY = 'true'
213213
await Config.loadSystemConfig()

test/unit/lib/db/dbAdapter.test.js

Lines changed: 0 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -359,54 +359,5 @@ describe('dbAdapter', () => {
359359
)
360360
await dbAdapterModule._deleteConn()
361361
})
362-
363-
it('should set tlsCAFile as Buffer if SSL_CA is string', async () => {
364-
const pem = '-----BEGIN CERTIFICATE-----\nabc\n-----END CERTIFICATE-----'
365-
jest.doMock('../../../../src/lib/config', () => ({
366-
getSystemConfig: () => ({
367-
DB: {
368-
HOST: "localhost",
369-
PORT: 27017,
370-
USER: "ttk",
371-
PASSWORD: "ttk",
372-
DATABASE: "ttk",
373-
SSL_ENABLED: true,
374-
SSL_CA: pem
375-
}
376-
})
377-
}))
378-
dbAdapterModule = require('../../../../src/lib/db/adapters/dbAdapter')
379-
await dbAdapterModule.read('id1', { dfspId: 'test' })
380-
expect(mockConnect).toHaveBeenCalledWith(
381-
expect.any(String),
382-
expect.objectContaining({ tlsCAFile: expect.any(Buffer) })
383-
)
384-
await dbAdapterModule._deleteConn()
385-
})
386-
387-
it('should set tlsCAFile as array of Buffers if SSL_CA is comma-separated string', async () => {
388-
const pem1 = '-----BEGIN CERTIFICATE-----\nabc\n-----END CERTIFICATE-----'
389-
const pem2 = '-----BEGIN CERTIFICATE-----\ndef\n-----END CERTIFICATE-----'
390-
jest.doMock('../../../../src/lib/config', () => ({
391-
getSystemConfig: () => ({
392-
DB: {
393-
HOST: "localhost",
394-
PORT: 27017,
395-
USER: "ttk",
396-
PASSWORD: "ttk",
397-
DATABASE: "ttk",
398-
SSL_ENABLED: true,
399-
SSL_CA: `${pem1},${pem2}`
400-
}
401-
})
402-
}))
403-
dbAdapterModule = require('../../../../src/lib/db/adapters/dbAdapter')
404-
await dbAdapterModule.read('id1', { dfspId: 'test' })
405-
expect(mockConnect).toHaveBeenCalledWith(
406-
expect.any(String),
407-
expect.objectContaining({ tlsCAFile: expect.any(Array) })
408-
)
409-
await dbAdapterModule._deleteConn()
410-
})
411362
})
412363
})

0 commit comments

Comments
 (0)