influencer_flow_back / quick_decision_test.py
saidinesh07's picture
Upload 116 files
a4a766c verified
#!/usr/bin/env python3
"""
🎯 Quick Decision API Test
Tests the improved error handling for expired/invalid decision IDs
"""
import requests
import asyncio
import logging
from datetime import datetime
# Configure logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def test_decision_endpoints():
"""Test decision endpoints with various scenarios"""
base_url = "http://localhost:8000"
print("🎯 Testing Decision API Error Handling")
print("=" * 50)
# Test 1: Valid decision ID (should fail gracefully if expired)
print("\n1. πŸ§ͺ Testing expired decision ID...")
expired_decision_id = "DEC-3FB627FB" # From the logs
try:
response = requests.get(f"{base_url}/api/decision/approve/{expired_decision_id}")
print(f" πŸ“Š Status Code: {response.status_code}")
print(f" πŸ“„ Content Type: {response.headers.get('content-type', 'unknown')}")
if response.status_code == 200:
print(" βœ… Graceful handling - User sees friendly error page")
# Check if it's HTML (user-friendly page)
if 'text/html' in response.headers.get('content-type', ''):
print(" 🎨 HTML response - User-friendly interface")
else:
print(" πŸ“ Non-HTML response")
else:
print(f" ❌ Error response: {response.status_code}")
except requests.exceptions.ConnectionError:
print(" ⚠️ Server not running - start with 'uvicorn main:app --reload --port 8000'")
return False
except Exception as e:
print(f" ❌ Unexpected error: {str(e)}")
return False
# Test 2: Invalid decision ID
print("\n2. πŸ§ͺ Testing invalid decision ID...")
invalid_decision_id = "DEC-INVALID123"
try:
response = requests.get(f"{base_url}/api/decision/approve/{invalid_decision_id}")
print(f" πŸ“Š Status Code: {response.status_code}")
if response.status_code == 200:
print(" βœ… Graceful handling - User sees friendly error page")
else:
print(f" ❌ Error response: {response.status_code}")
except Exception as e:
print(f" ❌ Error: {str(e)}")
# Test 3: Check pending decisions
print("\n3. πŸ§ͺ Testing pending decisions endpoint...")
try:
response = requests.get(f"{base_url}/api/decision/pending")
print(f" πŸ“Š Status Code: {response.status_code}")
if response.status_code == 200:
data = response.json()
pending_count = data.get('pending_decisions', {}).get('total_pending', 0)
print(f" πŸ“‹ Pending decisions: {pending_count}")
print(" βœ… Pending decisions endpoint working")
else:
print(f" ❌ Error response: {response.status_code}")
except Exception as e:
print(f" ❌ Error: {str(e)}")
print("\n" + "=" * 50)
print("βœ… Decision API error handling test completed!")
print("\nπŸ“– What this means:")
print(" β€’ Sponsors clicking expired links get friendly error pages")
print(" β€’ No more 'dict object is not callable' crashes")
print(" β€’ Clear explanations of what went wrong")
print(" β€’ Better user experience for decision workflows")
return True
if __name__ == "__main__":
print(f"πŸ• Test started at: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
success = test_decision_endpoints()
if success:
print("\nπŸŽ‰ All tests completed successfully!")
else:
print("\n❌ Some tests failed - check server status")