@@ -38,25 +38,17 @@ def _clean_tags_table(postgres_db: sa.engine.Engine) -> Iterator[None]:
3838 conn .execute (tags .delete ())
3939
4040
41- @pytest .fixture
42- def fake_tags (faker : Faker ) -> list [dict [str , Any ]]:
43- return [
44- {"name" : "tag1" , "description" : "description1" , "color" : "#f00" },
45- {"name" : "tag2" , "description" : "description2" , "color" : "#00f" },
46- ]
47-
48-
4941@pytest .fixture
5042def user_role () -> UserRole :
5143 # All tests in test_tags assume USER's role
52- # i.e. Used in `logged_user` and `user_project`
44+ # i.e. Used in `logged_user` and `user_project` fixtures
5345 return UserRole .USER
5446
5547
5648async def test_tags_to_studies (
5749 client : TestClient ,
50+ faker : Faker ,
5851 user_project : ProjectDict ,
59- fake_tags : dict [str , Any ],
6052 catalog_subsystem_mock : Callable [[list [ProjectDict ]], None ],
6153):
6254 catalog_subsystem_mock ([user_project ])
@@ -65,7 +57,10 @@ async def test_tags_to_studies(
6557 # Add test tags
6658 added_tags = []
6759
68- for tag in fake_tags :
60+ for tag in [
61+ {"name" : "tag1" , "description" : faker .sentence (), "color" : "#f00" },
62+ {"name" : "tag2" , "description" : faker .sentence (), "color" : "#00f" },
63+ ]:
6964 url = client .app .router ["create_tag" ].url_for ()
7065 resp = await client .post (f"{ url } " , json = tag )
7166 added_tag , _ = await assert_status (resp , status .HTTP_200_OK )
@@ -152,7 +147,7 @@ async def test_read_tags(
152147 everybody_tag_id : int ,
153148):
154149 assert client .app
155- assert user_role == UserRole . USER
150+ assert UserRole ( logged_user [ "role" ]) == user_role
156151
157152 url = client .app .router ["list_tags" ].url_for ()
158153 resp = await client .get (f"{ url } " )
@@ -177,7 +172,7 @@ async def test_create_and_update_tags(
177172 _clean_tags_table : None ,
178173):
179174 assert client .app
180- assert user_role == UserRole . USER
175+ assert UserRole ( logged_user [ "role" ]) == user_role
181176
182177 # (1) create tag
183178 url = client .app .router ["create_tag" ].url_for ()
@@ -223,7 +218,7 @@ async def test_create_tags_with_order_index(
223218 _clean_tags_table : None ,
224219):
225220 assert client .app
226- assert user_role == UserRole . USER
221+ assert UserRole ( logged_user [ "role" ]) == user_role
227222
228223 # (1) create tags but set the order in reverse order of creation
229224 url = client .app .router ["create_tag" ].url_for ()
@@ -283,7 +278,7 @@ async def test_share_tags_by_creating_associated_groups(
283278 _clean_tags_table : None ,
284279):
285280 assert client .app
286- assert user_role == UserRole . USER
281+ assert UserRole ( logged_user [ "role" ]) == user_role
287282
288283 # CREATE
289284 url = client .app .router ["create_tag" ].url_for ()
@@ -361,33 +356,43 @@ async def test_share_tags_by_creating_associated_groups(
361356 resp = await client .delete (
362357 f"{ url } " ,
363358 )
364- data , _ = await assert_status (resp , status .HTTP_200_OK )
359+ await assert_status (resp , status .HTTP_204_NO_CONTENT )
365360
366361 # test can do nothing
367362
368363
369- async def test_cannot_share_tag_with_everyone_from_rest_api (
364+ @pytest .mark .xfail (reason = "Under dev" )
365+ async def test_cannot_share_tag_with_everyone (
370366 client : TestClient ,
371367 logged_user : UserInfoDict ,
372368 user_role : UserRole ,
373- everybody_tag_id : int ,
374369 _clean_tags_table : None ,
375370):
376371 assert client .app
377- assert logged_user ["role" ] == user_role
372+ assert UserRole ( logged_user ["role" ]) == user_role
378373
374+ url = client .app .router ["create_tag" ].url_for ()
375+ resp = await client .post (
376+ f"{ url } " ,
377+ json = {"name" : "shared" , "color" : "#fff" },
378+ )
379+ tag , _ = await assert_status (resp , status .HTTP_200_OK )
380+ tag_id : int = tag ["id" ]
381+
382+ # cannot SHARE with everyone group
379383 url = client .app .router ["create_tag_group" ].url_for (
380- tag_id = f"{ everybody_tag_id } " , group_id = f"{ EVERYONE_GROUP_ID } "
384+ tag_id = f"{ tag_id } " , group_id = f"{ EVERYONE_GROUP_ID } "
381385 )
382- resp = await client .put (
386+ resp = await client .post (
383387 f"{ url } " ,
384388 json = {"read" : True , "write" : True , "delete" : True },
385389 )
386390 _ , error = await assert_status (resp , status .HTTP_403_FORBIDDEN )
387391 assert error
388392
393+ # cannot REPLACE with everyone group
389394 url = client .app .router ["replace_tag_group" ].url_for (
390- tag_id = f"{ everybody_tag_id } " , group_id = f"{ EVERYONE_GROUP_ID } "
395+ tag_id = f"{ tag_id } " , group_id = f"{ EVERYONE_GROUP_ID } "
391396 )
392397 resp = await client .put (
393398 f"{ url } " ,
@@ -396,8 +401,9 @@ async def test_cannot_share_tag_with_everyone_from_rest_api(
396401 _ , error = await assert_status (resp , status .HTTP_403_FORBIDDEN )
397402 assert error
398403
404+ # cannot DELETE with everyone group
399405 url = client .app .router ["delete_tag_group" ].url_for (
400- tag_id = f"{ everybody_tag_id } " , group_id = f"{ EVERYONE_GROUP_ID } "
406+ tag_id = f"{ tag_id } " , group_id = f"{ EVERYONE_GROUP_ID } "
401407 )
402408 resp = await client .delete (
403409 f"{ url } " ,
0 commit comments