fix(test): 修复JWT篡改签名测试flaky - 改签名中间字符而非最后一位 #770

Merged
xiaoxia merged 1 commits from fix/jwt-tampered-test-flaky into develop 2026-07-23 21:52:01 +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)