From 65914fb2b26e219c26ee4ce459a108fa644cc474 Mon Sep 17 00:00:00 2001 From: Stefan Wojcik Date: Mon, 12 Dec 2016 23:24:19 -0500 Subject: [PATCH] fix the way MongoDB URI w/ ?replicaset is passed --- mongoengine/connection.py | 2 +- tests/test_connection.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/mongoengine/connection.py b/mongoengine/connection.py index a532c896..c7c16ca3 100644 --- a/mongoengine/connection.py +++ b/mongoengine/connection.py @@ -96,7 +96,7 @@ def register_connection(alias, name=None, host=None, port=None, uri_options = uri_dict['options'] if 'replicaset' in uri_options: - conn_settings['replicaSet'] = True + conn_settings['replicaSet'] = uri_options['replicaset'] if 'authsource' in uri_options: conn_settings['authentication_source'] = uri_options['authsource'] if 'authmechanism' in uri_options: diff --git a/tests/test_connection.py b/tests/test_connection.py index d8f1a79e..34168b85 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -200,6 +200,13 @@ class ConnectionTest(unittest.TestCase): self.assertTrue(isinstance(db, pymongo.database.Database)) self.assertEqual(db.name, 'test') + def test_connect_uri_with_replicaset(self): + """Ensure connect() works when specifying a replicaSet.""" + c = connect(host='mongodb://localhost/test?replicaSet=local-rs') + db = get_db() + self.assertTrue(isinstance(db, pymongo.database.Database)) + self.assertEqual(db.name, 'test') + def test_uri_without_credentials_doesnt_override_conn_settings(self): """Ensure connect() uses the username & password params if the URI doesn't explicitly specify them.