#!/usr/bin/env python3
"""
Test LAN access for new shipping pages after fixing hardcoded URLs
"""
import requests
import json
import os

# Disable proxy
os.environ['NO_PROXY'] = 'localhost,127.0.0.1,192.168.0.2'
os.environ['no_proxy'] = 'localhost,127.0.0.1,192.168.0.2'

# Test both localhost and LAN IP
BASE_URLS = [
    "http://localhost:8000",
    "http://192.168.0.2:8000"  # Your LAN IP from the frontend output
]

def test_api_access():
    """Test API access from both localhost and LAN"""

    endpoints = [
        "/api/v1/new-shipping/statistics",
        "/api/v1/new-shipping/upload-batches?limit=10"
    ]

    for base_url in BASE_URLS:
        print(f"\n🌐 Testing {base_url}")
        print("=" * 50)

        for endpoint in endpoints:
            url = f"{base_url}{endpoint}"
            try:
                response = requests.get(
                    url,
                    timeout=5,
                    proxies={'http': None, 'https': None}
                )

                if response.status_code == 200:
                    print(f"✅ {endpoint}: Success")
                    data = response.json()
                    if 'success' in data:
                        print(f"   Response success: {data['success']}")
                else:
                    print(f"❌ {endpoint}: Status {response.status_code}")

            except requests.exceptions.ConnectionError:
                print(f"❌ {endpoint}: Connection refused")
            except requests.exceptions.Timeout:
                print(f"❌ {endpoint}: Timeout")
            except Exception as e:
                print(f"❌ {endpoint}: {str(e)}")

def test_pending_orders():
    """Test pending orders endpoint with POST request"""

    print("\n📋 Testing Pending Orders Endpoint")
    print("=" * 50)

    data = {
        "page": 1,
        "page_size": 10,
        "filters": {}
    }

    for base_url in BASE_URLS:
        url = f"{base_url}/api/v1/new-shipping/pending-orders"
        print(f"\n🌐 {base_url}")

        try:
            response = requests.post(
                url,
                json=data,
                timeout=5,
                proxies={'http': None, 'https': None}
            )

            if response.status_code == 200:
                print(f"✅ POST pending-orders: Success")
                result = response.json()
                if 'success' in result:
                    print(f"   Total orders: {result.get('total', 0)}")
            else:
                print(f"❌ POST pending-orders: Status {response.status_code}")

        except requests.exceptions.ConnectionError:
            print(f"❌ POST pending-orders: Connection refused")
        except Exception as e:
            print(f"❌ POST pending-orders: {str(e)}")

def main():
    print("🚀 Testing LAN Access for New Shipping Module")
    print("=" * 50)

    # Test basic API access
    test_api_access()

    # Test POST endpoints
    test_pending_orders()

    print("\n" + "=" * 50)
    print("✨ Test Complete!")
    print("\nFrontend URLs to test in browser:")
    print("  Local: http://localhost:3000/new-shipping/upload")
    print("  Local: http://localhost:3000/new-shipping/pending-list")
    print("  LAN:   http://192.168.0.2:3000/new-shipping/upload")
    print("  LAN:   http://192.168.0.2:3000/new-shipping/pending-list")

if __name__ == "__main__":
    main()