Skip to content

Commit 6d8c770

Browse files
committed
hide email
1 parent 604e6a5 commit 6d8c770

File tree

2 files changed

+45
-28
lines changed

2 files changed

+45
-28
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ async def get_user_from_email(
361361
(users.c.email == email)
362362
& (
363363
users.c.privacy_hide_email.is_(False)
364-
| (users.c.id != caller_user_id)
364+
| (users.c.id == caller_user_id)
365365
)
366366
)
367367
)

services/web/server/tests/unit/with_dbs/01/groups/test_groups_handlers_users.py

Lines changed: 44 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def _assert__group_user(
5757
assert int(user.gid) == expected_user.get("primary_gid")
5858

5959
# private profile
60-
is_private = group_owner_id != actual_user["id"]
60+
is_private = int(group_owner_id) != int(actual_user["id"])
6161
assert "first_name" in actual_user
6262
assert actual_user["first_name"] == (
6363
None if is_private else expected_user.get("first_name")
@@ -151,35 +151,54 @@ async def test_add_remove_users_from_group(
151151

152152
async with AsyncExitStack() as users_stack:
153153
for i in range(num_new_users):
154-
created_users_list.append(
155-
await users_stack.enter_async_context(NewUser(app=client.app))
156-
)
157154

158-
# add the user once per email once per id to test both
159-
params = (
160-
{"uid": created_users_list[i]["id"]}
161-
if i % 2 == 0
162-
else {"email": created_users_list[i]["email"]}
155+
is_private = i % 2 == 0
156+
created_users_list.append(
157+
await users_stack.enter_async_context(
158+
NewUser(
159+
app=client.app, user_data={"privacy_hide_email": is_private}
160+
)
161+
)
163162
)
164-
resp = await client.post(f"{add_group_user_url}", json=params)
165-
data, error = await assert_status(resp, expected.no_content)
163+
created_users_list[i]["is_private"] = is_private
164+
user_id = created_users_list[i]["id"]
165+
user_email = created_users_list[i]["email"]
166+
167+
if is_private:
168+
# only if privacy allows
169+
resp = await client.post(
170+
f"{add_group_user_url}", json={"email": user_email}
171+
)
172+
data, error = await assert_status(resp, expected.not_found)
173+
174+
# always allowed
175+
resp = await client.post(f"{add_group_user_url}", json={"uid": user_id})
176+
await assert_status(resp, expected.no_content)
177+
else:
178+
# both work
179+
resp = await client.post(
180+
f"{add_group_user_url}", json={"email": user_email}
181+
)
182+
await assert_status(resp, expected.no_content)
166183

167-
get_group_user_url = client.app.router["get_group_user"].url_for(
184+
# GET
185+
url = client.app.router["get_group_user"].url_for(
168186
gid=f"{assigned_group['gid']}", uid=f"{created_users_list[i]['id']}"
169187
)
170188
assert (
171-
f"{get_group_user_url}"
189+
f"{url}"
172190
== f"/{API_VTAG}/groups/{assigned_group['gid']}/users/{created_users_list[i]['id']}"
173191
)
174-
resp = await client.get(f"{get_group_user_url}")
192+
resp = await client.get(f"{url}")
175193
data, error = await assert_status(resp, expected.ok)
176194
if not error:
177195
_assert__group_user(
178196
created_users_list[i],
179197
_DEFAULT_GROUP_READ_ACCESS_RIGHTS,
180198
data,
181-
group_owner_id=the_owner["id"],
199+
group_owner_id=the_owner["id"] if is_private else user_id,
182200
)
201+
183202
# check list is correct
184203
resp = await client.get(f"{get_group_users_url}")
185204
data, error = await assert_status(resp, expected.ok)
@@ -190,13 +209,9 @@ async def test_add_remove_users_from_group(
190209
all_created_users = [*created_users_list, logged_user]
191210
assert len(list_of_users) == len(all_created_users)
192211
for actual_user in list_of_users:
193-
194-
expected_users_list = list(
195-
filter(
196-
lambda x, ac=actual_user: x["id"] == ac["id"],
197-
all_created_users,
198-
)
199-
)
212+
expected_users_list = [
213+
usr for usr in all_created_users if usr["id"] == actual_user["id"]
214+
]
200215
assert len(expected_users_list) == 1
201216
expected_user = expected_users_list[0]
202217

@@ -208,7 +223,9 @@ async def test_add_remove_users_from_group(
208223
expected_user,
209224
expected_access_rigths,
210225
actual_user,
211-
group_owner_id=the_owner["id"],
226+
group_owner_id=the_owner["id"]
227+
if actual_user.get("is_private", False)
228+
else actual_user["id"],
212229
)
213230
all_created_users.remove(expected_users_list[0])
214231

@@ -234,10 +251,10 @@ async def test_add_remove_users_from_group(
234251
group_owner_id=the_owner["id"],
235252
)
236253
# check it is there
237-
get_group_user_url = client.app.router["get_group_user"].url_for(
254+
url = client.app.router["get_group_user"].url_for(
238255
gid=f"{assigned_group['gid']}", uid=f"{created_users_list[i]['id']}"
239256
)
240-
resp = await client.get(f"{get_group_user_url}")
257+
resp = await client.get(f"{url}")
241258
data, error = await assert_status(resp, expected.ok)
242259
if not error:
243260
_assert__group_user(
@@ -257,10 +274,10 @@ async def test_add_remove_users_from_group(
257274
data, error = await assert_status(resp, expected.not_found)
258275

259276
# check it is not there anymore
260-
get_group_user_url = client.app.router["get_group_user"].url_for(
277+
url = client.app.router["get_group_user"].url_for(
261278
gid=f"{assigned_group['gid']}", uid=f"{created_users_list[i]['id']}"
262279
)
263-
resp = await client.get(f"{get_group_user_url}")
280+
resp = await client.get(f"{url}")
264281
data, error = await assert_status(resp, expected.not_found)
265282

266283

0 commit comments

Comments
 (0)