Make .env optional in tests and prevent endpoint resolver stubs from leaking into model route tests.
99 lines
3.8 KiB
Python
99 lines
3.8 KiB
Python
"""
|
|
Basic tests for odysseus-ui application structure
|
|
"""
|
|
import pytest
|
|
import sys
|
|
import os
|
|
|
|
# Add the project root to the path
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
|
|
class TestAppStructure:
|
|
"""Test that required modules and files exist"""
|
|
|
|
def test_app_file_exists(self):
|
|
"""Test that app.py exists"""
|
|
app_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "app.py")
|
|
assert os.path.exists(app_path), "app.py should exist"
|
|
|
|
def test_static_directory_exists(self):
|
|
"""Test that static directory exists"""
|
|
static_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "static")
|
|
assert os.path.exists(static_path), "static directory should exist"
|
|
|
|
def test_routes_directory_exists(self):
|
|
"""Test that routes directory exists"""
|
|
routes_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "routes")
|
|
assert os.path.exists(routes_path), "routes directory should exist"
|
|
|
|
def test_src_directory_exists(self):
|
|
"""Test that src directory exists"""
|
|
src_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "src")
|
|
assert os.path.exists(src_path), "src directory should exist"
|
|
|
|
def test_env_file_is_optional_and_ignored(self):
|
|
"""A fresh checkout should not require a private .env file."""
|
|
root = os.path.dirname(os.path.dirname(__file__))
|
|
gitignore_path = os.path.join(root, ".gitignore")
|
|
with open(gitignore_path, encoding="utf-8") as fh:
|
|
ignored = {line.strip() for line in fh}
|
|
assert ".env" in ignored, ".env should stay local and ignored"
|
|
|
|
def test_env_example_exists(self):
|
|
"""Test that .env.example exists"""
|
|
env_example_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), ".env.example")
|
|
assert os.path.exists(env_example_path), ".env.example file should exist"
|
|
|
|
|
|
class TestImports:
|
|
"""Test that key modules can be imported"""
|
|
|
|
def test_constants_importable(self):
|
|
"""Test that constants module is importable"""
|
|
from src.constants import BASE_DIR, STATIC_DIR, SESSIONS_FILE, MEMORY_FILE
|
|
assert BASE_DIR is not None
|
|
assert STATIC_DIR is not None
|
|
|
|
def test_app_helpers_importable(self):
|
|
"""Test that app_helpers module is importable"""
|
|
from src.app_helpers import abs_join
|
|
assert callable(abs_join)
|
|
|
|
def test_exceptions_importable(self):
|
|
"""Test that exceptions module is importable"""
|
|
from src.exceptions import (
|
|
SessionNotFoundError,
|
|
InvalidFileUploadError,
|
|
LLMServiceError,
|
|
WebSearchError,
|
|
)
|
|
# These should be exception classes
|
|
assert issubclass(SessionNotFoundError, Exception)
|
|
|
|
|
|
class TestRouteFiles:
|
|
"""Test that route files exist and have proper structure"""
|
|
|
|
def test_auth_routes_exist(self):
|
|
"""Test auth_routes.py exists"""
|
|
routes_path = os.path.dirname(os.path.dirname(__file__))
|
|
auth_routes = os.path.join(routes_path, "routes", "auth_routes.py")
|
|
assert os.path.exists(auth_routes), "auth_routes.py should exist"
|
|
|
|
def test_chat_routes_exist(self):
|
|
"""Test chat_routes.py exists"""
|
|
routes_path = os.path.dirname(os.path.dirname(__file__))
|
|
chat_routes = os.path.join(routes_path, "routes", "chat_routes.py")
|
|
assert os.path.exists(chat_routes), "chat_routes.py should exist"
|
|
|
|
def test_memory_routes_exist(self):
|
|
"""Test memory_routes.py exists"""
|
|
routes_path = os.path.dirname(os.path.dirname(__file__))
|
|
mem_routes = os.path.join(routes_path, "routes", "memory_routes.py")
|
|
assert os.path.exists(mem_routes), "memory_routes.py should exist"
|
|
|
|
|
|
if __name__ == "__main__":
|
|
pytest.main([__file__, "-v"])
|