Compare commits

...

1 Commits

Author SHA1 Message Date
xiaoxia 78c03e157b fix(test): 修复JWT篡改签名测试flaky - 改签名中间字符而非最后一位
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 9s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 29s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 25s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m6s
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 / Validate - Type Check (mypy) (pull_request) Successful in 1m11s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 24s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m28s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m50s
CI/CD Pipeline / Frontend Unit Tests (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 / 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 / PR Build API Image (pull_request) Successful in 5m42s
AI Code Review / AI Code Review (pull_request) Successful in 5m50s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m29s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m58s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 10m38s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 9s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 49m56s
2026-07-23 21:39:00 +08:00
+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)