diff --git a/tests/conftest.py b/tests/conftest.py index 050f3bb..a43e9e6 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,5 +1,6 @@ """Pytest configuration and shared fixtures for Library Desk tests.""" +import os import pytest import pytest_asyncio from typing import AsyncGenerator @@ -7,6 +8,9 @@ from typing import AsyncGenerator # Test configuration pytest_plugins = ("pytest_asyncio",) +# Use real host for tests (services available at this IP) +TEST_HOST = os.environ.get("TEST_HOST", "192.168.86.149") + @pytest.fixture def test_user() -> str: @@ -17,49 +21,56 @@ def test_user() -> str: @pytest.fixture def neo4j_test_uri() -> str: """Test Neo4j URI.""" - return "bolt://neo4j:7687" + return f"bolt://{TEST_HOST}:7687" @pytest.fixture def neo4j_test_auth() -> tuple: """Test Neo4j authentication.""" - return ("neo4j", "test_password") + from src.config import get_settings + settings = get_settings() + return ("neo4j", settings.neo4j_password) @pytest.fixture def qdrant_test_url() -> str: """Test Qdrant URL.""" - return "http://qdrant:6333" + return f"http://{TEST_HOST}:6333" @pytest.fixture def wikijs_test_config() -> dict: """Test Wiki.js configuration.""" + from src.config import get_settings + settings = get_settings() return { - "base_url": "http://wiki:3000", - "api_key": "test_api_key" + "base_url": f"http://{TEST_HOST}:3000", + "username": settings.wikijs_username, + "password": settings.wikijs_password } @pytest.fixture def searxng_test_url() -> str: """Test SearXNG URL.""" - return "http://searxng:8080" + return f"http://{TEST_HOST}:8080" @pytest.fixture def ollama_test_config() -> dict: """Test Ollama configuration.""" + from src.config import get_settings + settings = get_settings() return { - "base_url": "http://ollama:11434", - "model": "nomic-embed-text" + "base_url": f"http://{TEST_HOST}:11434", + "model": settings.ollama_embedding_model } @pytest.fixture def redis_test_url() -> str: """Test Redis URL.""" - return "redis://redis-shared:6379/4" + return f"redis://{TEST_HOST}:6379/4" @pytest.fixture diff --git a/tests/test_entity_linking.py b/tests/test_entity_linking.py index 6ad6b45..fc6ec40 100644 --- a/tests/test_entity_linking.py +++ b/tests/test_entity_linking.py @@ -38,10 +38,10 @@ def settings(): @pytest_asyncio.fixture -async def neo4j_client(settings) -> AsyncGenerator[Neo4jClient, None]: +async def neo4j_client(settings, neo4j_test_uri) -> AsyncGenerator[Neo4jClient, None]: """Get connected Neo4j client.""" client = Neo4jClient( - uri=settings.neo4j_uri, + uri=neo4j_test_uri, user=settings.neo4j_user, password=settings.neo4j_password ) @@ -51,12 +51,12 @@ async def neo4j_client(settings) -> AsyncGenerator[Neo4jClient, None]: @pytest_asyncio.fixture -async def wiki_client(settings) -> AsyncGenerator[WikiJSClient, None]: +async def wiki_client(wikijs_test_config) -> AsyncGenerator[WikiJSClient, None]: """Get Wiki.js client.""" client = WikiJSClient( - base_url=settings.wikijs_url, - username=settings.wikijs_username, - password=settings.wikijs_password + base_url=wikijs_test_config["base_url"], + username=wikijs_test_config["username"], + password=wikijs_test_config["password"] ) yield client diff --git a/tests/test_hybrid_rag.py b/tests/test_hybrid_rag.py index 19a517b..bc5ee93 100644 --- a/tests/test_hybrid_rag.py +++ b/tests/test_hybrid_rag.py @@ -43,10 +43,10 @@ def settings(): @pytest_asyncio.fixture -async def neo4j_client(settings) -> AsyncGenerator[Neo4jClient, None]: +async def neo4j_client(settings, neo4j_test_uri) -> AsyncGenerator[Neo4jClient, None]: """Get connected Neo4j client.""" client = Neo4jClient( - uri=settings.neo4j_uri, + uri=neo4j_test_uri, user=settings.neo4j_user, password=settings.neo4j_password ) @@ -56,32 +56,35 @@ async def neo4j_client(settings) -> AsyncGenerator[Neo4jClient, None]: @pytest.fixture -def qdrant_client(settings) -> QdrantClientWrapper: +def qdrant_client(qdrant_test_url) -> QdrantClientWrapper: """Get Qdrant client.""" - return QdrantClientWrapper(url=settings.qdrant_url) + return QdrantClientWrapper(url=qdrant_test_url) @pytest_asyncio.fixture -async def wiki_client(settings) -> AsyncGenerator[WikiJSClient, None]: +async def wiki_client(wikijs_test_config) -> AsyncGenerator[WikiJSClient, None]: """Get Wiki.js client.""" client = WikiJSClient( - base_url=settings.wikijs_url, - username=settings.wikijs_username, - password=settings.wikijs_password + base_url=wikijs_test_config["base_url"], + username=wikijs_test_config["username"], + password=wikijs_test_config["password"] ) yield client @pytest.fixture -def searxng_client(settings) -> SearXNGClient: +def searxng_client(searxng_test_url) -> SearXNGClient: """Get SearXNG client.""" - return SearXNGClient(base_url=settings.searxng_url) + return SearXNGClient(base_url=searxng_test_url) @pytest.fixture -def ollama_client(settings) -> OllamaClient: +def ollama_client(ollama_test_config) -> OllamaClient: """Get Ollama client.""" - return OllamaClient(base_url=settings.ollama_url) + return OllamaClient( + base_url=ollama_test_config["base_url"], + model=ollama_test_config["model"] + ) @pytest.fixture diff --git a/tests/test_integration.py b/tests/test_integration.py index 34f3937..7517417 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -30,10 +30,10 @@ def settings(): @pytest_asyncio.fixture -async def neo4j_client(settings) -> AsyncGenerator[Neo4jClient, None]: +async def neo4j_client(settings, neo4j_test_uri) -> AsyncGenerator[Neo4jClient, None]: """Get connected Neo4j client.""" client = Neo4jClient( - uri=settings.neo4j_uri, + uri=neo4j_test_uri, user=settings.neo4j_user, password=settings.neo4j_password ) @@ -43,45 +43,46 @@ async def neo4j_client(settings) -> AsyncGenerator[Neo4jClient, None]: @pytest.fixture -def qdrant_client(settings) -> QdrantClientWrapper: +def qdrant_client(settings, qdrant_test_url) -> QdrantClientWrapper: """Get Qdrant client.""" - return QdrantClientWrapper(url=settings.qdrant_url) + return QdrantClientWrapper(url=qdrant_test_url) @pytest_asyncio.fixture -async def wikijs_client(settings) -> AsyncGenerator[WikiJSClient, None]: +async def wikijs_client(wikijs_test_config) -> AsyncGenerator[WikiJSClient, None]: """Get Wiki.js client.""" client = WikiJSClient( - base_url=settings.wikijs_url, - api_key=settings.wikijs_api_key + base_url=wikijs_test_config["base_url"], + username=wikijs_test_config["username"], + password=wikijs_test_config["password"] ) yield client await client.close() @pytest_asyncio.fixture -async def searxng_client(settings) -> AsyncGenerator[SearXNGClient, None]: +async def searxng_client(searxng_test_url) -> AsyncGenerator[SearXNGClient, None]: """Get SearXNG client.""" - client = SearXNGClient(base_url=settings.searxng_url) + client = SearXNGClient(base_url=searxng_test_url) yield client await client.close() @pytest_asyncio.fixture -async def ollama_client(settings) -> AsyncGenerator[OllamaClient, None]: - """Get Ollama client.""" +async def ollama_client(ollama_test_config) -> AsyncGenerator[OllamaClient, None]: + """Get Ollama client for embeddings.""" client = OllamaClient( - base_url=settings.ollama_url, - model=settings.ollama_model + base_url=ollama_test_config["base_url"], + model=ollama_test_config["model"] ) yield client await client.close() @pytest_asyncio.fixture -async def job_manager(settings) -> AsyncGenerator[JobManager, None]: +async def job_manager(redis_test_url) -> AsyncGenerator[JobManager, None]: """Get job manager.""" - manager = JobManager(redis_url=settings.redis_url) + manager = JobManager(redis_url=redis_test_url) await manager.connect() yield manager await manager.close()