""" 模块接口测试 —— module_platform(平台管理) 认证数据测试:admin 登录后验证 CRUD 真实数据。 """ from conftest import assert_route # noqa: F401 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_plugins(self, test_client: TestClient, auth_headers: dict) -> None: assert_route(test_client, "GET", "/platform/package/plugins/1", auth=auth_headers) def test_package_set_plugins(self, test_client: TestClient, auth_headers: dict) -> None: assert_route( test_client, "POST", "/platform/package/plugins/1/set", auth=auth_headers, json={"plugin_ids": [1]}, ) 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 TestPlugin: """插件管理接口。""" def test_plugin_list(self, test_client: TestClient, auth_headers: dict) -> None: assert_route(test_client, "GET", "/platform/plugin/list", auth=auth_headers) def test_plugin_detail(self, test_client: TestClient, auth_headers: dict) -> None: assert_route(test_client, "GET", "/platform/plugin/detail/1", auth=auth_headers) def test_plugin_create(self, test_client: TestClient, auth_headers: dict) -> None: assert_route( test_client, "POST", "/platform/plugin/create", auth=auth_headers, json={"name": "测试插件", "code": "test_plugin"}, ) def test_plugin_update(self, test_client: TestClient, auth_headers: dict) -> None: assert_route( test_client, "PUT", "/platform/plugin/update/1", auth=auth_headers, json={"name": "更新插件"}, ) def test_plugin_delete(self, test_client: TestClient, auth_headers: dict) -> None: assert_route(test_client, "DELETE", "/platform/plugin/delete", auth=auth_headers, json=[9999]) def test_plugin_marketplace(self, test_client: TestClient, auth_headers: dict) -> None: assert_route(test_client, "GET", "/platform/plugin/marketplace", auth=auth_headers) def test_plugin_my(self, test_client: TestClient, auth_headers: dict) -> None: assert_route(test_client, "GET", "/platform/plugin/my", auth=auth_headers) def test_plugin_install(self, test_client: TestClient, auth_headers: dict) -> None: assert_route( test_client, "POST", "/platform/plugin/install", auth=auth_headers, json={"code": "test_plugin"}, ) def test_plugin_uninstall(self, test_client: TestClient, auth_headers: dict) -> None: assert_route( test_client, "POST", "/platform/plugin/uninstall", auth=auth_headers, json={"code": "test_plugin"}, ) def test_plugin_toggle(self, test_client: TestClient, auth_headers: dict) -> None: assert_route( test_client, "POST", "/platform/plugin/toggle", auth=auth_headers, json={"code": "test_plugin"}, ) def test_plugin_reload(self, test_client: TestClient, auth_headers: dict) -> None: assert_route(test_client, "POST", "/platform/plugin/reload", auth=auth_headers) 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 TestEmail: """邮件服务接口。""" def test_email_config_list(self, test_client: TestClient, auth_headers: dict) -> None: assert_route(test_client, "GET", "/platform/email/config/list", auth=auth_headers) def test_email_config_create(self, test_client: TestClient, auth_headers: dict) -> None: assert_route( test_client, "POST", "/platform/email/config/create", auth=auth_headers, json={"name": "测试配置", "host": "smtp.test.com", "port": 587, "username": "test", "password": "pwd"}, ) def test_email_config_update(self, test_client: TestClient, auth_headers: dict) -> None: assert_route( test_client, "PUT", "/platform/email/config/update/1", auth=auth_headers, json={"host": "smtp.new.com"}, ) def test_email_config_delete(self, test_client: TestClient, auth_headers: dict) -> None: assert_route(test_client, "DELETE", "/platform/email/config/delete", auth=auth_headers, json=[9999]) def test_email_config_detail(self, test_client: TestClient, auth_headers: dict) -> None: assert_route(test_client, "GET", "/platform/email/config/detail/1", auth=auth_headers) def test_email_config_test(self, test_client: TestClient, auth_headers: dict) -> None: assert_route( test_client, "POST", "/platform/email/config/test", auth=auth_headers, json={"host": "smtp.test.com", "port": 587, "username": "t", "password": "p"}, ) def test_email_send(self, test_client: TestClient, auth_headers: dict) -> None: assert_route( test_client, "POST", "/platform/email/send", auth=auth_headers, json={"to": "test@test.com", "subject": "test", "body": "hello"}, ) def test_email_template_list(self, test_client: TestClient, auth_headers: dict) -> None: assert_route(test_client, "GET", "/platform/email/template/list", auth=auth_headers) def test_email_template_detail(self, test_client: TestClient, auth_headers: dict) -> None: assert_route(test_client, "GET", "/platform/email/template/detail/1", auth=auth_headers) def test_email_template_create(self, test_client: TestClient, auth_headers: dict) -> None: assert_route( test_client, "POST", "/platform/email/template/create", auth=auth_headers, json={"name": "测试模板", "code": "test_tpl", "subject": "标题", "content": "内容"}, ) def test_email_template_update(self, test_client: TestClient, auth_headers: dict) -> None: assert_route( test_client, "PUT", "/platform/email/template/update/1", auth=auth_headers, json={"name": "更新模板"}, ) def test_email_template_delete(self, test_client: TestClient, auth_headers: dict) -> None: assert_route(test_client, "DELETE", "/platform/email/template/delete", auth=auth_headers, json=[9999]) def test_email_log_list(self, test_client: TestClient, auth_headers: dict) -> None: assert_route(test_client, "GET", "/platform/email/log/list", auth=auth_headers) 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_plugin_purchase(self, test_client: TestClient, auth_headers: dict) -> None: assert_route( test_client, "POST", "/platform/tenant/plugin/purchase", auth=auth_headers, json={"plugin_code": "test_plugin"}, ) 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)