fix(api): return real total for user pagination
Generic Container CI/CD / test-build-publish (push) Successful in 2m13s
Server CI/CD v2 / build-test-publish-and-deploy (push) Successful in 2m13s

This commit is contained in:
2026-09-15 10:55:29 +08:00
parent 682c26fddd
commit a3b4e75317
3 changed files with 35 additions and 3 deletions
+24 -1
View File
@@ -7,8 +7,9 @@ import pytest
from fastapi import HTTPException
from fastapi import Response
from app.auth.metadata_dependencies import get_current_metadata_admin
from app.api.v1.endpoints import admin_metadata
from app.api.pagination import PaginatedList
from app.auth.metadata_dependencies import get_current_metadata_admin
from app.domain.schemas.admin_metadata import (
AdminProjectCreateRequest,
MetadataUsersBatchSyncRequest,
@@ -83,6 +84,28 @@ def test_to_async_sqlalchemy_url_preserves_password():
assert "***" not in url
@pytest.mark.anyio
async def test_list_metadata_users_returns_page_with_real_total():
users = [_user(username="alice"), _user(username="bob")]
repo = SimpleNamespace(
list_users=AsyncMock(return_value=users),
count_users=AsyncMock(return_value=7),
)
response = await admin_metadata.list_metadata_users(
skip=2,
limit=2,
current_user=_user(role="admin", is_superuser=True),
metadata_repo=repo,
)
assert isinstance(response, PaginatedList)
assert response.total == 7
assert [item.username for item in response] == ["alice", "bob"]
repo.list_users.assert_awaited_once_with(skip=2, limit=2)
repo.count_users.assert_awaited_once_with()
@pytest.mark.anyio
async def test_sync_metadata_user_upserts_without_password(monkeypatch):
keycloak_id = uuid4()