diff --git a/pymongo/database.py b/pymongo/database.py index 96593cd43..7a4e06380 100644 --- a/pymongo/database.py +++ b/pymongo/database.py @@ -363,7 +363,7 @@ class Database(object): raise TypeError("username must be an instance of (str, unicode)") md5hash = _md5func() - md5hash.update(username + ":mongo:" + password) + md5hash.update(username.encode('utf-8') + ":mongo:" + password.encode('utf-8')) return unicode(md5hash.hexdigest()) def authenticate(self, name, password): diff --git a/test/test_database.py b/test/test_database.py index 0cf91fe61..4a9d80c1c 100644 --- a/test/test_database.py +++ b/test/test_database.py @@ -227,6 +227,8 @@ class TestDatabase(unittest.TestCase): u"cd7e45b3b2767dc2fa9b6b548457ed00") self.assertEqual(db._password_digest("mike", "password"), db._password_digest(u"mike", u"password")) + self.assertEqual(db._password_digest("Gustave", u"Dor\xe9"), + u"81e0e2364499209f466e75926a162d73") def test_authenticate(self): db = self.connection.pymongo_test