@@ -1303,6 +1303,84 @@ def test_search_users_by_admin_note(db):
13031303 assert user2 .id not in user_ids
13041304
13051305
1306+ def test_ListAdminActions_empty (db ):
1307+ super_user , super_token = generate_user (is_superuser = True )
1308+
1309+ with real_admin_session (super_token ) as api :
1310+ res = api .ListAdminActions (admin_pb2 .ListAdminActionsReq ())
1311+ assert len (res .admin_actions ) == 0
1312+ assert res .next_page_token == ""
1313+
1314+
1315+ def test_ListAdminActions_returns_newest_first_with_target_info (db ):
1316+ super_user , super_token = generate_user (is_superuser = True )
1317+ user1 , _ = generate_user ()
1318+ user2 , _ = generate_user ()
1319+
1320+ with real_admin_session (super_token ) as api :
1321+ api .AddAdminNote (admin_pb2 .AddAdminNoteReq (user = user1 .username , admin_note = "first note" ))
1322+ api .AddAdminNote (admin_pb2 .AddAdminNoteReq (user = user2 .username , admin_note = "second note" ))
1323+ api .BanUser (admin_pb2 .BanUserReq (user = user1 .username , admin_note = "ban reason" ))
1324+
1325+ res = api .ListAdminActions (admin_pb2 .ListAdminActionsReq ())
1326+
1327+ assert len (res .admin_actions ) == 3
1328+ # Newest first
1329+ assert res .admin_actions [0 ].action_type == "ban"
1330+ assert res .admin_actions [0 ].target_user_id == user1 .id
1331+ assert res .admin_actions [0 ].target_username == user1 .username
1332+ assert res .admin_actions [0 ].admin_user_id == super_user .id
1333+ assert res .admin_actions [0 ].admin_username == super_user .username
1334+ assert res .admin_actions [1 ].action_type == "note"
1335+ assert res .admin_actions [1 ].target_user_id == user2 .id
1336+ assert res .admin_actions [2 ].action_type == "note"
1337+ assert res .admin_actions [2 ].target_user_id == user1 .id
1338+
1339+
1340+ def test_ListAdminActions_filter_by_admin_and_target (db ):
1341+ super1 , super1_token = generate_user (is_superuser = True )
1342+ super2 , super2_token = generate_user (is_superuser = True )
1343+ user1 , _ = generate_user ()
1344+ user2 , _ = generate_user ()
1345+
1346+ with real_admin_session (super1_token ) as api :
1347+ api .AddAdminNote (admin_pb2 .AddAdminNoteReq (user = user1 .username , admin_note = "from super1 to user1" ))
1348+ api .AddAdminNote (admin_pb2 .AddAdminNoteReq (user = user2 .username , admin_note = "from super1 to user2" ))
1349+ with real_admin_session (super2_token ) as api :
1350+ api .AddAdminNote (admin_pb2 .AddAdminNoteReq (user = user1 .username , admin_note = "from super2 to user1" ))
1351+
1352+ with real_admin_session (super1_token ) as api :
1353+ res = api .ListAdminActions (admin_pb2 .ListAdminActionsReq (admin_user_id = super1 .id ))
1354+ assert {a .note for a in res .admin_actions } == {"from super1 to user1" , "from super1 to user2" }
1355+
1356+ res = api .ListAdminActions (admin_pb2 .ListAdminActionsReq (target_user_id = user1 .id ))
1357+ assert {a .note for a in res .admin_actions } == {"from super1 to user1" , "from super2 to user1" }
1358+
1359+ res = api .ListAdminActions (admin_pb2 .ListAdminActionsReq (admin_user_id = super1 .id , target_user_id = user1 .id ))
1360+ assert [a .note for a in res .admin_actions ] == ["from super1 to user1" ]
1361+
1362+
1363+ def test_ListAdminActions_pagination (db ):
1364+ super_user , super_token = generate_user (is_superuser = True )
1365+ user , _ = generate_user ()
1366+
1367+ with real_admin_session (super_token ) as api :
1368+ for i in range (3 ):
1369+ api .AddAdminNote (admin_pb2 .AddAdminNoteReq (user = user .username , admin_note = f"note { i } " ))
1370+
1371+ res = api .ListAdminActions (admin_pb2 .ListAdminActionsReq (page_size = 2 ))
1372+ assert len (res .admin_actions ) == 2
1373+ assert res .next_page_token != ""
1374+ first_page_notes = [a .note for a in res .admin_actions ]
1375+
1376+ res2 = api .ListAdminActions (admin_pb2 .ListAdminActionsReq (page_size = 2 , page_token = res .next_page_token ))
1377+ assert len (res2 .admin_actions ) == 1
1378+ assert res2 .next_page_token == ""
1379+
1380+ all_notes = first_page_notes + [a .note for a in res2 .admin_actions ]
1381+ assert set (all_notes ) == {"note 0" , "note 1" , "note 2" }
1382+
1383+
13061384# community invite feature tested in test_events.py
13071385# SendBlogPostNotification tested in test_notifications.py
13081386# MarkUserNeedsLocationUpdate tested in test_jail.py
0 commit comments