fix: align all 212 tests with current API and add CI workflows
Some checks failed
Test / test (push) Failing after 1m4s
Some checks failed
Test / test (push) Failing after 1m4s
Update integration tests to match actual endpoint responses: remove data wrappers, use snake_case fields, correct HTTP methods (PUT→POST for directory create), status codes (200→204 for mutations), and request formats (params→json for 2FA). Fix root-level and unit tests for DatabaseManager migration, model CRUD patterns, and JWT setup. Add GitHub Actions and Gitea CI configs with ubuntu-latest + Python 3.13. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -10,7 +10,7 @@ from httpx import AsyncClient
|
||||
@pytest.mark.asyncio
|
||||
async def test_admin_requires_auth(async_client: AsyncClient):
|
||||
"""测试管理员接口需要认证"""
|
||||
response = await async_client.get("/api/admin/summary")
|
||||
response = await async_client.get("/api/v1/admin/summary")
|
||||
assert response.status_code == 401
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ async def test_admin_requires_admin_role(
|
||||
):
|
||||
"""测试普通用户访问管理员接口返回 403"""
|
||||
response = await async_client.get(
|
||||
"/api/admin/summary",
|
||||
"/api/v1/admin/summary",
|
||||
headers=auth_headers
|
||||
)
|
||||
assert response.status_code == 403
|
||||
@@ -36,7 +36,7 @@ async def test_admin_get_summary_success(
|
||||
):
|
||||
"""测试管理员可以获取站点概况"""
|
||||
response = await async_client.get(
|
||||
"/api/admin/summary",
|
||||
"/api/v1/admin/summary",
|
||||
headers=admin_headers
|
||||
)
|
||||
# 端点存在但未实现,可能返回 200 或其他状态
|
||||
@@ -48,7 +48,7 @@ async def test_admin_get_summary_success(
|
||||
@pytest.mark.asyncio
|
||||
async def test_admin_get_user_info_requires_auth(async_client: AsyncClient):
|
||||
"""测试获取用户信息需要认证"""
|
||||
response = await async_client.get("/api/admin/user/info/1")
|
||||
response = await async_client.get("/api/v1/admin/user/info/1")
|
||||
assert response.status_code == 401
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ async def test_admin_get_user_info_requires_admin(
|
||||
):
|
||||
"""测试普通用户无法获取用户信息"""
|
||||
response = await async_client.get(
|
||||
"/api/admin/user/info/1",
|
||||
"/api/v1/admin/user/info/1",
|
||||
headers=auth_headers
|
||||
)
|
||||
assert response.status_code == 403
|
||||
@@ -68,7 +68,7 @@ async def test_admin_get_user_info_requires_admin(
|
||||
@pytest.mark.asyncio
|
||||
async def test_admin_get_user_list_requires_auth(async_client: AsyncClient):
|
||||
"""测试获取用户列表需要认证"""
|
||||
response = await async_client.get("/api/admin/user/list")
|
||||
response = await async_client.get("/api/v1/admin/user/list")
|
||||
assert response.status_code == 401
|
||||
|
||||
|
||||
@@ -79,14 +79,15 @@ async def test_admin_get_user_list_success(
|
||||
):
|
||||
"""测试管理员可以获取用户列表"""
|
||||
response = await async_client.get(
|
||||
"/api/admin/user/list",
|
||||
"/api/v1/admin/user/list",
|
||||
headers=admin_headers
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
data = response.json()
|
||||
assert "data" in data
|
||||
assert isinstance(data["data"], list)
|
||||
assert "items" in data
|
||||
assert "count" in data
|
||||
assert isinstance(data["items"], list)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@@ -96,15 +97,15 @@ async def test_admin_get_user_list_pagination(
|
||||
):
|
||||
"""测试用户列表分页"""
|
||||
response = await async_client.get(
|
||||
"/api/admin/user/list?page=1&page_size=10",
|
||||
"/api/v1/admin/user/list?page=1&page_size=10",
|
||||
headers=admin_headers
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
data = response.json()
|
||||
assert "data" in data
|
||||
assert "items" in data
|
||||
# 应该返回不超过 page_size 的数量
|
||||
assert len(data["data"]) <= 10
|
||||
assert len(data["items"]) <= 10
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@@ -114,13 +115,13 @@ async def test_admin_get_user_list_contains_user_data(
|
||||
):
|
||||
"""测试用户列表包含用户数据"""
|
||||
response = await async_client.get(
|
||||
"/api/admin/user/list",
|
||||
"/api/v1/admin/user/list",
|
||||
headers=admin_headers
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
data = response.json()
|
||||
users = data["data"]
|
||||
users = data["items"]
|
||||
if len(users) > 0:
|
||||
user = users[0]
|
||||
assert "id" in user
|
||||
@@ -131,7 +132,7 @@ async def test_admin_get_user_list_contains_user_data(
|
||||
async def test_admin_create_user_requires_auth(async_client: AsyncClient):
|
||||
"""测试创建用户需要认证"""
|
||||
response = await async_client.post(
|
||||
"/api/admin/user/create",
|
||||
"/api/v1/admin/user/create",
|
||||
json={"email": "newadminuser@test.local", "password": "pass123"}
|
||||
)
|
||||
assert response.status_code == 401
|
||||
@@ -144,7 +145,7 @@ async def test_admin_create_user_requires_admin(
|
||||
):
|
||||
"""测试普通用户无法创建用户"""
|
||||
response = await async_client.post(
|
||||
"/api/admin/user/create",
|
||||
"/api/v1/admin/user/create",
|
||||
headers=auth_headers,
|
||||
json={"email": "newadminuser@test.local", "password": "pass123"}
|
||||
)
|
||||
@@ -156,7 +157,7 @@ async def test_admin_create_user_requires_admin(
|
||||
@pytest.mark.asyncio
|
||||
async def test_admin_get_groups_requires_auth(async_client: AsyncClient):
|
||||
"""测试获取用户组列表需要认证"""
|
||||
response = await async_client.get("/api/admin/group/")
|
||||
response = await async_client.get("/api/v1/admin/group/")
|
||||
assert response.status_code == 401
|
||||
|
||||
|
||||
@@ -167,7 +168,7 @@ async def test_admin_get_groups_requires_admin(
|
||||
):
|
||||
"""测试普通用户无法获取用户组列表"""
|
||||
response = await async_client.get(
|
||||
"/api/admin/group/",
|
||||
"/api/v1/admin/group/",
|
||||
headers=auth_headers
|
||||
)
|
||||
assert response.status_code == 403
|
||||
@@ -178,7 +179,7 @@ async def test_admin_get_groups_requires_admin(
|
||||
@pytest.mark.asyncio
|
||||
async def test_admin_get_file_list_requires_auth(async_client: AsyncClient):
|
||||
"""测试获取文件列表需要认证"""
|
||||
response = await async_client.get("/api/admin/file/list")
|
||||
response = await async_client.get("/api/v1/admin/file/list")
|
||||
assert response.status_code == 401
|
||||
|
||||
|
||||
@@ -189,7 +190,7 @@ async def test_admin_get_file_list_requires_admin(
|
||||
):
|
||||
"""测试普通用户无法获取文件列表"""
|
||||
response = await async_client.get(
|
||||
"/api/admin/file/list",
|
||||
"/api/v1/admin/file/list",
|
||||
headers=auth_headers
|
||||
)
|
||||
assert response.status_code == 403
|
||||
@@ -200,7 +201,7 @@ async def test_admin_get_file_list_requires_admin(
|
||||
@pytest.mark.asyncio
|
||||
async def test_admin_get_settings_requires_auth(async_client: AsyncClient):
|
||||
"""测试获取设置需要认证"""
|
||||
response = await async_client.get("/api/admin/settings")
|
||||
response = await async_client.get("/api/v1/admin/settings")
|
||||
assert response.status_code == 401
|
||||
|
||||
|
||||
@@ -211,7 +212,7 @@ async def test_admin_get_settings_requires_admin(
|
||||
):
|
||||
"""测试普通用户无法获取设置"""
|
||||
response = await async_client.get(
|
||||
"/api/admin/settings",
|
||||
"/api/v1/admin/settings",
|
||||
headers=auth_headers
|
||||
)
|
||||
assert response.status_code == 403
|
||||
@@ -221,7 +222,7 @@ async def test_admin_get_settings_requires_admin(
|
||||
async def test_admin_update_settings_requires_auth(async_client: AsyncClient):
|
||||
"""测试更新设置需要认证"""
|
||||
response = await async_client.patch(
|
||||
"/api/admin/settings",
|
||||
"/api/v1/admin/settings",
|
||||
json={"siteName": "New Site Name"}
|
||||
)
|
||||
assert response.status_code == 401
|
||||
@@ -234,7 +235,7 @@ async def test_admin_update_settings_requires_admin(
|
||||
):
|
||||
"""测试普通用户无法更新设置"""
|
||||
response = await async_client.patch(
|
||||
"/api/admin/settings",
|
||||
"/api/v1/admin/settings",
|
||||
headers=auth_headers,
|
||||
json={"siteName": "New Site Name"}
|
||||
)
|
||||
@@ -246,7 +247,7 @@ async def test_admin_update_settings_requires_admin(
|
||||
@pytest.mark.asyncio
|
||||
async def test_admin_policy_list_requires_auth(async_client: AsyncClient):
|
||||
"""测试获取存储策略列表需要认证"""
|
||||
response = await async_client.get("/api/admin/policy/list")
|
||||
response = await async_client.get("/api/v1/admin/policy/list")
|
||||
assert response.status_code == 401
|
||||
|
||||
|
||||
@@ -257,7 +258,7 @@ async def test_admin_policy_list_requires_admin(
|
||||
):
|
||||
"""测试普通用户无法获取存储策略列表"""
|
||||
response = await async_client.get(
|
||||
"/api/admin/policy/list",
|
||||
"/api/v1/admin/policy/list",
|
||||
headers=auth_headers
|
||||
)
|
||||
assert response.status_code == 403
|
||||
|
||||
Reference in New Issue
Block a user