Skip to content

Commit 73b136d

Browse files
committed
drafted tests
1 parent 06011ed commit 73b136d

File tree

2 files changed

+29
-14
lines changed

2 files changed

+29
-14
lines changed

services/web/server/src/simcore_service_webserver/groups/_groups_repository.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,7 @@ async def list_users_in_group(
490490
group_id: GroupID,
491491
) -> list[GroupMember]:
492492
async with pass_or_acquire_connection(get_asyncpg_engine(app), connection) as conn:
493-
# first check if the group exists
493+
# GET GROUP & caller access
494494
result = await conn.execute(
495495
sa.select(
496496
*_GROUP_COLUMNS,
@@ -510,23 +510,30 @@ async def list_users_in_group(
510510
if not group_row:
511511
raise GroupNotFoundError(gid=group_id)
512512

513+
# Drop access-rights if primary group
513514
if group_row.type != GroupType.PRIMARY:
514515
_check_group_permissions(
515516
group_row, caller_id=user_id, group_id=group_id, permission="read"
516517
)
517-
518-
# now get the list
519-
query = (
520-
sa.select(
518+
query = sa.select(
521519
*_group_user_cols(user_id),
522520
user_to_groups.c.access_rights,
523521
)
524-
.select_from(users.join(user_to_groups, isouter=True))
525-
.where(user_to_groups.c.gid == group_id)
522+
else:
523+
query = sa.select(
524+
*_group_user_cols(user_id),
525+
)
526+
527+
# GET users
528+
query = query.select_from(users.join(user_to_groups, isouter=True)).where(
529+
user_to_groups.c.gid == group_id
526530
)
527531

528532
result = await conn.stream(query)
529-
return [GroupMember.model_validate(row) async for row in result]
533+
return [
534+
GroupMember.model_validate(row, from_attributes=True)
535+
async for row in result
536+
]
530537

531538

532539
async def get_user_in_group(

services/web/server/tests/unit/with_dbs/03/test_users.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -159,22 +159,30 @@ async def test_get_and_search_public_users(
159159

160160
# GET user by primary GID
161161
url = client.app.router["get_all_group_users"].url_for(
162-
gid=f"{public_user['id']}"
162+
gid=f"{public_user['primary_gid']}"
163163
)
164164
resp = await client.get(f"{url}")
165165
data, _ = await assert_status(resp, status.HTTP_200_OK)
166166

167-
user = GroupUserGet.model_validate(data)
168-
assert user.id == public_user["id"]
167+
users = TypeAdapter(list[GroupUserGet]).validate_python(data)
168+
assert len(users) == 1
169+
assert users[0].id == public_user["id"]
170+
assert users[0].user_name == public_user["name"]
171+
assert users[0].first_name == public_user.get("first_name")
172+
assert users[0].last_name == public_user.get("last_name")
169173

170174
url = client.app.router["get_all_group_users"].url_for(
171-
gid=f"{private_user['id']}"
175+
gid=f"{private_user['primary_gid']}"
172176
)
173177
resp = await client.get(f"{url}")
174178
data, _ = await assert_status(resp, status.HTTP_200_OK)
175179

176-
user = GroupUserGet.model_validate(data)
177-
assert user.id == private_user["id"]
180+
users = TypeAdapter(list[GroupUserGet]).validate_python(data)
181+
assert len(users) == 1
182+
assert users[0].id == private_user["id"]
183+
assert users[0].user_name == private_user["name"]
184+
assert users[0].first_name is None
185+
assert users[0].last_name is None
178186

179187

180188
@pytest.mark.parametrize(

0 commit comments

Comments
 (0)