From be01ffe92dfabf1b44553bff4b604c3f95754d7c Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Mon, 12 Mar 2018 09:25:35 -0400 Subject: [PATCH] fix(uri_parser): support a default database on mongodb+srv uris NODE-1321 --- lib/uri_parser.js | 12 +++++++++++- test/tests/unit/mongodb_srv_spec_tests.js | 7 +++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/uri_parser.js b/lib/uri_parser.js index ba8201f66..a4d3f75e2 100644 --- a/lib/uri_parser.js +++ b/lib/uri_parser.js @@ -71,9 +71,19 @@ function parseSrvConnectionString(uri, options, callback) { i === 0 ? `${base}${address.name}:${address.port}` : `${address.name}:${address.port}` ); - let connectionString = connectionStrings.join(',') + '/'; + let connectionString = `${connectionStrings.join(',')}/`; let connectionStringOptions = []; + // Add the default database if needed + if (result.path) { + let defaultDb = result.path.slice(1); + if (defaultDb.indexOf('?') !== -1) { + defaultDb = defaultDb.slice(0, defaultDb.indexOf('?')); + } + + connectionString += defaultDb; + } + // Default to SSL true if (!options.ssl && (!result.search || result.query['ssl'] == null)) { connectionStringOptions.push('ssl=true'); diff --git a/test/tests/unit/mongodb_srv_spec_tests.js b/test/tests/unit/mongodb_srv_spec_tests.js index a6298fd68..fb996ae5a 100644 --- a/test/tests/unit/mongodb_srv_spec_tests.js +++ b/test/tests/unit/mongodb_srv_spec_tests.js @@ -5,6 +5,13 @@ const parseConnectionString = require('../../../lib/uri_parser'); const expect = require('chai').expect; describe('mongodb+srv (spec)', function() { + it('should parse a default database', function(done) { + parseConnectionString('mongodb+srv://test5.test.build.10gen.cc/somedb', (err, result) => { + expect(result.auth.db).to.eql('somedb'); + done(); + }); + }); + const specPath = path.join(__dirname, '../spec', 'initial-dns-seedlist-discovery'); const testFiles = fs .readdirSync(specPath)