#!/usr/bin/env python3 """ Test URL support for MCP PDF Tools """ import asyncio import sys import os # Add src to path sys.path.insert(0, 'src') from mcp_pdf_tools.server import validate_pdf_path, download_pdf_from_url async def test_url_validation(): """Test URL validation and download""" print("Testing URL validation and download...") # Test with a known PDF URL (using a publicly available sample) test_url = "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf" try: print(f"Testing URL: {test_url}") path = await validate_pdf_path(test_url) print(f"✅ Successfully downloaded and validated PDF: {path}") print(f" File size: {path.stat().st_size} bytes") return True except Exception as e: print(f"❌ URL test failed: {e}") return False async def test_local_path(): """Test that local paths still work""" print("\nTesting local path validation...") # Test with our existing test PDF test_path = "/tmp/test_text.pdf" if not os.path.exists(test_path): print(f"⚠️ Test file {test_path} not found, skipping local test") return True try: path = await validate_pdf_path(test_path) print(f"✅ Local path validation works: {path}") return True except Exception as e: print(f"❌ Local path test failed: {e}") return False async def main(): print("🧪 Testing MCP PDF Tools URL Support\n") url_success = await test_url_validation() local_success = await test_local_path() print(f"\n📊 Test Results:") print(f" URL support: {'✅ PASS' if url_success else '❌ FAIL'}") print(f" Local paths: {'✅ PASS' if local_success else '❌ FAIL'}") if url_success and local_success: print("\n🎉 All tests passed! URL support is working.") return 0 else: print("\n🚨 Some tests failed.") return 1 if __name__ == "__main__": sys.exit(asyncio.run(main()))