Skip to content

Commit 5da5920

Browse files
committed
Add tests for group creation
1 parent 82a1eb8 commit 5da5920

File tree

1 file changed

+56
-1
lines changed

1 file changed

+56
-1
lines changed

pydatalab/tests/server/test_users.py

+56-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def test_role_update_by_user(client, real_mongo_client, user_id):
4141
assert user["role"] == "manager"
4242

4343

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):
4545
endpoint = f"/users/{str(user_id)}"
4646
# Test display name update
4747
user_request = {"display_name": "Test Person II"}
@@ -105,6 +105,16 @@ def test_user_update(client, real_mongo_client, user_id, admin_user_id):
105105
user = real_mongo_client.get_database().users.find_one({"_id": admin_user_id})
106106
assert user["display_name"] == "Test Admin"
107107

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+
108118

109119
def test_user_update_admin(admin_client, real_mongo_client, user_id):
110120
endpoint = f"/users/{str(user_id)}"
@@ -114,3 +124,48 @@ def test_user_update_admin(admin_client, real_mongo_client, user_id):
114124
assert resp.status_code == 200
115125
user = real_mongo_client.get_database().users.find_one({"_id": user_id})
116126
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

Comments
 (0)