diff --git a/index.js b/index.js index d355186..322cb75 100644 --- a/index.js +++ b/index.js @@ -72,7 +72,12 @@ Pool.prototype._create = function (cb) { } else { this.log('client connected') this.emit('connect', client) - cb(null, client) + + if (this.options.connectionSetup !== undefined) { + this.options.connectionSetup(client, cb) + } else { + cb(null, client) + } } }.bind(this)) } diff --git a/test/index.js b/test/index.js index 5f6d0ad..76a16f6 100644 --- a/test/index.js +++ b/test/index.js @@ -32,6 +32,22 @@ describe('pool', function () { }) }) + it('calls the connectionSetup function when successfully connected', function (done) { + var called = false + var pool = new Pool({ + connectionSetup: function (client, cb) { + called = true + cb(null, client) + } + }) + pool.connect(function (err, client, release) { + if (err) return done(err) + expect(called).to.be(true) + release() + pool.end(done) + }) + }) + it('passes props to clients', function (done) { var pool = new Pool({ binary: true }) pool.connect(function (err, client, release) { @@ -73,6 +89,23 @@ describe('pool', function () { }) }) + it('does not call setupConnection when an error occurs', function (done) { + var called = false + var pool = new Pool({ + host: 'no-postgres-server-here.com', + connectionSetup: function () { + called = true + } + }) + pool.query('SELECT $1::text as name', ['brianc'], function (err, res) { + expect(err).to.be.an(Error) + expect(called).to.be(false) + pool.end(function (err) { + done(err) + }) + }) + }) + it('removes client if it errors in background', function (done) { var pool = new Pool() pool.connect(function (err, client, release) {