From 6eb0bc50e237fb47e0ffa97b9d79c1cccd3bc61a Mon Sep 17 00:00:00 2001 From: RussellLuo Date: Sat, 25 Apr 2015 08:01:24 +0800 Subject: [PATCH] Add a test for "authSource" feature --- tests/test_connection.py | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/tests/test_connection.py b/tests/test_connection.py index 2b325843..aa7d5960 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -11,7 +11,10 @@ import datetime import pymongo from bson.tz_util import utc -from mongoengine import * +from mongoengine import ( + connect, register_connection, + Document, DateTimeField +) import mongoengine.connection from mongoengine.connection import get_db, get_connection, ConnectionError @@ -101,6 +104,38 @@ class ConnectionTest(unittest.TestCase): c.admin.system.users.remove({}) c.mongoenginetest.system.users.remove({}) + def test_connect_uri_with_authsource(self): + """Ensure that the connect() method works well with + the option `authSource` in URI. + """ + # Create users + c = connect(db='mongoenginetest', alias='test') + c.admin.system.users.remove({}) + c.admin.add_user('username', 'password') + + # Authentication fails without "authSource" + self.assertRaises( + ConnectionError, connect, 'mongoenginetest', + host='mongodb://username:password@localhost/mongoenginetest' + ) + + # Authentication succeeds with "authSource" + connect( + 'mongoenginetest', + host=('mongodb://username:password@localhost/' + 'mongoenginetest?authSource=admin') + ) + + conn = get_connection('test') + self.assertTrue(isinstance(conn, pymongo.mongo_client.MongoClient)) + + db = get_db('test') + self.assertTrue(isinstance(db, pymongo.database.Database)) + self.assertEqual(db.name, 'mongoenginetest') + + # Clear all users + c.admin.system.users.remove({}) + def test_register_connection(self): """Ensure that connections with different aliases may be registered. """