@@ -41,7 +41,7 @@ def test_role_update_by_user(client, real_mongo_client, user_id):
41
41
assert user ["role" ] == "manager"
42
42
43
43
44
- def test_user_update (client , real_mongo_client , user_id , admin_user_id ):
44
+ def test_user_update (client , unauthenticated_client , real_mongo_client , user_id , admin_user_id ):
45
45
endpoint = f"/users/{ str (user_id )} "
46
46
# Test display name update
47
47
user_request = {"display_name" : "Test Person II" }
@@ -105,6 +105,16 @@ def test_user_update(client, real_mongo_client, user_id, admin_user_id):
105
105
user = real_mongo_client .get_database ().users .find_one ({"_id" : admin_user_id })
106
106
assert user ["display_name" ] == "Test Admin"
107
107
108
+ # Test that differing user auth can/cannot search for users
109
+ endpoint = "/search-users/"
110
+ resp = client .get (endpoint + "?query='Test Person'" )
111
+ assert resp .status_code == 200
112
+ assert len (resp .json ["users" ]) == 4
113
+
114
+ # Test that differing user auth can/cannot search for users
115
+ resp = unauthenticated_client .get (endpoint + "?query='Test Person'" )
116
+ assert resp .status_code == 401
117
+
108
118
109
119
def test_user_update_admin (admin_client , real_mongo_client , user_id ):
110
120
endpoint = f"/users/{ str (user_id )} "
@@ -114,3 +124,48 @@ def test_user_update_admin(admin_client, real_mongo_client, user_id):
114
124
assert resp .status_code == 200
115
125
user = real_mongo_client .get_database ().users .find_one ({"_id" : user_id })
116
126
assert user ["display_name" ] == "Test Person"
127
+
128
+
129
+ def test_create_group (admin_client , client , unauthenticated_client , real_mongo_client ):
130
+ from bson import ObjectId
131
+
132
+ good_group = {
133
+ "display_name" : "My New Group" ,
134
+ "group_id" : "my-new-group" ,
135
+ "description" : "A group for testing" ,
136
+ "group_admins" : [],
137
+ }
138
+
139
+ # Group ID cannot be None
140
+ bad_group = good_group .copy ()
141
+ bad_group ["group_id" ] = None
142
+ resp = admin_client .put ("/groups" , json = bad_group )
143
+ assert resp .status_code == 400
144
+
145
+ # Successfully create group
146
+ resp = admin_client .put ("/groups" , json = good_group )
147
+ assert resp .status_code == 200
148
+ group_immutable_id = ObjectId (resp .json ["group_immutable_id" ])
149
+ assert real_mongo_client .get_database ().groups .find_one ({"_id" : group_immutable_id })
150
+
151
+ # Group ID must be unique
152
+ resp = admin_client .put ("/groups" , json = good_group )
153
+ assert resp .status_code == 400
154
+
155
+ # Request must come from admin
156
+ # Make ID unique so that this would otherwise pass
157
+ good_group ["group_id" ] = "my-new-group-2"
158
+ resp = unauthenticated_client .put ("/groups" , json = good_group )
159
+ assert resp .status_code == 401
160
+ assert (
161
+ real_mongo_client .get_database ().groups .find_one ({"group_id" : good_group ["group_id" ]})
162
+ is None
163
+ )
164
+
165
+ # Request must come from admin
166
+ resp = client .put ("/groups" , json = good_group )
167
+ assert resp .status_code == 403
168
+ assert (
169
+ real_mongo_client .get_database ().groups .find_one ({"group_id" : good_group ["group_id" ]})
170
+ is None
171
+ )
0 commit comments