fix(ci): auto-fix lint/format issues
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 0s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 0s
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 0s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (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 / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 48s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m1s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m5s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 1m11s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m17s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m59s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m59s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Successful in 1m8s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m28s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 4m27s
AI Code Review / AI Code Review (pull_request) Successful in 5m3s

This commit is contained in:
2026-07-22 16:27:49 +08:00
parent 60d6e8efa5
commit a0c475ee9f
+22 -13
View File
@@ -12,10 +12,14 @@ import pytest
import jwt as pyjwt
from jwt.exceptions import ExpiredSignatureError, InvalidTokenError
from packages.application.auth.password_hasher import PasswordHasher, PasswordValidator, password_hasher, password_validator
from packages.application.auth.password_hasher import (
PasswordHasher,
PasswordValidator,
password_hasher,
password_validator,
)
from packages.application.auth.jwt_service import JWTConfig, JWTService, TokenType
# ── PasswordHasher 测试 ──────────────────────────────────────────────────────
@@ -226,8 +230,10 @@ class TestPasswordValidator:
def test_special_chars_all_types(self):
"""验证各种特殊字符都能识别"""
v = PasswordValidator(
min_length=8, require_uppercase=False,
require_lowercase=False, require_digit=False,
min_length=8,
require_uppercase=False,
require_lowercase=False,
require_digit=False,
require_special=True,
)
for char in "!@#$%^&*()_+-=[]{}|;:,.<>?~":
@@ -289,15 +295,18 @@ class TestJWTConfig:
with pytest.raises(ValueError):
JWTConfig(secret_key=None)
@pytest.mark.parametrize("insecure", [
"your-secret-key-change-in-production",
"your-secret-key",
"secret",
"changeme",
"password",
"SECRET",
"Your-Secret-Key",
])
@pytest.mark.parametrize(
"insecure",
[
"your-secret-key-change-in-production",
"your-secret-key",
"secret",
"changeme",
"password",
"SECRET",
"Your-Secret-Key",
],
)
def test_insecure_defaults_raises(self, insecure):
with pytest.raises(ValueError, match="insecure"):
JWTConfig(secret_key=insecure)