179 lines
4.7 KiB
Python
179 lines
4.7 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Test Wrapper Client Validation
|
|
|
|
Simple test script to validate that the wrapper client works correctly
|
|
with the generated API client.
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
|
|
# Add tests directory to path
|
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
|
|
def test_imports():
|
|
"""Test that all imports work"""
|
|
print("Testing imports...")
|
|
try:
|
|
from generated_client import AuthenticatedClient, Client
|
|
|
|
print(" ✓ Generated client imports")
|
|
except ImportError as e:
|
|
print(f" ✗ Failed to import generated client: {e}")
|
|
return False
|
|
|
|
try:
|
|
from helpers import AttuneClient
|
|
|
|
print(" ✓ Wrapper client imports")
|
|
except ImportError as e:
|
|
print(f" ✗ Failed to import wrapper client: {e}")
|
|
return False
|
|
|
|
return True
|
|
|
|
|
|
def test_client_initialization():
|
|
"""Test client initialization"""
|
|
print("\nTesting client initialization...")
|
|
try:
|
|
from helpers import AttuneClient
|
|
|
|
# Test without auto-login
|
|
client = AttuneClient(
|
|
base_url="http://localhost:8080", timeout=30, auto_login=False
|
|
)
|
|
print(" ✓ Client initialized without auto-login")
|
|
|
|
# Check client properties
|
|
assert client.base_url == "http://localhost:8080"
|
|
assert client.timeout == 30
|
|
assert client.auth_client is None
|
|
print(" ✓ Client properties correct")
|
|
|
|
return True
|
|
except Exception as e:
|
|
print(f" ✗ Client initialization failed: {e}")
|
|
import traceback
|
|
|
|
traceback.print_exc()
|
|
return False
|
|
|
|
|
|
def test_models():
|
|
"""Test Pydantic model construction"""
|
|
print("\nTesting Pydantic models...")
|
|
try:
|
|
from generated_client.models.login_request import LoginRequest
|
|
|
|
request = LoginRequest(login="test@example.com", password="password123")
|
|
print(" ✓ LoginRequest model created")
|
|
|
|
# Test to_dict
|
|
data = request.to_dict()
|
|
assert data["login"] == "test@example.com"
|
|
assert data["password"] == "password123"
|
|
print(" ✓ Model to_dict() works")
|
|
|
|
return True
|
|
except Exception as e:
|
|
print(f" ✗ Model construction failed: {e}")
|
|
import traceback
|
|
|
|
traceback.print_exc()
|
|
return False
|
|
|
|
|
|
def test_health_check(api_url="http://localhost:8080"):
|
|
"""Test health check endpoint (doesn't require auth)"""
|
|
print(f"\nTesting health check against {api_url}...")
|
|
try:
|
|
from helpers import AttuneClient
|
|
|
|
client = AttuneClient(base_url=api_url, timeout=5, auto_login=False)
|
|
|
|
health = client.health()
|
|
print(f" ✓ Health check successful: {health}")
|
|
return True
|
|
except Exception as e:
|
|
print(f" ✗ Health check failed: {e}")
|
|
print(f" (This is expected if API is not running)")
|
|
return False
|
|
|
|
|
|
def test_to_dict_helper():
|
|
"""Test the to_dict conversion helper"""
|
|
print("\nTesting to_dict helper...")
|
|
try:
|
|
from helpers.client_wrapper import to_dict
|
|
|
|
# Test with dict
|
|
d = {"key": "value"}
|
|
assert to_dict(d) == d
|
|
print(" ✓ Dict passthrough works")
|
|
|
|
# Test with None
|
|
assert to_dict(None) is None
|
|
print(" ✓ None handling works")
|
|
|
|
# Test with list
|
|
lst = [{"a": 1}, {"b": 2}]
|
|
result = to_dict(lst)
|
|
assert result == lst
|
|
print(" ✓ List conversion works")
|
|
|
|
return True
|
|
except Exception as e:
|
|
print(f" ✗ to_dict helper failed: {e}")
|
|
import traceback
|
|
|
|
traceback.print_exc()
|
|
return False
|
|
|
|
|
|
def main():
|
|
"""Run all tests"""
|
|
print("=" * 60)
|
|
print("Wrapper Client Validation Tests")
|
|
print("=" * 60)
|
|
|
|
results = []
|
|
|
|
# Run tests
|
|
results.append(("Imports", test_imports()))
|
|
results.append(("Client Init", test_client_initialization()))
|
|
results.append(("Models", test_models()))
|
|
results.append(("to_dict Helper", test_to_dict_helper()))
|
|
|
|
# Only test health if API URL is provided
|
|
api_url = os.getenv("ATTUNE_API_URL", "http://localhost:8080")
|
|
if api_url:
|
|
results.append(("Health Check", test_health_check(api_url)))
|
|
|
|
# Summary
|
|
print("\n" + "=" * 60)
|
|
print("Test Summary")
|
|
print("=" * 60)
|
|
|
|
passed = sum(1 for _, result in results if result)
|
|
total = len(results)
|
|
|
|
for name, result in results:
|
|
status = "✓ PASS" if result else "✗ FAIL"
|
|
print(f"{status}: {name}")
|
|
|
|
print(f"\nResults: {passed}/{total} tests passed")
|
|
|
|
if passed == total:
|
|
print("\n✓ All tests passed!")
|
|
return 0
|
|
else:
|
|
print(f"\n✗ {total - passed} test(s) failed")
|
|
return 1
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|