Files
dolibarr-mcp/test_ultra.py
2025-09-24 10:00:18 +02:00

128 lines
3.5 KiB
Python

"""Test the ultra-simple Dolibarr MCP server - zero compiled dependencies."""
import sys
import os
# Test imports without try/catch to see exactly what fails
print("Testing ultra-simple imports...")
print(f"Python version: {sys.version}")
print("")
# Test 1: Standard library
print("✅ Standard library imports:")
import json
import logging
import os
import sys
from typing import Dict, List, Optional, Any
print(" json, logging, os, sys, typing - OK")
# Test 2: Basic packages
print("✅ Basic package imports:")
try:
import requests
print(f" requests {requests.__version__} - OK")
except ImportError as e:
print(f" ❌ requests failed: {e}")
print(" Please run: setup_ultra.bat")
sys.exit(1)
try:
import dotenv
print(f" python-dotenv - OK")
except ImportError:
print(" ⚠️ python-dotenv not available, using manual .env loading")
try:
import click
print(f" click {click.__version__} - OK")
except ImportError:
print(" ⚠️ click not available, basic CLI will work")
print("")
# Test 3: Our ultra-simple modules
print("✅ Testing ultra-simple modules:")
# Add src to path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src'))
try:
from src.dolibarr_mcp.simple_client import SimpleConfig, SimpleDolibarrClient, SimpleDolibarrAPIError
print(" simple_client module - OK")
except ImportError as e:
print(f" ❌ simple_client failed: {e}")
sys.exit(1)
try:
from src.dolibarr_mcp.ultra_simple_server import UltraSimpleServer
print(" ultra_simple_server module - OK")
except ImportError as e:
print(f" ❌ ultra_simple_server failed: {e}")
sys.exit(1)
print("")
# Test 4: Configuration
print("✅ Testing configuration:")
try:
config = SimpleConfig()
print(f" URL: {config.dolibarr_url}")
print(f" API Key: {'*' * min(len(config.api_key), 10)}...")
print(" Configuration loading - OK")
except Exception as e:
print(f" ⚠️ Configuration error: {e}")
print("")
# Test 5: Server instantiation
print("✅ Testing server:")
try:
server = UltraSimpleServer("test-ultra")
tools = server.get_available_tools()
print(f" Server created - OK")
print(f" Available tools: {len(tools)}")
print(f" First few tools: {', '.join(tools[:5])}")
except Exception as e:
print(f" ❌ Server creation failed: {e}")
sys.exit(1)
print("")
# Test 6: Mock tool call (without actual API)
print("✅ Testing tool call structure:")
try:
# This will likely fail with an API error, but tests the structure
result = server.handle_tool_call("test_connection", {})
if "error" in result:
print(" Tool call structure - OK (API error expected)")
print(f" Error type: {result.get('type', 'unknown')}")
else:
print(" Tool call structure - OK")
print(f" Result: {result}")
except Exception as e:
print(f" ❌ Tool call structure failed: {e}")
sys.exit(1)
print("")
print("=" * 60)
print("🎉 ALL TESTS PASSED!")
print("=" * 60)
print("")
print("✅ Ultra-simple server is ready to run")
print("✅ Zero compiled extensions - maximum Windows compatibility")
print("✅ Only pure Python libraries used")
print("")
print("🚀 To run the server:")
print(" .\\run_ultra.bat")
print("")
print("🧪 To run interactively:")
print(" python -m src.dolibarr_mcp.ultra_simple_server")
print("")
# Cleanup
if hasattr(server, 'client') and server.client:
server.client.close()
print("Test completed successfully!")