feat: 支持按需触发短信图形验证

This commit is contained in:
2026-07-10 17:02:50 +08:00
parent 1ab834733e
commit 808ba74fc5
4 changed files with 64 additions and 4 deletions

View File

@@ -21,6 +21,7 @@ from app.services.chat_queue_service import ChatQueueConfig, QueueRequest
from app.services.chat_service import ChatService
from app.services.secret_service import ENCRYPTED_PREFIX, MASKED_SECRET, SecretService
from app.services.security_state_service import SecurityStateService
from app.services.auth_service import AuthService
from app.core.observability import RequestObservabilityMiddleware
@@ -145,3 +146,22 @@ def test_readiness_reports_dependency_state(monkeypatch):
result = health.ready()
assert result["data"]["status"] == "ready"
assert result["data"]["checks"] == {"database": True, "redis": True}
def test_sms_captcha_is_required_only_after_first_send(monkeypatch):
engine = create_engine(
"sqlite:///:memory:",
connect_args={"check_same_thread": False},
poolclass=StaticPool,
)
Base.metadata.create_all(engine)
monkeypatch.setattr("app.services.auth_service.SmsCodeService.send_code", lambda *_args: None)
monkeypatch.setattr("app.services.auth_service.CaptchaService.verify", lambda *_args: None)
with Session(engine) as db:
db.add(User(id=2, phone="13800000002", name="按需验证用户", daily_chat_limit=10, daily_chat_used=0))
db.commit()
AuthService.send_sms_code(db, "13800000002", None, None, "127.0.0.1")
with pytest.raises(HTTPException) as exc:
AuthService.send_sms_code(db, "13800000002", None, None, "127.0.0.1")
assert exc.value.status_code == 428