fix(test): 修复JWT篡改签名测试flaky - 改签名中间字符而非最后一位
AI Code Review / AI Code Review (pull_request) Successful in 2m12s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 24s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m15s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 12m43s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 27s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 53s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m11s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m32s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m37s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m26s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m53s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m26s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 4m10s
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled

This commit is contained in:
2026-07-23 19:42:47 +08:00
parent 3e621bee2c
commit 0965faadf5
+9 -2
View File
@@ -458,8 +458,15 @@ class TestJWTService:
def test_verify_token_tampered_signature(self, service):
"""篡改签名的token无法验证"""
token = service.create_access_token(user_id="user_123")
# 篡改最后一个字符
tampered = token[:-1] + ("A" if token[-1] != "A" else "B")
# 篡改签名部分中间的字符(JWT格式: header.payload.signature
# 改最后一个字符不可靠(可能是padding),改签名中间确保验证失败
parts = token.rsplit(".", 1)
assert len(parts) == 2, "JWT格式不对,应该有两个点分隔三部分"
signature = parts[1]
# 篡改签名中间的几个字符
mid = len(signature) // 2
tampered_sig = signature[:mid] + ("X" if signature[mid] != "X" else "Y") + signature[mid + 1 :]
tampered = parts[0] + "." + tampered_sig
with pytest.raises(InvalidTokenError):
service.verify_token(tampered)