33import pymongo
44from django .test import SimpleTestCase
55
6- import django_mongodb
6+ from django_mongodb import parse_uri
77
88URI = "mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/myDatabase?retryWrites=true&w=majority&tls=false"
99
1010
11- class MongoParseURITests (SimpleTestCase ):
12- """
13- Test django_mongodb.parse_uri(uri) function
14- """
15-
11+ class ParseURITests (SimpleTestCase ):
1612 def setUp (self ):
1713 self .srv_record = MagicMock ()
1814 self .srv_record .target .to_text .return_value = "cluster0.example.mongodb.net"
@@ -21,53 +17,58 @@ def setUp(self):
2117 self .addCleanup (self .patcher .stop )
2218
2319 @patch ("dns.resolver.resolve" )
24- def test_uri (self , mock_resolver ):
25- settings_dict = django_mongodb .parse_uri (
26- "mongodb://cluster0.example.mongodb.net/myDatabase"
27- )
20+ def test_simple_uri (self , mock_resolver ):
21+ settings_dict = parse_uri ("mongodb://cluster0.example.mongodb.net/myDatabase" )
2822 self .assertEqual (settings_dict ["ENGINE" ], "django_mongodb" )
2923 self .assertEqual (settings_dict ["NAME" ], "myDatabase" )
3024 self .assertEqual (settings_dict ["HOST" ], "cluster0.example.mongodb.net" )
3125
26+ @patch ("dns.resolver.resolve" )
27+ def test_no_database (self , mock_resolver ):
28+ settings_dict = parse_uri ("mongodb://cluster0.example.mongodb.net/" )
29+ self .assertEqual (settings_dict ["ENGINE" ], "django_mongodb" )
30+ self .assertIsNone (settings_dict ["NAME" ])
31+ self .assertEqual (settings_dict ["HOST" ], "cluster0.example.mongodb.net" )
32+
3233 @patch ("dns.resolver.resolve" )
3334 def test_srv_uri_with_options (self , mock_resolver ):
34- settings_dict = django_mongodb . parse_uri (URI )
35+ settings_dict = parse_uri (URI )
3536 self .assertEqual (settings_dict ["ENGINE" ], "django_mongodb" )
3637 self .assertEqual (settings_dict ["NAME" ], "myDatabase" )
3738 self .assertEqual (settings_dict ["HOST" ], "mongodb+srv://cluster0.example.mongodb.net" )
3839 self .assertEqual (settings_dict ["USER" ], "myDatabaseUser" )
3940 self .assertEqual (settings_dict ["PASSWORD" ], "D1fficultP@ssw0rd" )
40- self .assertEqual (settings_dict ["PORT" ], None )
41+ self .assertIsNone (settings_dict ["PORT" ], None )
4142 self .assertEqual (
4243 settings_dict ["OPTIONS" ], {"retryWrites" : True , "w" : "majority" , "tls" : False }
4344 )
4445
4546 def test_localhost (self ):
46- settings_dict = django_mongodb . parse_uri ("mongodb://localhost/myDatabase" )
47+ settings_dict = parse_uri ("mongodb://localhost/myDatabase" )
4748 self .assertEqual (settings_dict ["ENGINE" ], "django_mongodb" )
4849 self .assertEqual (settings_dict ["NAME" ], "myDatabase" )
4950 self .assertEqual (settings_dict ["HOST" ], "localhost" )
5051
51- def test_localhost_bad_credentials (self ):
52- with self .assertRaises (pymongo .errors .InvalidURI ):
53- django_mongodb .parse_uri ("mongodb://:@localhost/myDatabase" )
54-
5552 @patch ("dns.resolver.resolve" )
56- def test_conn_max_age_kwarg (self , mock_resolver ):
57- settings_dict = django_mongodb . parse_uri (URI , conn_max_age = 600 )
53+ def test_conn_max_age (self , mock_resolver ):
54+ settings_dict = parse_uri (URI , conn_max_age = 600 )
5855 self .assertEqual (settings_dict ["CONN_MAX_AGE" ], 600 )
5956
6057 @patch ("dns.resolver.resolve" )
61- def test_conn_health_checks_kwarg (self , mock_resolver ):
62- settings_dict = django_mongodb . parse_uri (URI , conn_health_checks = True )
58+ def test_conn_health_checks (self , mock_resolver ):
59+ settings_dict = parse_uri (URI , conn_health_checks = True )
6360 self .assertEqual (settings_dict ["CONN_HEALTH_CHECKS" ], True )
6461
6562 @patch ("dns.resolver.resolve" )
6663 def test_test_kwarg (self , mock_resolver ):
67- settings_dict = django_mongodb . parse_uri (URI , test = {"NAME" : "test_db" })
64+ settings_dict = parse_uri (URI , test = {"NAME" : "test_db" })
6865 self .assertEqual (settings_dict ["TEST" ]["NAME" ], "test_db" )
6966
67+ def test_invalid_credentials (self ):
68+ with self .assertRaises (pymongo .errors .InvalidURI ):
69+ parse_uri ("mongodb://:@localhost/myDatabase" )
70+
7071 @patch ("dns.resolver.resolve" )
71- def test_uri_no_prefix (self , mock_resolver ):
72+ def test_no_prefix (self , mock_resolver ):
7273 with self .assertRaises (pymongo .errors .InvalidURI ):
73- django_mongodb . parse_uri ("cluster0.example.mongodb.net/myDatabase" )
74+ parse_uri ("cluster0.example.mongodb.net/myDatabase" )
0 commit comments