1
1
from unittest .mock import patch
2
2
3
3
import pymongo
4
+ from django .core .exceptions import ImproperlyConfigured
4
5
from django .test import SimpleTestCase
5
6
6
7
from django_mongodb_backend import parse_uri
@@ -12,11 +13,28 @@ def test_simple_uri(self):
12
13
self .assertEqual (settings_dict ["ENGINE" ], "django_mongodb_backend" )
13
14
self .assertEqual (settings_dict ["NAME" ], "myDatabase" )
14
15
self .assertEqual (settings_dict ["HOST" ], "cluster0.example.mongodb.net" )
16
+ self .assertEqual (settings_dict ["OPTIONS" ], {"authSource" : "myDatabase" })
15
17
16
- def test_no_database (self ):
17
- settings_dict = parse_uri ("mongodb://cluster0.example.mongodb.net" )
18
- self .assertIsNone (settings_dict ["NAME" ])
18
+ def test_db_name (self ):
19
+ settings_dict = parse_uri ("mongodb://cluster0.example.mongodb.net/" , db_name = "myDatabase" )
20
+ self .assertEqual (settings_dict ["ENGINE" ], "django_mongodb_backend" )
21
+ self .assertEqual (settings_dict ["NAME" ], "myDatabase" )
22
+ self .assertEqual (settings_dict ["HOST" ], "cluster0.example.mongodb.net" )
23
+ self .assertEqual (settings_dict ["OPTIONS" ], {})
24
+
25
+ def test_db_name_overrides_default_auth_db (self ):
26
+ settings_dict = parse_uri (
27
+ "mongodb://cluster0.example.mongodb.net/default_auth_db" , db_name = "myDatabase"
28
+ )
29
+ self .assertEqual (settings_dict ["ENGINE" ], "django_mongodb_backend" )
30
+ self .assertEqual (settings_dict ["NAME" ], "myDatabase" )
19
31
self .assertEqual (settings_dict ["HOST" ], "cluster0.example.mongodb.net" )
32
+ self .assertEqual (settings_dict ["OPTIONS" ], {"authSource" : "default_auth_db" })
33
+
34
+ def test_no_database (self ):
35
+ msg = "You must provide the db_name parameter."
36
+ with self .assertRaisesMessage (ImproperlyConfigured , msg ):
37
+ parse_uri ("mongodb://cluster0.example.mongodb.net" )
20
38
21
39
def test_srv_uri_with_options (self ):
22
40
uri = "mongodb+srv://my_user:[email protected] /my_database?retryWrites=true&w=majority"
@@ -30,35 +48,46 @@ def test_srv_uri_with_options(self):
30
48
self .assertEqual (settings_dict ["PASSWORD" ], "my_password" )
31
49
self .assertIsNone (settings_dict ["PORT" ])
32
50
self .assertEqual (
33
- settings_dict ["OPTIONS" ], {"retryWrites" : True , "w" : "majority" , "tls" : True }
51
+ settings_dict ["OPTIONS" ],
52
+ {"authSource" : "my_database" , "retryWrites" : True , "w" : "majority" , "tls" : True },
34
53
)
35
54
36
55
def test_localhost (self ):
37
- settings_dict = parse_uri ("mongodb://localhost" )
56
+ settings_dict = parse_uri ("mongodb://localhost/db " )
38
57
self .assertEqual (settings_dict ["HOST" ], "localhost" )
39
58
self .assertEqual (settings_dict ["PORT" ], 27017 )
40
59
41
60
def test_localhost_with_port (self ):
42
- settings_dict = parse_uri ("mongodb://localhost:27018" )
61
+ settings_dict = parse_uri ("mongodb://localhost:27018/db " )
43
62
self .assertEqual (settings_dict ["HOST" ], "localhost" )
44
63
self .assertEqual (settings_dict ["PORT" ], 27018 )
45
64
46
65
def test_hosts_with_ports (self ):
47
- settings_dict = parse_uri ("mongodb://localhost:27017,localhost:27018" )
66
+ settings_dict = parse_uri ("mongodb://localhost:27017,localhost:27018/db " )
48
67
self .assertEqual (settings_dict ["HOST" ], "localhost:27017,localhost:27018" )
49
68
self .assertEqual (settings_dict ["PORT" ], None )
50
69
51
70
def test_hosts_without_ports (self ):
52
- settings_dict = parse_uri ("mongodb://host1.net,host2.net" )
71
+ settings_dict = parse_uri ("mongodb://host1.net,host2.net/db " )
53
72
self .assertEqual (settings_dict ["HOST" ], "host1.net:27017,host2.net:27017" )
54
73
self .assertEqual (settings_dict ["PORT" ], None )
55
74
75
+ def test_auth_source_in_query_string (self ):
76
+ settings_dict = parse_uri ("mongodb://localhost/?authSource=auth" , db_name = "db" )
77
+ self .assertEqual (settings_dict ["NAME" ], "db" )
78
+ self .assertEqual (settings_dict ["OPTIONS" ], {"authSource" : "auth" })
79
+
80
+ def test_auth_source_in_query_string_overrides_defaultauthdb (self ):
81
+ settings_dict = parse_uri ("mongodb://localhost/db?authSource=auth" )
82
+ self .assertEqual (settings_dict ["NAME" ], "db" )
83
+ self .assertEqual (settings_dict ["OPTIONS" ], {"authSource" : "auth" })
84
+
56
85
def test_conn_max_age (self ):
57
- settings_dict = parse_uri ("mongodb://localhost" , conn_max_age = 600 )
86
+ settings_dict = parse_uri ("mongodb://localhost/db " , conn_max_age = 600 )
58
87
self .assertEqual (settings_dict ["CONN_MAX_AGE" ], 600 )
59
88
60
89
def test_test_kwarg (self ):
61
- settings_dict = parse_uri ("mongodb://localhost" , test = {"NAME" : "test_db" })
90
+ settings_dict = parse_uri ("mongodb://localhost/db " , test = {"NAME" : "test_db" })
62
91
self .assertEqual (settings_dict ["TEST" ], {"NAME" : "test_db" })
63
92
64
93
def test_invalid_credentials (self ):
0 commit comments