fix(api): cap weekly gitea stats readback
All checks were successful
Code Review / ai-code-review (push) Successful in 14s
CD Pipeline / tests (push) Successful in 1m51s
CD Pipeline / build-and-deploy (push) Successful in 3m46s
CD Pipeline / post-deploy-checks (push) Successful in 1m45s

This commit is contained in:
Your Name
2026-06-27 16:31:42 +08:00
parent 88304b2538
commit b93daa581a
2 changed files with 52 additions and 2 deletions

View File

@@ -138,6 +138,8 @@ class TestWeeklyReportGitStats:
]
class Response:
headers = {}
def __enter__(self):
return self
@@ -165,6 +167,41 @@ class TestWeeklyReportGitStats:
assert deploys == 2
assert source_ok is True
def test_gitea_commit_stats_uses_total_header_with_limited_scan(self, monkeypatch):
payload = [{"commit": {"message": "fix(api): one\n"}} for _ in range(50)]
calls = []
class Response:
headers = {"X-Total-Count": "4804"}
def __enter__(self):
return self
def __exit__(self, *_args):
return None
def read(self):
return weekly_report_module.json.dumps(payload).encode("utf-8")
def fake_urlopen(request, timeout):
calls.append(request.full_url)
return Response()
monkeypatch.setattr(weekly_report_module, "urlopen", fake_urlopen)
monkeypatch.setattr(weekly_report_module.settings, "GITEA_API_URL", "https://gitea.example.test")
monkeypatch.setattr(weekly_report_module.settings, "GITEA_REPO_OWNER", "wooo")
monkeypatch.setattr(weekly_report_module.settings, "GITEA_REPO_NAME", "awoooi")
monkeypatch.setattr(weekly_report_module.settings, "GITEA_API_TOKEN", "")
svc = WeeklyReportService(stats_service=object(), k3s_monitor=object())
monkeypatch.setattr(svc, "_gitea_api_candidates", lambda: ["https://gitea.example.test"])
commits, deploys, source_ok = svc._get_gitea_commit_stats(datetime.now(_TZ_TAIPEI))
assert commits == 4804
assert deploys == 0
assert source_ok is True
assert len(calls) == 4
# =============================================================================
# DailyKpi 計算屬性