mirror of
https://github.com/langgenius/dify.git
synced 2026-05-01 10:00:11 -04:00
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: WH-2099 <wh2099@pm.me>
84 lines
2.1 KiB
Python
84 lines
2.1 KiB
Python
"""Shared fixtures for controllers.web unit tests."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from types import SimpleNamespace
|
|
from typing import Any
|
|
|
|
import pytest
|
|
from flask import Flask
|
|
|
|
|
|
@pytest.fixture
|
|
def app() -> Flask:
|
|
"""Minimal Flask app for request contexts."""
|
|
flask_app = Flask(__name__)
|
|
flask_app.config["TESTING"] = True
|
|
return flask_app
|
|
|
|
|
|
class FakeSession:
|
|
"""Stand-in for db.session that returns pre-seeded objects by model class name."""
|
|
|
|
def __init__(self, mapping: dict[str, Any] | None = None):
|
|
self._mapping: dict[str, Any] = mapping or {}
|
|
|
|
def get(self, model: type, _ident: object) -> Any:
|
|
return self._mapping.get(model.__name__)
|
|
|
|
def scalar(self, stmt: Any) -> Any:
|
|
try:
|
|
model = stmt.column_descriptions[0]["entity"]
|
|
except (AttributeError, IndexError, KeyError, TypeError):
|
|
return None
|
|
return self._mapping.get(model.__name__)
|
|
|
|
|
|
class FakeDB:
|
|
"""Minimal db stub exposing engine and session."""
|
|
|
|
def __init__(self, session: FakeSession | None = None):
|
|
self.session = session or FakeSession()
|
|
self.engine = object()
|
|
|
|
|
|
def make_app_model(
|
|
*,
|
|
app_id: str = "app-1",
|
|
tenant_id: str = "tenant-1",
|
|
mode: str = "chat",
|
|
enable_site: bool = True,
|
|
status: str = "normal",
|
|
) -> SimpleNamespace:
|
|
"""Build a fake App model with common defaults."""
|
|
tenant = SimpleNamespace(
|
|
id=tenant_id,
|
|
status="normal",
|
|
plan="basic",
|
|
custom_config_dict={},
|
|
)
|
|
return SimpleNamespace(
|
|
id=app_id,
|
|
tenant_id=tenant_id,
|
|
tenant=tenant,
|
|
mode=mode,
|
|
enable_site=enable_site,
|
|
status=status,
|
|
workflow=None,
|
|
app_model_config=None,
|
|
)
|
|
|
|
|
|
def make_end_user(
|
|
*,
|
|
user_id: str = "end-user-1",
|
|
session_id: str = "session-1",
|
|
external_user_id: str = "ext-user-1",
|
|
) -> SimpleNamespace:
|
|
"""Build a fake EndUser model with common defaults."""
|
|
return SimpleNamespace(
|
|
id=user_id,
|
|
session_id=session_id,
|
|
external_user_id=external_user_id,
|
|
)
|