@@ -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