SuperAPI AI 工具集

prowler-test-api

测试与质量

查看项目

更新于 10-16 04:35

技能介绍

用途:为 Prowler API(api/ 目录)编写测试时提供统一模式,涵盖 JSON:API 请求与断言、Celery 异步任务、RLS 跨租户隔离和 RBAC 权限。

主要能力与规则:读取响应统一用 response.json()["data"],不用 response.data;PATCH/PUT 用 content_type="application/vnd.api+json",POST 用 format="vnd.api+json";必须测试跨租户隔离,RLS 返回 404 而非 403;新增端点不得跳过 RLS 隔离测试;测试中不得使用看似真实的 API Key(TruffleHog 会告警);异步任务测试需同时 mock .delay() 和 Task.objects.get。

夹具:create_test_user(会话级用户)、tenants_fixture(3 个租户,[0][1] 有成员关系,[2] 隔离)、authenticated_client(tenant[0] 的 JWT 客户端)、authenticated_client_for_tenant_factory、provider_factory、aws_provider、aws_provider_pair、all_provider_types_fixture、tasks_fixture,以及 RBAC 夹具 authenticated_client_rbac、authenticated_client_rbac_noroles、authenticated_client_no_permissions_rbac。普通视图行为测试用 authenticated_client;仅在测试令牌获取/刷新、无效或过期令牌、按令牌切换租户、API Key、未认证 401 时使用序列化器生成的 JWT 或 API Key 客户端。

Celery 测试策略:mock .delay() + Task.objects.get 用于触发任务的视图;task.apply() 用于同步任务逻辑;mock chain/group 用于 Canvas 编排;mock connection 用于 @set_tenant 装饰器;mock apply_async 用于 Beat 定时任务。不建议用 task_always_eager,因其无任务序列化、无 broker 交互、执行上下文不同。

状态码:GET 200、POST 201、异步操作 202、同步 DELETE 204、校验错误 400、缺权限 403、RLS 隔离/未找到 404。

命令:cd api && uv run pytest -x --tb=short;cd api && uv run pytest -k "test_provider";cd api && uv run pytest api/src/backend/api/tests/test_rbac.py。

限制:完整示例见 assets/api_test.py,夹具参考见 references/test-api-docs.md,夹具源码在 api/src/backend/conftest.py;其余细节暂未提供。