kgraph-mcp-agent-platform / tests /test_utilities.py
BasalGanglia's picture
πŸ† Multi-Track Hackathon Submission
1f2d50a verified
"""Tests for utility functions and configurations."""
import os
import tempfile
from pathlib import Path
from create_env_example import env_content
class TestEnvironmentConfiguration:
"""Test environment configuration utilities."""
def test_env_example_content_structure(self):
"""Test .env.example content has required sections."""
# Check for major sections
assert "# API Keys" in env_content
assert "# Azure OpenAI" in env_content
assert "# Knowledge Graph Configuration" in env_content
assert "# Application Settings" in env_content
assert "# Gradio Configuration" in env_content
assert "# Security" in env_content
def test_env_example_required_variables(self):
"""Test .env.example contains required environment variables."""
required_vars = [
"OPENAI_API_KEY",
"APP_ENV",
"APP_PORT",
"GRADIO_SERVER_PORT",
"LOG_LEVEL",
]
for var in required_vars:
assert var in env_content
def test_env_example_no_real_secrets(self):
"""Test .env.example doesn't contain real secrets."""
# Should not contain actual API keys or secrets
assert "sk-" not in env_content # OpenAI API key prefix
assert "your_" in env_content # Contains placeholder prefixes
assert "localhost" in env_content # Uses local defaults
def test_env_example_creates_file(self):
"""Test create_env_example.py creates the file correctly."""
with tempfile.TemporaryDirectory() as temp_dir:
# Change to temp directory
original_cwd = Path.cwd()
try:
os.chdir(temp_dir)
# Execute the script functionality
with Path(".env.example").open("w") as f:
f.write(env_content)
# Verify file was created
env_file = Path(".env.example")
assert env_file.exists()
# Verify content
content = env_file.read_text()
assert "OPENAI_API_KEY" in content
assert "APP_ENV" in content
finally:
os.chdir(original_cwd)
class TestProjectStructure:
"""Test project structure and configuration."""
def test_required_directories_exist(self):
"""Test required project directories exist."""
required_dirs = ["agents", "kg_services", "tests", "data", "docs", "scripts"]
for dir_name in required_dirs:
assert Path(dir_name).exists(), f"Required directory {dir_name} not found"
def test_required_files_exist(self):
"""Test required project files exist."""
required_files = [
"app.py",
"simple_app.py",
"pyproject.toml",
"requirements.txt",
"README.md",
]
for file_name in required_files:
assert Path(file_name).exists(), f"Required file {file_name} not found"
def test_data_files_exist(self):
"""Test required data files exist."""
data_files = ["data/initial_tools.json", "data/initial_prompts.json"]
for file_name in data_files:
assert Path(file_name).exists(), f"Required data file {file_name} not found"
def test_init_files_exist(self):
"""Test __init__.py files exist in Python packages."""
init_files = [
"agents/__init__.py",
"kg_services/__init__.py",
"tests/__init__.py",
]
for file_name in init_files:
assert Path(
file_name
).exists(), f"Required __init__.py file {file_name} not found"
class TestConfigurationFiles:
"""Test configuration files are properly structured."""
def test_pyproject_toml_exists_and_valid(self):
"""Test pyproject.toml exists and has required sections."""
pyproject_path = Path("pyproject.toml")
assert pyproject_path.exists()
content = pyproject_path.read_text()
# Check for required sections
assert "[build-system]" in content
assert "[project]" in content
assert 'name = "kgraph-mcp"' in content
def test_requirements_files_exist(self):
"""Test requirements files exist."""
req_files = ["requirements.txt", "requirements-dev.txt"]
for file_name in req_files:
req_path = Path(file_name)
assert req_path.exists(), f"Requirements file {file_name} not found"
# Should not be empty
content = req_path.read_text().strip()
assert len(content) > 0, f"Requirements file {file_name} is empty"
def test_justfile_exists(self):
"""Test justfile exists for task automation."""
justfile_path = Path("justfile")
assert justfile_path.exists()
content = justfile_path.read_text()
# Check for common tasks
assert "test" in content
assert "lint" in content
assert "format" in content
class TestImportStructure:
"""Test that all modules can be imported without errors."""
def test_import_agents_module(self):
"""Test agents module can be imported."""
import agents
import agents.planner
# Should not raise any import errors
assert hasattr(agents.planner, "SimplePlannerAgent")
def test_import_kg_services_module(self):
"""Test kg_services module can be imported."""
import kg_services
import kg_services.embedder
import kg_services.knowledge_graph
import kg_services.ontology
# Should not raise any import errors
assert hasattr(kg_services.knowledge_graph, "InMemoryKG")
assert hasattr(kg_services.ontology, "MCPTool")
assert hasattr(kg_services.embedder, "EmbeddingService")
def test_import_main_apps(self):
"""Test main application files can be imported."""
import app
import simple_app
# Should not raise any import errors
assert hasattr(app, "app") # FastAPI instance
assert hasattr(simple_app, "app") # FastAPI instance