feat: add connection parameter nativeConnectionString (#2941)

Co-authored-by: Evgeniy Novikov <e.p.novikov@tinkoff.ru>
This commit is contained in:
Novikov Evgeniy 2023-05-31 21:16:36 +05:00 committed by GitHub
parent c38ecf3405
commit dee3ae5cd6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 52 additions and 0 deletions

View File

@ -35,6 +35,7 @@ var Client = (module.exports = function (config) {
// keep these on the object for legacy reasons
// for the time being. TODO: deprecate all this jazz
var cp = (this.connectionParameters = new ConnectionParameters(config))
if (config.nativeConnectionString) cp.nativeConnectionString = config.nativeConnectionString
this.user = cp.user
// "hiding" the password so it doesn't show up in stack traces
@ -88,6 +89,7 @@ Client.prototype._connect = function (cb) {
this._connecting = true
this.connectionParameters.getLibpqConnectionString(function (err, conString) {
if (self.connectionParameters.nativeConnectionString) conString = self.connectionParameters.nativeConnectionString
if (err) return cb(err)
self.native.connect(conString, function (err) {
if (err) {

View File

@ -0,0 +1,50 @@
'use strict'
var helper = require('../test-helper')
var Client = require('../../lib/native')
const suite = new helper.Suite()
suite.test('respects nativeConnectionString in config', function (done) {
const realPort = helper.config.port
const nativeConnectionString = `host=${helper.config.host} port=${helper.config.port} dbname=${helper.config.database} user=${helper.config.user} password=${helper.config.password}`
// setting wrong port to make sure config is take from nativeConnectionString and not env
helper.config.port = '90929'
var client = new Client({
...helper.config,
nativeConnectionString,
})
client.connect(function (err) {
assert(!err)
client.query(
'SELECT 1 as num',
assert.calls(function (err, result) {
assert(!err)
assert.equal(result.rows[0].num, 1)
assert.strictEqual(result.rowCount, 1)
// restore post in case helper config will be reused
helper.config.port = realPort
client.end(done)
})
)
})
})
suite.test('respects nativeConnectionString in config even when it is corrupted', function (done) {
const nativeConnectionString = `foobar`
var client = new Client({
nativeConnectionString,
})
client.connect(function (err) {
assert(err)
assert.equal(
err.message,
'missing "=" after "foobar" in connection info string\n',
'Connection error should have been thrown'
)
client.end(done)
})
})