@@ -91,15 +91,15 @@ async def test_group_pagination(
9191 res2_json = res2 .json
9292 assert len (res1_json ) == 12
9393 assert len (res2_json ) == 3
94- assert res1_json [0 ]["name" ] == "group0 "
95- assert res1_json [- 1 ]["name" ] == "group11 "
96- assert res2_json [0 ]["name" ] == "group12 "
97- assert res2_json [- 1 ]["name" ] == "group14 "
94+ assert res1_json [0 ]["name" ] == "group14 "
95+ assert res1_json [- 1 ]["name" ] == "group3 "
96+ assert res2_json [0 ]["name" ] == "group2 "
97+ assert res2_json [- 1 ]["name" ] == "group0 "
9898 _ , res3 = await sanic_client .get ("/api/data/groups" , headers = admin_headers , params = {"per_page" : 20 , "page" : 1 })
9999 res3_json = res3 .json
100100 assert len (res3_json ) == 15
101- assert res3_json [0 ]["name" ] == "group0 "
102- assert res3_json [- 1 ]["name" ] == "group14 "
101+ assert res3_json [0 ]["name" ] == "group14 "
102+ assert res3_json [- 1 ]["name" ] == "group0 "
103103
104104
105105@pytest .mark .asyncio
@@ -461,3 +461,47 @@ async def test_get_group_anonymously(sanic_client, user_headers) -> None:
461461 member_2 = members [1 ]
462462 assert member_2 ["id" ] == "member-1"
463463 assert member_2 ["role" ] == "viewer"
464+
465+
466+ @pytest .mark .asyncio
467+ async def test_get_groups_with_direct_membership (sanic_client , user_headers , member_1_headers , member_1_user ) -> None :
468+ # Create a group
469+ namespace = "my-group"
470+ payload = {
471+ "name" : "Group" ,
472+ "slug" : namespace ,
473+ }
474+ _ , response = await sanic_client .post ("/api/data/groups" , headers = user_headers , json = payload )
475+ assert response .status_code == 201 , response .text
476+ group_1 = response .json
477+
478+ # Create another group
479+ namespace_2 = "my-second-group"
480+ payload = {
481+ "name" : "Group 2" ,
482+ "slug" : namespace_2 ,
483+ }
484+ _ , response = await sanic_client .post ("/api/data/groups" , headers = user_headers , json = payload )
485+ assert response .status_code == 201 , response .text
486+ group_2 = response .json
487+
488+ # Add member_1 to Group 2
489+ roles = [{"id" : member_1_user .id , "role" : "editor" }]
490+ _ , response = await sanic_client .patch (f"/api/data/groups/{ namespace_2 } /members" , headers = user_headers , json = roles )
491+ assert response .status_code == 200 , response .text
492+
493+ # Get groups where member_1 has direct membership
494+ parameters = {"direct_member" : True }
495+ _ , response = await sanic_client .get ("/api/data/groups" , headers = member_1_headers , params = parameters )
496+ assert response .status_code == 200 , response .text
497+ groups = response .json
498+ assert len (groups ) == 1
499+ group_ids = {g ["id" ] for g in groups }
500+ assert group_ids == {group_2 ["id" ]}
501+
502+ # Check that both groups can be seen without the filter
503+ _ , response = await sanic_client .get ("/api/data/groups" , headers = member_1_headers )
504+ groups = response .json
505+ assert len (groups ) == 2
506+ group_ids = {g ["id" ] for g in groups }
507+ assert group_ids == {group_1 ["id" ], group_2 ["id" ]}
0 commit comments