LinkDesk/backend/test_recovery_api_simple.py

191 lines
6.2 KiB
Python

"""
Simple test to verify recovery API endpoints are accessible
"""
import requests
import sys
import os
# Add the backend directory to the path
sys.path.insert(0, os.path.dirname(__file__))
def test_recovery_endpoints():
"""Test that recovery endpoints are accessible"""
base_url = "http://localhost:8000"
# Test endpoints without authentication (should return 401)
endpoints = [
"/api/admin/deleted-shots/",
"/api/admin/deleted-assets/",
"/api/admin/recovery-stats/"
]
print("Testing Recovery Management API Endpoints...")
print("=" * 50)
all_passed = True
for endpoint in endpoints:
try:
response = requests.get(f"{base_url}{endpoint}", timeout=5)
# We expect 401 (unauthorized) or 200 (if somehow authenticated)
# 404 would indicate the endpoint doesn't exist
expected_statuses = [200, 401, 422] # 422 for validation errors
if response.status_code in expected_statuses:
print(f"{endpoint}: {response.status_code} (endpoint exists)")
else:
print(f"{endpoint}: {response.status_code} (unexpected status)")
all_passed = False
except requests.exceptions.ConnectionError:
print(f"⚠️ {endpoint}: Connection failed (server not running?)")
all_passed = False
except Exception as e:
print(f"{endpoint}: Error - {e}")
all_passed = False
print("=" * 50)
# Test POST endpoints (should return 401 or 422)
post_endpoints = [
"/api/admin/shots/1/recover",
"/api/admin/assets/1/recover",
"/api/admin/shots/bulk-recover",
"/api/admin/assets/bulk-recover"
]
print("Testing POST endpoints...")
for endpoint in post_endpoints:
try:
if "bulk-recover" in endpoint:
# Send empty payload for bulk endpoints
response = requests.post(f"{base_url}{endpoint}",
json={"shot_ids": []} if "shots" in endpoint else {"asset_ids": []},
timeout=5)
else:
response = requests.post(f"{base_url}{endpoint}", timeout=5)
expected_statuses = [200, 400, 401, 404, 422]
if response.status_code in expected_statuses:
print(f"{endpoint}: {response.status_code} (endpoint exists)")
else:
print(f"{endpoint}: {response.status_code} (unexpected status)")
all_passed = False
except requests.exceptions.ConnectionError:
print(f"⚠️ {endpoint}: Connection failed (server not running?)")
all_passed = False
except Exception as e:
print(f"{endpoint}: Error - {e}")
all_passed = False
print("=" * 50)
if all_passed:
print("🎉 All recovery API endpoints are accessible!")
print("✅ Requirement 4.2: API endpoints continue to work - PASSED")
else:
print("⚠️ Some endpoints had issues. Check server status.")
print("❌ Requirement 4.2: API endpoints continue to work - NEEDS REVIEW")
return all_passed
def test_frontend_files():
"""Test that frontend files exist"""
print("\nTesting Frontend File Structure...")
print("=" * 50)
files_to_check = [
"../frontend/src/services/recovery.ts",
"../frontend/src/views/admin/DeletedItemsManagementView.vue",
"../frontend/src/components/layout/AppSidebar.vue",
"../frontend/src/router/index.ts"
]
all_exist = True
for file_path in files_to_check:
if os.path.exists(file_path):
print(f"{file_path}: exists")
else:
print(f"{file_path}: missing")
all_exist = False
print("=" * 50)
if all_exist:
print("🎉 All required frontend files exist!")
print("✅ Requirement 4.1: Component interfaces remain unchanged - PASSED")
else:
print("⚠️ Some frontend files are missing.")
print("❌ Requirement 4.1: Component interfaces remain unchanged - NEEDS REVIEW")
return all_exist
def test_route_configuration():
"""Test that route configuration is preserved"""
print("\nTesting Route Configuration...")
print("=" * 50)
router_file = "../frontend/src/router/index.ts"
if not os.path.exists(router_file):
print(f"❌ Router file not found: {router_file}")
return False
with open(router_file, 'r') as f:
content = f.read()
required_elements = [
"/admin/deleted-items",
"RecoveryManagement",
"DeletedItemsManagementView"
]
all_found = True
for element in required_elements:
if element in content:
print(f"✅ Route element found: {element}")
else:
print(f"❌ Route element missing: {element}")
all_found = False
print("=" * 50)
if all_found:
print("🎉 Route configuration is preserved!")
print("✅ Requirement 4.3: Navigation and routing functionality is preserved - PASSED")
else:
print("⚠️ Route configuration has issues.")
print("❌ Requirement 4.3: Navigation and routing functionality is preserved - NEEDS REVIEW")
return all_found
if __name__ == "__main__":
print("Recovery Management Functionality Preservation Test")
print("=" * 60)
print("Testing Requirements 4.1, 4.2, 4.3, 4.4, 4.5")
print("=" * 60)
# Run tests
api_test = test_recovery_endpoints()
frontend_test = test_frontend_files()
route_test = test_route_configuration()
print("\n" + "=" * 60)
print("FINAL RESULTS:")
print("=" * 60)
if api_test and frontend_test and route_test:
print("🎉 ALL TESTS PASSED!")
print("✅ Existing functionality is preserved after terminology changes")
else:
print("⚠️ SOME TESTS FAILED!")
print("❌ Review the issues above before proceeding")
print("=" * 60)