test : add unit tests for ScanRateLimiter helpers in rate_limiter

未关闭
#2,323 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

@aaniya22 已经在做这个了。

开始于 2026年7月29日。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
35/100
Issue 类型
功能
描述清晰度
描述清楚
活跃度
冷清
技术栈
fastapi, python
领域
security, testing

调研方向

Start with backend/secuscan/rate_limiter.py and read the existing unit test conventions under testing/backend/unit/. Add testing/backend/unit/test_rate_limiter_scan_rate_limiter.py to cover the listed helpers and check() cases, then run that test file. Done means each specified behavior and factory argument is verified; the issue says the work is already being handled by tmdeveloper007.

由索引模型根据 Issue 内容生成。

描述

Summary of What Needs to be Done:
The backend/secuscan/rate_limiter.py module (containing ScanRateLimiter, RateLimitExceeded, make_scan_rate_limiter) has no dedicated test file. Add unit tests covering the core helper methods.

Changes that Need to be Made:

  • Add a new test file: testing/backend/unit/test_rate_limiter_scan_rate_limiter.py
  • Test ScanRateLimiter._get_client_ip(): X-Forwarded-For, X-Real-IP, direct client.host, None client
  • Test ScanRateLimiter._make_key(): key namespace construction
  • Test ScanRateLimiter.reset(): clears fallback history and redis_failed flag
  • Test ScanRateLimiter.check() with rate_limit=0 (early return)
  • Test ScanRateLimiter.check() with redis_client=None (in-memory fallback path)
  • Test ScanRateLimiter.check() per-minute and per-hour limit enforcement
  • Test make_scan_rate_limiter factory preserves all arguments

Impact that it would Provide:

  • Reliability: Rate limiter IP extraction, key generation, and fallback logic are verified
  • Security: Ensures rate limiting cannot be bypassed
  • Testing coverage: Fills a gap in the untested rate_limiter module

Note: This task is being handled by tmdeveloper007 — please assign to that account when picking it up.

主要语言
Python
星标
36
派生
234
PR 合并指标
30 天内没有已合并 PR

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

utksh1/SecuScan 的其他 Issue

查看 utksh1/SecuScan 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。