2222from models_library .utils .fastapi_encoders import jsonable_encoder
2323from pytest_simcore .helpers .assert_checks import assert_status
2424from pytest_simcore .helpers .postgres_tags import create_tag , delete_tag
25- from pytest_simcore .helpers .webserver_login import UserInfoDict
25+ from pytest_simcore .helpers .webserver_login import NewUser , UserInfoDict
2626from pytest_simcore .helpers .webserver_projects import assert_get_same_project
2727from servicelib .aiohttp import status
2828from simcore_postgres_database .models .tags import tags
@@ -276,7 +276,7 @@ async def test_create_tags_with_order_index(
276276 assert got == [* expected_tags [::- 1 ], last_created ]
277277
278278
279- async def test_share_tags (
279+ async def test_share_tags_by_creating_associated_groups (
280280 client : TestClient ,
281281 logged_user : UserInfoDict ,
282282 user_role : UserRole ,
@@ -294,37 +294,63 @@ async def test_share_tags(
294294 )
295295 created , _ = await assert_status (resp , status .HTTP_200_OK )
296296
297- # SHARE (all combinations)?
298- url = client .app .router ["create_tag_group" ].url_for (
299- tag_id = created ["id" ], group_id = f"{ EVERYONE_GROUP_ID } "
300- )
301- resp = await client .post (
302- f"{ url } " ,
303- json = {"read" : True , "write" : False , "delete" : False },
304- )
297+ # LIST
298+ url = client .app .router ["list_tag_groups" ].url_for (tag_id = created ["id" ])
299+ resp = await client .get (f"{ url } " )
305300 data , _ = await assert_status (resp , status .HTTP_200_OK )
306301
307- # test only performed allowed combinations
302+ # check ownership
303+ assert len (data ) == 1
304+ assert data [0 ]["gid" ] == logged_user ["primary_gid" ]
305+ assert data [0 ]["read" ] is True
306+ assert data [0 ]["write" ] is True
307+ assert data [0 ]["delete" ] is True
308+
309+ async with NewUser (
310+ app = client .app ,
311+ ) as new_user :
312+ # SHARE
313+ url = client .app .router ["create_tag_group" ].url_for (
314+ tag_id = created ["id" ],
315+ group_id = f"{ new_user ['primary_gid' ]} " ,
316+ )
317+ resp = await client .post (
318+ f"{ url } " ,
319+ json = {"read" : True , "write" : False , "delete" : False },
320+ )
321+ data , _ = await assert_status (resp , status .HTTP_201_CREATED )
308322
309- # REPLACE SHARE to other combinations
310- url = client .app .router ["replace_tag_groups " ].url_for (
311- tag_id = created [ "id" ], group_id = f"{ EVERYONE_GROUP_ID } "
312- )
313- resp = await client . put (
314- f" { url } " ,
315- json = { "read" : True , "write" : True , "delete" : False },
316- )
317- data , _ = await assert_status ( resp , status . HTTP_200_OK )
323+ # check new group
324+ url = client .app .router ["list_tag_groups " ].url_for (tag_id = created [ "id" ])
325+ resp = await client . get ( f"{ url } " )
326+ data , _ = await assert_status ( resp , status . HTTP_200_OK )
327+ assert len ( data ) == 2
328+ assert data [ 1 ][ "gid" ] == logged_user [ "primary_gid" ]
329+ assert data [ 1 ][ "read" ] is True
330+ assert data [ 1 ][ "write" ] is True
331+ assert data [ 1 ][ "delete" ] is True
318332
319- # test can perform new combinations
333+ # TODO: check can only read
320334
321- # DELETE share
322- url = client .app .router ["delete_tag_group" ].url_for (
323- tag_id = created ["id" ], group_id = f"{ EVERYONE_GROUP_ID } "
324- )
325- resp = await client .delete (
326- f"{ url } " ,
327- )
328- data , _ = await assert_status (resp , status .HTTP_200_OK )
335+ # REPLACE SHARE to other combinations
336+ url = client .app .router ["replace_tag_group" ].url_for (
337+ tag_id = created ["id" ], group_id = f"{ EVERYONE_GROUP_ID } "
338+ )
339+ resp = await client .put (
340+ f"{ url } " ,
341+ json = {"read" : True , "write" : True , "delete" : False },
342+ )
343+ data , _ = await assert_status (resp , status .HTTP_200_OK )
344+
345+ # test can perform new combinations
346+
347+ # DELETE share
348+ url = client .app .router ["delete_tag_group" ].url_for (
349+ tag_id = created ["id" ], group_id = f"{ EVERYONE_GROUP_ID } "
350+ )
351+ resp = await client .delete (
352+ f"{ url } " ,
353+ )
354+ data , _ = await assert_status (resp , status .HTTP_200_OK )
329355
330- # test can do nothing
356+ # test can do nothing
0 commit comments