#!/usr/bin/env python3
"""Test /payouts endpoint specifically to verify fix"""

import requests
import json
from datetime import datetime

def test_payouts_endpoint():
    base_url = "https://rateright-au.fly.dev"
    results = {
        "timestamp": datetime.now().isoformat(),
        "url": base_url,
        "endpoints_tested": [],
        "summary": {"passed": 0, "failed": 0, "errors": 0}
    }
    
    print("=" * 60)
    print("PAYOUTS ENDPOINT TEST")
    print(f"Target: {base_url}")
    print(f"Time: {results['timestamp']}")
    print("=" * 60)
    
    # Test /payouts endpoint
    endpoint = "/payouts"
    url = f"{base_url}{endpoint}"
    
    try:
        response = requests.get(url, timeout=10, allow_redirects=True)
        status = response.status_code
        
        result = {
            "endpoint": endpoint,
            "url": url,
            "status_code": status,
            "success": status not in [500, 502, 503, 504]
        }
        
        if status == 500:
            print(f"❌ {endpoint}: {status} - INTERNAL SERVER ERROR")
            results["summary"]["errors"] += 1
        elif status == 404:
            print(f"⚠️ {endpoint}: {status} - NOT FOUND")
            results["summary"]["failed"] += 1
        elif status in [301, 302]:
            print(f"↪️ {endpoint}: {status} - REDIRECT to {response.headers.get('Location', 'unknown')}")
            results["summary"]["passed"] += 1
        elif status == 200:
            print(f"✅ {endpoint}: {status} - OK")
            results["summary"]["passed"] += 1
        else:
            print(f"❓ {endpoint}: {status} - UNEXPECTED STATUS")
            results["summary"]["failed"] += 1
            
        results["endpoints_tested"].append(result)
        
    except Exception as e:
        print(f"❌ {endpoint}: ERROR - {str(e)}")
        results["endpoints_tested"].append({
            "endpoint": endpoint,
            "url": url,
            "error": str(e),
            "success": False
        })
        results["summary"]["errors"] += 1
    
    # Save results
    output_file = "evidence/fly/05_payouts_test.json"
    with open(output_file, 'w') as f:
        json.dump(results, f, indent=2)
    
    print("\n" + "=" * 60)
    print("SUMMARY:")
    print(f"✅ Passed: {results['summary']['passed']}")
    print(f"❌ Failed: {results['summary']['failed']}")
    print(f"🔥 Errors: {results['summary']['errors']}")
    print(f"\nResults saved to: {output_file}")
    
    # Return success if no 500 errors
    if results["summary"]["errors"] == 0:
        print("\n✅ SUCCESS: No 500 errors on /payouts!")
        return True
    else:
        print("\n❌ FAILED: 500 error still present on /payouts")
        return False

if __name__ == "__main__":
    success = test_payouts_endpoint()
    exit(0 if success else 1)
