|
18 | 18 | ModerationUserList, |
19 | 19 | ModerationVisibility, |
20 | 20 | Reference, |
| 21 | + Upload, |
21 | 22 | User, |
22 | 23 | UserActivity, |
23 | 24 | UserSession, |
@@ -1511,6 +1512,70 @@ def test_ListAdminActions_pagination(db): |
1511 | 1512 | assert set(all_notes) == {"note 0", "note 1", "note 2"} |
1512 | 1513 |
|
1513 | 1514 |
|
| 1515 | +def test_ListUserUploads(db): |
| 1516 | + super_user, super_token = generate_user(is_superuser=True) |
| 1517 | + user, _ = generate_user(complete_profile=False) |
| 1518 | + other_user, _ = generate_user() |
| 1519 | + |
| 1520 | + with session_scope() as session: |
| 1521 | + for i in range(3): |
| 1522 | + session.add( |
| 1523 | + Upload( |
| 1524 | + key=f"key{i}", |
| 1525 | + filename=f"photo{i}.jpg", |
| 1526 | + creator_user_id=user.id, |
| 1527 | + credit=f"credit {i}" if i == 0 else None, |
| 1528 | + ) |
| 1529 | + ) |
| 1530 | + session.add(Upload(key="other_key", filename="other.jpg", creator_user_id=other_user.id)) |
| 1531 | + |
| 1532 | + with real_admin_session(super_token) as api: |
| 1533 | + res = api.ListUserUploads(admin_pb2.ListUserUploadsReq(user=user.username)) |
| 1534 | + |
| 1535 | + assert len(res.uploads) == 3 |
| 1536 | + assert res.next_page_token == "" |
| 1537 | + assert {u.filename for u in res.uploads} == {"photo0.jpg", "photo1.jpg", "photo2.jpg"} |
| 1538 | + |
| 1539 | + upload0 = next(u for u in res.uploads if u.key == "key0") |
| 1540 | + assert upload0.credit == "credit 0" |
| 1541 | + assert upload0.full_url.endswith("/img/full/photo0.jpg") |
| 1542 | + assert upload0.thumbnail_url.endswith("/img/thumbnail/photo0.jpg") |
| 1543 | + assert upload0.HasField("created") |
| 1544 | + |
| 1545 | + |
| 1546 | +def test_ListUserUploads_pagination(db): |
| 1547 | + super_user, super_token = generate_user(is_superuser=True) |
| 1548 | + user, _ = generate_user(complete_profile=False) |
| 1549 | + |
| 1550 | + with session_scope() as session: |
| 1551 | + for i in range(3): |
| 1552 | + session.add(Upload(key=f"key{i}", filename=f"photo{i}.jpg", creator_user_id=user.id)) |
| 1553 | + |
| 1554 | + with real_admin_session(super_token) as api: |
| 1555 | + res = api.ListUserUploads(admin_pb2.ListUserUploadsReq(user=user.username, page_size=2)) |
| 1556 | + assert len(res.uploads) == 2 |
| 1557 | + assert res.next_page_token != "" |
| 1558 | + first_page_keys = [u.key for u in res.uploads] |
| 1559 | + |
| 1560 | + res2 = api.ListUserUploads( |
| 1561 | + admin_pb2.ListUserUploadsReq(user=user.username, page_size=2, page_token=res.next_page_token) |
| 1562 | + ) |
| 1563 | + assert len(res2.uploads) == 1 |
| 1564 | + assert res2.next_page_token == "" |
| 1565 | + |
| 1566 | + all_keys = first_page_keys + [u.key for u in res2.uploads] |
| 1567 | + assert set(all_keys) == {"key0", "key1", "key2"} |
| 1568 | + |
| 1569 | + |
| 1570 | +def test_ListUserUploads_not_found(db): |
| 1571 | + super_user, super_token = generate_user(is_superuser=True) |
| 1572 | + |
| 1573 | + with real_admin_session(super_token) as api: |
| 1574 | + with pytest.raises(grpc.RpcError) as e: |
| 1575 | + api.ListUserUploads(admin_pb2.ListUserUploadsReq(user="nonexistent")) |
| 1576 | + assert e.value.code() == grpc.StatusCode.NOT_FOUND |
| 1577 | + |
| 1578 | + |
1514 | 1579 | # community invite feature tested in test_events.py |
1515 | 1580 | # SendBlogPostNotification tested in test_notifications.py |
1516 | 1581 | # MarkUserNeedsLocationUpdate tested in test_jail.py |
0 commit comments