Skip to content

Commit fd51bf4

Browse files
committed
fixes tess
1 parent 7f03880 commit fd51bf4

File tree

4 files changed

+25
-54
lines changed

4 files changed

+25
-54
lines changed

api/specs/web-server/_users.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
UserForAdminGet,
1818
UserGet,
1919
UsersForAdminSearchQueryParams,
20-
UsersGetParams,
2120
UsersSearch,
2221
)
2322
from models_library.api_schemas_webserver.users_preferences import PatchRequestBody
@@ -150,14 +149,6 @@ async def list_user_permissions():
150149
#
151150

152151

153-
@router.get(
154-
"/users/{user_id}",
155-
response_model=Envelope[UserGet],
156-
)
157-
async def get_user(_path: Annotated[UsersGetParams, Depends()]):
158-
...
159-
160-
161152
@router.post(
162153
"/users:search",
163154
response_model=Envelope[list[UserGet]],

services/web/server/src/simcore_service_webserver/users/_users_rest.py

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@
77
MyProfilePatch,
88
UserGet,
99
UsersForAdminSearchQueryParams,
10-
UsersGetParams,
1110
UsersSearch,
1211
)
1312
from servicelib.aiohttp import status
1413
from servicelib.aiohttp.requests_validation import (
1514
parse_request_body_as,
16-
parse_request_path_parameters_as,
1715
parse_request_query_parameters_as,
1816
)
1917
from servicelib.rest_constants import RESPONSE_MODEL_POLICY
@@ -137,22 +135,6 @@ async def update_my_profile(request: web.Request) -> web.Response:
137135
#
138136

139137

140-
@routes.get(f"/{API_VTAG}/users/{{user_id}}", name="get_user")
141-
@login_required
142-
@permission_required("user.read")
143-
@_handle_users_exceptions
144-
async def get_user(request: web.Request) -> web.Response:
145-
req_ctx = UsersRequestContext.model_validate(request)
146-
assert req_ctx.product_name # nosec
147-
path_params = parse_request_path_parameters_as(UsersGetParams, request)
148-
149-
user = await _users_service.get_public_user(
150-
request.app, caller_id=req_ctx.user_id, user_id=path_params.user_id
151-
)
152-
153-
return envelope_json_response(UserGet.from_model(user))
154-
155-
156138
@routes.post(f"/{API_VTAG}/users:search", name="search_users")
157139
@login_required
158140
@permission_required("user.read")
@@ -184,7 +166,7 @@ async def search_users(request: web.Request) -> web.Response:
184166

185167
@routes.get(f"/{API_VTAG}/admin/users:search", name="search_users_for_admin")
186168
@login_required
187-
@permission_required("user.admin.get")
169+
@permission_required("user.admin.read")
188170
@_handle_users_exceptions
189171
async def search_users_for_admin(request: web.Request) -> web.Response:
190172
req_ctx = UsersRequestContext.model_validate(request)
@@ -207,7 +189,7 @@ async def search_users_for_admin(request: web.Request) -> web.Response:
207189
f"/{API_VTAG}/admin/users:pre-register", name="pre_register_user_for_admin"
208190
)
209191
@login_required
210-
@permission_required("user.admin.get")
192+
@permission_required("user.admin.read")
211193
@_handle_users_exceptions
212194
async def pre_register_user_for_admin(request: web.Request) -> web.Response:
213195
req_ctx = UsersRequestContext.model_validate(request)

services/web/server/tests/unit/with_dbs/03/invitations/test_products__invitations_handlers.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ async def test_pre_registration_and_invitation_workflow(
153153
).model_dump()
154154

155155
# Search user -> nothing
156-
response = await client.get("/v0/users:search", params={"email": guest_email})
156+
response = await client.get("/v0/admin/users:search", params={"email": guest_email})
157157
data, _ = await assert_status(response, expected_status)
158158
# i.e. no info of requester is found, i.e. needs pre-registration
159159
assert data == []
@@ -164,17 +164,21 @@ async def test_pre_registration_and_invitation_workflow(
164164
# assert response.status == status.HTTP_409_CONFLICT
165165

166166
# Accept user for registration and create invitation for her
167-
response = await client.post("/v0/users:pre-register", json=requester_info)
167+
response = await client.post("/v0/admin/users:pre-register", json=requester_info)
168168
data, _ = await assert_status(response, expected_status)
169169

170170
# Can only pre-register once
171171
for _ in range(MANY_TIMES):
172-
response = await client.post("/v0/users:pre-register", json=requester_info)
172+
response = await client.post(
173+
"/v0/admin/users:pre-register", json=requester_info
174+
)
173175
await assert_status(response, status.HTTP_409_CONFLICT)
174176

175177
# Search user again
176178
for _ in range(MANY_TIMES):
177-
response = await client.get("/v0/users:search", params={"email": guest_email})
179+
response = await client.get(
180+
"/v0/admin/users:search", params={"email": guest_email}
181+
)
178182
data, _ = await assert_status(response, expected_status)
179183
assert len(data) == 1
180184
user_found = data[0]
@@ -203,7 +207,7 @@ async def test_pre_registration_and_invitation_workflow(
203207
await assert_status(response, status.HTTP_200_OK)
204208

205209
# find registered user
206-
response = await client.get("/v0/users:search", params={"email": guest_email})
210+
response = await client.get("/v0/admin/users:search", params={"email": guest_email})
207211
data, _ = await assert_status(response, expected_status)
208212
assert len(data) == 1
209213
user_found = data[0]

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

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -103,18 +103,6 @@ async def test_get_and_search_public_users(
103103
assert private_user["id"] != logged_user["id"]
104104
assert public_user["id"] != logged_user["id"]
105105

106-
# GET user
107-
url = client.app.router["get_user"].url_for(user_id=f'{public_user["id"]}')
108-
resp = await client.get(f"{url}")
109-
data, _ = await assert_status(resp, status.HTTP_200_OK)
110-
111-
# check privacy
112-
got = UserGet.model_validate(data)
113-
assert got.user_id == public_user["id"]
114-
assert got.user_name == public_user["name"]
115-
assert got.first_name == public_user.get("first_name")
116-
assert got.last_name == public_user.get("last_name")
117-
118106
# SEARCH by partial email
119107
partial_email = "@find.m"
120108
assert partial_email in private_user["email"]
@@ -127,7 +115,11 @@ async def test_get_and_search_public_users(
127115
found = TypeAdapter(list[UserGet]).validate_python(data)
128116
assert found
129117
assert len(found) == 1
130-
assert found[0] == got
118+
assert found[0].user_id == public_user["id"]
119+
assert found[0].user_name == public_user["name"]
120+
assert found[0].email == public_user["email"]
121+
assert found[0].first_name == public_user.get("first_name")
122+
assert found[0].last_name == public_user.get("last_name")
131123

132124
# SEARCH by partial username
133125
partial_username = "ie01"
@@ -141,7 +133,7 @@ async def test_get_and_search_public_users(
141133
found = TypeAdapter(list[UserGet]).validate_python(data)
142134
assert found
143135
assert len(found) == 2
144-
assert found[1] == got
136+
assert found[1].user_id == public_user["id"]
145137
# check privacy
146138
assert found[0].user_name == private_user["name"]
147139
assert found[0].email is None
@@ -477,8 +469,8 @@ async def test_access_rights_on_search_users_only_product_owners_can_access(
477469
):
478470
assert client.app
479471

480-
url = client.app.router["search_users"].url_for()
481-
assert url.path == "/v0/users:search"
472+
url = client.app.router["search_users_for_admin"].url_for()
473+
assert url.path == "/v0/admin/users:search"
482474

483475
resp = await client.get(url.path, params={"email": "[email protected]"})
484476
await assert_status(resp, expected)
@@ -528,7 +520,9 @@ async def test_search_and_pre_registration(
528520
assert client.app
529521

530522
# ONLY in `users` and NOT `users_pre_registration_details`
531-
resp = await client.get("/v0/users:search", params={"email": logged_user["email"]})
523+
resp = await client.get(
524+
"/v0/admin/users:search", params={"email": logged_user["email"]}
525+
)
532526
assert resp.status == status.HTTP_200_OK
533527

534528
found, _ = await assert_status(resp, status.HTTP_200_OK)
@@ -562,11 +556,11 @@ async def test_search_and_pre_registration(
562556
# NOT in `users` and ONLY `users_pre_registration_details`
563557

564558
# create pre-registration
565-
resp = await client.post("/v0/users:pre-register", json=account_request_form)
559+
resp = await client.post("/v0/admin/users:pre-register", json=account_request_form)
566560
assert resp.status == status.HTTP_200_OK
567561

568562
resp = await client.get(
569-
"/v0/users:search", params={"email": account_request_form["email"]}
563+
"/v0/admin/users:search", params={"email": account_request_form["email"]}
570564
)
571565
found, _ = await assert_status(resp, status.HTTP_200_OK)
572566
assert len(found) == 1
@@ -589,7 +583,7 @@ async def test_search_and_pre_registration(
589583
)
590584

591585
resp = await client.get(
592-
"/v0/users:search", params={"email": account_request_form["email"]}
586+
"/v0/admin/users:search", params={"email": account_request_form["email"]}
593587
)
594588
found, _ = await assert_status(resp, status.HTTP_200_OK)
595589
assert len(found) == 1

0 commit comments

Comments
 (0)