From 1e3107aa55426608193d61dda90ca87cc451346f Mon Sep 17 00:00:00 2001 From: bmc Date: Mon, 21 Jan 2013 16:14:19 -0600 Subject: [PATCH] use ConnectionParameters for js client properties --- lib/client.js | 18 ++++++++++-------- test/integration/client/configuration-tests.js | 12 ++++++++++++ test/unit/client/configuration-tests.js | 12 ++++++------ 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/lib/client.js b/lib/client.js index 43d20a92..4ec0b0e7 100644 --- a/lib/client.js +++ b/lib/client.js @@ -2,6 +2,7 @@ var crypto = require('crypto'); var EventEmitter = require('events').EventEmitter; var util = require('util'); +var ConnectionParameters = require(__dirname + '/connection-parameters'); var Query = require(__dirname + '/query'); var utils = require(__dirname + '/utils'); var defaults = require(__dirname + '/defaults'); @@ -10,20 +11,21 @@ var CopyFromStream = require(__dirname + '/copystream').CopyFromStream; var CopyToStream = require(__dirname + '/copystream').CopyToStream; var Client = function(config) { EventEmitter.call(this); - if(typeof config === 'string') { - config = utils.normalizeConnectionInfo(config) - } + + this.connectionParameters = new ConnectionParameters(config); + this.user = this.connectionParameters.user; + this.database = this.connectionParameters.database; + this.port = this.connectionParameters.port; + this.host = this.connectionParameters.host; + this.password = this.connectionParameters.password; + config = config || {}; - this.user = config.user || defaults.user; - this.database = config.database || defaults.database; - this.port = config.port || defaults.port; - this.host = config.host || defaults.host; + this.connection = config.connection || new Connection({ stream: config.stream, ssl: config.ssl }); this.queryQueue = []; - this.password = config.password || defaults.password; this.binary = config.binary || defaults.binary; this.encoding = 'utf8'; this.processID = null; diff --git a/test/integration/client/configuration-tests.js b/test/integration/client/configuration-tests.js index c641b300..e922a4e7 100644 --- a/test/integration/client/configuration-tests.js +++ b/test/integration/client/configuration-tests.js @@ -1,6 +1,13 @@ var helper = require(__dirname + '/test-helper'); var pg = helper.pg; +//clear process.env +var realEnv = {}; +for(var key in process.env) { + realEnv[key] = process.env[key]; + if(!key.indexOf('PG')) delete process.env[key]; +} + test('default values', function() { assert.same(pg.defaults,{ user: process.env.USER, @@ -44,3 +51,8 @@ if(!helper.args.native) { }) } + +//restore process.env +for(var key in realEnv) { + process.env[key] = realEnv[key]; +} diff --git a/test/unit/client/configuration-tests.js b/test/unit/client/configuration-tests.js index cb60119b..7d09fa1e 100644 --- a/test/unit/client/configuration-tests.js +++ b/test/unit/client/configuration-tests.js @@ -4,8 +4,8 @@ test('client settings', function() { test('defaults', function() { var client = new Client(); - assert.equal(client.user, process.env.USER); - assert.equal(client.database, process.env.USER); + assert.equal(client.user, process.env['PGUSER'] || process.env.USER); + assert.equal(client.database, process.env['PGDATABASE'] || process.env.USER); assert.equal(client.port, 5432); }); @@ -41,11 +41,11 @@ test('initializing from a config string', function() { test('when not including all values the defaults are used', function() { var client = new Client("pg://host1") - assert.equal(client.user, process.env.USER) - assert.equal(client.password, null) + assert.equal(client.user, process.env['PGUSER'] || process.env.USER) + assert.equal(client.password, process.env['PGPASSWORD'] || null) assert.equal(client.host, "host1") - assert.equal(client.port, 5432) - assert.equal(client.database, process.env.USER) + assert.equal(client.port, process.env['PGPORT'] || 5432) + assert.equal(client.database, process.env['PGDATABASE'] || process.env.USER) })