Files
FastapiAdmin/backend/tests/test_api_module_platform.py
T
zhangtao 5ff72b086f refactor: 重构项目模块结构与代码细节优化
1.  调整后端模块路由与插件文件结构,迁移部分模块代码至api/v1目录
2.  优化代码注释格式与文档字符串,简化冗余代码
3.  添加监控仪表盘、工单评论等新模块功能
4.  修复前端部分组件交互逻辑与类型定义
5.  清理冗余的初始化数据与废弃配置文件
6.  新增租户注册表单字段与国际化支持
7.  优化HTTP请求拦截器与快捷键功能
2026-07-10 00:18:11 +08:00

309 lines
12 KiB
Python

"""模块接口测试 —— module_platform(平台管理)
认证数据测试:admin 登录后验证 CRUD 真实数据。
"""
from conftest import assert_route
from fastapi.testclient import TestClient
class TestTenant:
"""租户管理接口。"""
def test_tenant_list(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/tenant/list", auth=auth_headers)
def test_tenant_detail(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/tenant/detail/1", auth=auth_headers)
def test_tenant_create(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(
test_client,
"POST",
"/platform/tenant/create",
auth=auth_headers,
json={"name": "测试租户", "code": "test_tenant", "contact_name": "张三", "contact_phone": "13800000000"},
)
def test_tenant_update(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(
test_client,
"PUT",
"/platform/tenant/update/1",
auth=auth_headers,
json={"name": "更新租户"},
)
def test_tenant_delete(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "DELETE", "/platform/tenant/delete", auth=auth_headers, json=[9999])
def test_tenant_config_info(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/tenant/1/config/info", auth=auth_headers)
def test_tenant_config(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "PUT", "/platform/tenant/1/config", auth=auth_headers, json={"key": "val"})
def test_tenant_renew(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(
test_client,
"PUT",
"/platform/tenant/renew/1",
auth=auth_headers,
json={"days": 30},
)
def test_tenant_status(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(
test_client,
"PUT",
"/platform/tenant/status/1",
auth=auth_headers,
json={"status": 1},
)
def test_tenant_status_batch(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(
test_client,
"PATCH",
"/platform/tenant/status/batch",
auth=auth_headers,
json={"ids": [1], "status": 1},
)
def test_tenant_package_change_preview(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/tenant/1/package-change-preview", auth=auth_headers)
def test_tenant_users(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/tenant/1/users", auth=auth_headers)
def test_tenant_add_user(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(
test_client,
"POST",
"/platform/tenant/1/users",
auth=auth_headers,
json={"user_id": 2},
)
def test_tenant_remove_user(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "DELETE", "/platform/tenant/1/users/2", auth=auth_headers)
def test_tenant_invoice_list(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/tenant/invoice/list", auth=auth_headers)
def test_tenant_invoice_download(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/tenant/invoice/1/download", auth=auth_headers)
def test_tenant_license_download(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/tenant/invoice/1/license/download", auth=auth_headers)
class TestPackage:
"""套餐管理接口。"""
def test_package_list(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/package/list", auth=auth_headers)
def test_package_detail(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/package/detail/1", auth=auth_headers)
def test_package_create(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(
test_client,
"POST",
"/platform/package/create",
auth=auth_headers,
json={"name": "测试套餐", "code": "test_pkg", "price": 99.0, "sort": 1},
)
def test_package_update(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(
test_client,
"PUT",
"/platform/package/update/1",
auth=auth_headers,
json={"name": "更新套餐"},
)
def test_package_delete(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "DELETE", "/platform/package/delete", auth=auth_headers, json=[9999])
def test_package_menus(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/package/menus/1", auth=auth_headers)
def test_package_set_menus(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(
test_client,
"POST",
"/platform/package/menus/1/set",
auth=auth_headers,
json={"menu_ids": [1, 2]},
)
def test_package_status_batch(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(
test_client,
"PATCH",
"/platform/package/status/batch",
auth=auth_headers,
json={"ids": [1], "status": 1},
)
class TestMenu:
"""菜单管理接口。"""
def test_menu_tree(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/menu/tree", auth=auth_headers)
def test_menu_create(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(
test_client,
"POST",
"/platform/menu/create",
auth=auth_headers,
json={"name": "测试菜单", "type": 0, "parent_id": 0, "sort": 1},
)
def test_menu_update(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(
test_client,
"PUT",
"/platform/menu/update/1",
auth=auth_headers,
json={"name": "更新菜单"},
)
def test_menu_delete(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "DELETE", "/platform/menu/delete", auth=auth_headers, json=[9999])
def test_menu_detail(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/menu/detail/1", auth=auth_headers)
def test_menu_status_batch(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(
test_client,
"PATCH",
"/platform/menu/status/batch",
auth=auth_headers,
json={"ids": [1], "status": 1},
)
class TestOrder:
"""订单管理接口。"""
def test_order_list(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/order/list", auth=auth_headers)
def test_order_detail(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/order/detail/1", auth=auth_headers)
def test_order_create(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(
test_client,
"POST",
"/platform/order/create",
auth=auth_headers,
json={"package_id": 1},
)
def test_order_cancel(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "POST", "/platform/order/cancel/1", auth=auth_headers)
def test_order_refund_apply(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(
test_client,
"POST",
"/platform/order/refund/apply/1",
auth=auth_headers,
json={"reason": "测试退款"},
)
class TestPayment:
"""支付管理接口。"""
def test_payment_record_list(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/payment/record/list", auth=auth_headers)
def test_payment_pay(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(
test_client,
"POST",
"/platform/payment/pay/1",
auth=auth_headers,
json={"method": "wechat"},
)
def test_payment_status(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/payment/status/1", auth=auth_headers)
def test_payment_callback(self, test_client: TestClient) -> None:
assert_route(test_client, "POST", "/platform/payment/callback/wechat")
def test_payment_mock_callback(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "POST", "/platform/payment/mock/callback", auth=auth_headers)
class TestRefund:
"""退款管理接口。"""
def test_refund_list(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/refund/list", auth=auth_headers)
def test_refund_approve(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "PUT", "/platform/refund/approve/1", auth=auth_headers)
def test_refund_reject(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "PUT", "/platform/refund/reject/1", auth=auth_headers)
class TestInvoice:
"""发票管理接口。"""
def test_invoice_list(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/invoice/list", auth=auth_headers)
def test_invoice_apply(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(
test_client,
"POST",
"/platform/tenant/invoice/apply",
auth=auth_headers,
json={"order_id": 1, "invoice_type": 0, "title": "测试发票", "tax_no": "123456"},
)
def test_invoice_issue(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "PUT", "/platform/invoice/issue/1", auth=auth_headers, json={"status": 1})
def test_invoice_void(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "PUT", "/platform/invoice/void/1", auth=auth_headers, json={"status": 2})
class TestSelfService:
"""租户自助服务接口。"""
def test_package_available(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/tenant/package/available", auth=auth_headers)
def test_package_preview(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/tenant/package/preview", auth=auth_headers)
def test_self_order_list(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/tenant/order/list", auth=auth_headers)
def test_self_order_detail(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/tenant/order/detail/1", auth=auth_headers)
def test_self_order_create(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(
test_client,
"POST",
"/platform/tenant/order/create",
auth=auth_headers,
json={"package_id": 1},
)
def test_self_workspace(self, test_client: TestClient, auth_headers: dict) -> None:
assert_route(test_client, "GET", "/platform/tenant/workspace", auth=auth_headers)