|
|
|
|
|
""" |
|
|
Test script for the Enhanced DOCX to PDF Converter API |
|
|
""" |
|
|
|
|
|
import requests |
|
|
import base64 |
|
|
import json |
|
|
import os |
|
|
|
|
|
|
|
|
BASE_URL = "http://localhost:8000" |
|
|
|
|
|
def test_health(): |
|
|
"""Test health endpoint""" |
|
|
print("Testing health endpoint...") |
|
|
try: |
|
|
response = requests.get(f"{BASE_URL}/health") |
|
|
if response.status_code == 200: |
|
|
print("✓ Health check passed") |
|
|
print(f" Version: {response.json().get('version')}") |
|
|
else: |
|
|
print("✗ Health check failed") |
|
|
except Exception as e: |
|
|
print(f"✗ Health check error: {e}") |
|
|
|
|
|
def test_convert_file(docx_path): |
|
|
"""Test file conversion""" |
|
|
print(f"\nTesting file conversion with {docx_path}...") |
|
|
|
|
|
if not os.path.exists(docx_path): |
|
|
print(f"✗ File {docx_path} not found") |
|
|
return |
|
|
|
|
|
try: |
|
|
with open(docx_path, 'rb') as f: |
|
|
files = {'file': (os.path.basename(docx_path), f, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document')} |
|
|
response = requests.post(f"{BASE_URL}/convert", files=files) |
|
|
|
|
|
if response.status_code == 200: |
|
|
result = response.json() |
|
|
if result.get('success'): |
|
|
print("✓ File conversion successful") |
|
|
print(f" PDF URL: {result.get('pdf_url')}") |
|
|
else: |
|
|
print(f"✗ Conversion failed: {result.get('error')}") |
|
|
else: |
|
|
print(f"✗ Conversion failed with status {response.status_code}") |
|
|
print(response.text) |
|
|
except Exception as e: |
|
|
print(f"✗ Conversion error: {e}") |
|
|
|
|
|
def test_convert_base64(docx_path): |
|
|
"""Test base64 conversion""" |
|
|
print(f"\nTesting base64 conversion with {docx_path}...") |
|
|
|
|
|
if not os.path.exists(docx_path): |
|
|
print(f"✗ File {docx_path} not found") |
|
|
return |
|
|
|
|
|
try: |
|
|
with open(docx_path, 'rb') as f: |
|
|
file_content = base64.b64encode(f.read()).decode('utf-8') |
|
|
|
|
|
data = { |
|
|
'file_content': file_content, |
|
|
'filename': os.path.basename(docx_path) |
|
|
} |
|
|
|
|
|
response = requests.post(f"{BASE_URL}/convert", data=data) |
|
|
|
|
|
if response.status_code == 200: |
|
|
result = response.json() |
|
|
if result.get('success'): |
|
|
print("✓ Base64 conversion successful") |
|
|
print(f" PDF URL: {result.get('pdf_url')}") |
|
|
else: |
|
|
print(f"✗ Conversion failed: {result.get('error')}") |
|
|
else: |
|
|
print(f"✗ Conversion failed with status {response.status_code}") |
|
|
print(response.text) |
|
|
except Exception as e: |
|
|
print(f"✗ Conversion error: {e}") |
|
|
|
|
|
def test_batch_convert(docx_paths): |
|
|
"""Test batch conversion""" |
|
|
print(f"\nTesting batch conversion with {len(docx_paths)} files...") |
|
|
|
|
|
files_data = [] |
|
|
for path in docx_paths: |
|
|
if not os.path.exists(path): |
|
|
print(f"✗ File {path} not found") |
|
|
continue |
|
|
|
|
|
try: |
|
|
with open(path, 'rb') as f: |
|
|
file_content = base64.b64encode(f.read()).decode('utf-8') |
|
|
files_data.append({ |
|
|
'file_content': file_content, |
|
|
'filename': os.path.basename(path) |
|
|
}) |
|
|
except Exception as e: |
|
|
print(f"✗ Error reading {path}: {e}") |
|
|
|
|
|
if not files_data: |
|
|
print("✗ No valid files to convert") |
|
|
return |
|
|
|
|
|
try: |
|
|
payload = {'files': files_data} |
|
|
response = requests.post(f"{BASE_URL}/convert/batch", json=payload) |
|
|
|
|
|
if response.status_code == 200: |
|
|
results = response.json() |
|
|
success_count = sum(1 for r in results if r.get('success')) |
|
|
print(f"✓ Batch conversion completed: {success_count}/{len(results)} successful") |
|
|
|
|
|
for i, result in enumerate(results): |
|
|
if result.get('success'): |
|
|
print(f" File {i+1}: Success - {result.get('pdf_url')}") |
|
|
else: |
|
|
print(f" File {i+1}: Failed - {result.get('error')}") |
|
|
else: |
|
|
print(f"✗ Batch conversion failed with status {response.status_code}") |
|
|
print(response.text) |
|
|
except Exception as e: |
|
|
print(f"✗ Batch conversion error: {e}") |
|
|
|
|
|
if __name__ == "__main__": |
|
|
print("Enhanced DOCX to PDF Converter API Test Script") |
|
|
print("=" * 50) |
|
|
|
|
|
|
|
|
test_health() |
|
|
|
|
|
|
|
|
template_path = "template.docx" |
|
|
if os.path.exists(template_path): |
|
|
test_convert_file(template_path) |
|
|
test_convert_base64(template_path) |
|
|
test_batch_convert([template_path, template_path]) |
|
|
else: |
|
|
print(f"\nNote: {template_path} not found, skipping file tests") |
|
|
|
|
|
print("\nTest script completed.") |