From 3b040e6bed9ccb3fa7e207d7527af765efcefa54 Mon Sep 17 00:00:00 2001 From: Asuka Minato Date: Tue, 28 Jul 2026 15:37:45 +0900 Subject: [PATCH] test: use sqlite3 session in test_web_login (#38725) Co-authored-by: Byron.wang Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- .../controllers/web/test_web_login.py | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/api/tests/unit_tests/controllers/web/test_web_login.py b/api/tests/unit_tests/controllers/web/test_web_login.py index 2ccb6b832fc..d05f135a712 100644 --- a/api/tests/unit_tests/controllers/web/test_web_login.py +++ b/api/tests/unit_tests/controllers/web/test_web_login.py @@ -6,13 +6,19 @@ from unittest.mock import ANY, MagicMock, patch import pytest from flask import Flask from jwt import InvalidTokenError +from sqlalchemy.engine import Engine +from sqlalchemy.orm import Session, scoped_session, sessionmaker from werkzeug.exceptions import Unauthorized import services.errors.account +from controllers.console import wraps as console_wraps from controllers.web.login import EmailCodeLoginApi, EmailCodeLoginSendEmailApi, LoginApi, LoginStatusApi, LogoutApi from enums.deployment_edition import DeploymentEdition +from models.model import DifySetup from services.entities.auth_entities import LoginFailureReason +pytestmark = pytest.mark.parametrize("sqlite_session", [(DifySetup,)], indirect=True) + def encode_code(code: str) -> str: return base64.b64encode(code.encode("utf-8")).decode() @@ -33,17 +39,27 @@ def app(): @pytest.fixture(autouse=True) -def _patch_wraps(): +def _patch_wraps( + monkeypatch: pytest.MonkeyPatch, + sqlite_engine: Engine, + sqlite_session: Session, +): wraps_features = SimpleNamespace(enable_email_password_login=True) console_dify = SimpleNamespace(ENTERPRISE_ENABLED=True, DEPLOYMENT_EDITION=DeploymentEdition.CLOUD) web_dify = SimpleNamespace(ENTERPRISE_ENABLED=True) + sqlite_session.add(DifySetup(version="test")) + sqlite_session.commit() + console_wraps._is_setup_completed.reset_success() + session_registry = scoped_session(sessionmaker(bind=sqlite_engine, expire_on_commit=False)) + monkeypatch.setattr(console_wraps.db, "session", session_registry) with ( - patch("controllers.console.wraps.db") as mock_db, patch("controllers.console.wraps.dify_config", console_dify), patch("controllers.console.wraps.FeatureService.get_system_features", return_value=wraps_features), patch("controllers.web.login.dify_config", web_dify), ): yield + session_registry.remove() + console_wraps._is_setup_completed.reset_success() class TestEmailCodeLoginSendEmailApi: