feat: 测试端点限流(每租户5次/15分钟)
- email/test 与 push/test 复用 LoginLimiter 滑动窗模式: (kind, tenant_slug) 键每租户 15 分钟 5 次真实出站,超限 429——guard 在端点最前(鉴权后), 被限流的租户连 400 预检也不触发;record 只落在通过全部预检真正出站 的那次(校验失败/未配置不消耗预算,两端口预算按 kind 互不挤占) - conftest autouse 复位限流器(跨测试隔离);新增三测: 第 6 次 429+ 不同租户独立+email/push 互不挤占、校验失败不耗预算 - 回归: 后端 630 passed(627+3) Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -97,6 +97,17 @@ def _reset_platform_settings_snapshot():
|
||||
_reset_for_test()
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def _reset_test_endpoint_limiter():
|
||||
"""Phase 4 Task 5B: email/push 测试端点限流器前后复位——同测试内
|
||||
连发会被窗限流(这是被测行为),跨测试不隔离则前一脚打满的预算顶掉
|
||||
后脚的断言;注入的窗长/上限一并还原默认。"""
|
||||
from app.platform.routes.config_routes import _reset_test_limiter_for_test
|
||||
_reset_test_limiter_for_test()
|
||||
yield
|
||||
_reset_test_limiter_for_test()
|
||||
|
||||
|
||||
# ---- Phase 2 Task 10: FakeAI 公共确定性桩(清理单 #1) --------------------------
|
||||
# 收敛自四份拷贝(test_lead_email_trigger / test_cc_integration /
|
||||
# test_channel_hygiene / test_lead_push_wiring,接口取超集: 前两份全量,
|
||||
|
||||
Reference in New Issue
Block a user