From 79f85a4a9e592a3d3a0af1535359faac683c0909 Mon Sep 17 00:00:00 2001 From: Bryan Burgers Date: Wed, 20 Feb 2013 18:17:18 -0600 Subject: [PATCH] Add ssl query string to the connection string parser --- lib/connection-parameters.js | 8 ++++++- .../environment-variable-tests.js | 22 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/lib/connection-parameters.js b/lib/connection-parameters.js index 98faa8268..67a7889c5 100644 --- a/lib/connection-parameters.js +++ b/lib/connection-parameters.js @@ -18,7 +18,7 @@ var parse = function(str) { } // url parse expects spaces encoded as %20 str = encodeURI(str); - var result = url.parse(str); + var result = url.parse(str, true); var config = {}; config.host = result.hostname; config.database = result.pathname ? result.pathname.slice(1) : null; @@ -26,6 +26,12 @@ var parse = function(str) { config.user = auth[0]; config.password = auth[1]; config.port = result.port; + + var ssl = result.query.ssl; + if (ssl === 'true' || ssl === '1') { + config.ssl = true; + } + return config; }; diff --git a/test/unit/connection-parameters/environment-variable-tests.js b/test/unit/connection-parameters/environment-variable-tests.js index 61a0095a2..a5fa5d689 100644 --- a/test/unit/connection-parameters/environment-variable-tests.js +++ b/test/unit/connection-parameters/environment-variable-tests.js @@ -54,6 +54,28 @@ test('connection string parsing', function(t) { assert.equal(subject.database, 'lala', 'string database'); }); +test('connection string parsing - ssl', function(t) { + var string = 'postgres://brian:pw@boom:381/lala?ssl=true'; + var subject = new ConnectionParameters(string); + assert.equal(subject.ssl, true, 'ssl'); + + string = 'postgres://brian:pw@boom:381/lala?ssl=1'; + subject = new ConnectionParameters(string); + assert.equal(subject.ssl, true, 'ssl'); + + string = 'postgres://brian:pw@boom:381/lala?other&ssl=true'; + subject = new ConnectionParameters(string); + assert.equal(subject.ssl, true, 'ssl'); + + string = 'postgres://brian:pw@boom:381/lala?ssl=0'; + subject = new ConnectionParameters(string); + assert.equal(!!subject.ssl, false, 'ssl'); + + string = 'postgres://brian:pw@boom:381/lala'; + subject = new ConnectionParameters(string); + assert.equal(!!subject.ssl, false, 'ssl'); +}); + //restore process.env for(var key in realEnv) { process.env[key] = realEnv[key];