diff --git a/backend/tests/unit/test_auth_redirect_uri.py b/backend/tests/unit/test_auth_redirect_uri.py index f5a2692d49..10f4f2986c 100644 --- a/backend/tests/unit/test_auth_redirect_uri.py +++ b/backend/tests/unit/test_auth_redirect_uri.py @@ -20,6 +20,7 @@ from __future__ import annotations +import importlib.util import os import sys import types @@ -41,6 +42,7 @@ # Pre-mock heavy deps before importing the module under test (Python 3.9 compat — # database.redis_db uses dict | None syntax that requires 3.10+). BACKEND_DIR = Path(__file__).resolve().parents[2] +_BACKEND_DIR = str(BACKEND_DIR) def _ensure_package(name, path): @@ -87,6 +89,31 @@ def _install_module(name): log_sanitizer_stub = _install_module("utils.log_sanitizer") log_sanitizer_stub.sanitize = MagicMock(side_effect=lambda value: value) +jwt_stub = _install_module("jwt") +jwt_algorithms_stub = _install_module("jwt.algorithms") +jwt_algorithms_stub.RSAAlgorithm = MagicMock() + +_redis_db_mod = sys.modules['database.redis_db'] +for name in ['set_auth_session', 'get_auth_session', 'set_auth_code', 'get_auth_code', 'delete_auth_code']: + if not hasattr(_redis_db_mod, name): + setattr(_redis_db_mod, name, MagicMock()) + +_firebase_admin_mod = types.ModuleType('firebase_admin') +_firebase_admin_mod.auth = sys.modules['firebase_admin.auth'] +sys.modules.setdefault('firebase_admin', _firebase_admin_mod) + + +def _install_python_multipart_stub(): + if 'python_multipart' in sys.modules: + return False + if importlib.util.find_spec('python_multipart') is not None: + return False + + mod = types.ModuleType('python_multipart') + mod.__version__ = '0.0.20' + sys.modules['python_multipart'] = mod + return True + try: import jinja2 # noqa: F401 @@ -100,7 +127,16 @@ def _install_module(name): if str(BACKEND_DIR) not in sys.path: sys.path.insert(0, str(BACKEND_DIR)) -from routers.auth import _validate_redirect_uri # noqa: E402 +_utils_pkg = sys.modules.get('utils') +if _utils_pkg is not None: + _utils_pkg.__path__ = [os.path.join(_BACKEND_DIR, 'utils')] + +_remove_python_multipart_stub = _install_python_multipart_stub() +try: + from routers.auth import _validate_redirect_uri # noqa: E402 +finally: + if _remove_python_multipart_stub: + sys.modules.pop('python_multipart', None) # --------------------------------------------------------------------------- # Acceptance — every shape an existing Omi client uses