re-uploading work
This commit is contained in:
178
tests/test_wrapper_client.py
Normal file
178
tests/test_wrapper_client.py
Normal file
@@ -0,0 +1,178 @@
|
||||
#!/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())
|
||||
Reference in New Issue
Block a user