Skip to content

Commit

Permalink
feat: add connection parameter nativeConnectionString (#2941)
Browse files Browse the repository at this point in the history
Co-authored-by: Evgeniy Novikov <e.p.novikov@tinkoff.ru>
  • Loading branch information
NovikovEvgeny and Evgeniy Novikov committed May 31, 2023
1 parent c38ecf3 commit dee3ae5
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
2 changes: 2 additions & 0 deletions packages/pg/lib/native/client.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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) {
Expand Down
50 changes: 50 additions & 0 deletions packages/pg/test/native/native-connection-string-tests.js
Original file line number Diff line number Diff line change
@@ -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)
})
})

0 comments on commit dee3ae5

Please sign in to comment.