Init Repo
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
API integration test for data consistency endpoints.
|
||||
|
||||
This script tests the REST API endpoints for data consistency validation.
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
import requests
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
# Test configuration
|
||||
BASE_URL = "http://localhost:8000"
|
||||
TEST_EMAIL = "admin@example.com"
|
||||
TEST_PASSWORD = "admin123"
|
||||
|
||||
|
||||
def get_auth_token():
|
||||
"""Get authentication token for API requests."""
|
||||
login_data = {
|
||||
"username": TEST_EMAIL,
|
||||
"password": TEST_PASSWORD
|
||||
}
|
||||
|
||||
response = requests.post(f"{BASE_URL}/auth/login", data=login_data)
|
||||
if response.status_code == 200:
|
||||
return response.json()["access_token"]
|
||||
else:
|
||||
print(f"Failed to authenticate: {response.status_code} - {response.text}")
|
||||
return None
|
||||
|
||||
|
||||
def test_consistency_endpoints():
|
||||
"""Test data consistency API endpoints."""
|
||||
print("=== Testing Data Consistency API Endpoints ===")
|
||||
|
||||
# Get authentication token
|
||||
token = get_auth_token()
|
||||
if not token:
|
||||
print("❌ Failed to get authentication token")
|
||||
return False
|
||||
|
||||
headers = {"Authorization": f"Bearer {token}"}
|
||||
|
||||
try:
|
||||
# Test health check endpoint
|
||||
print("\n1. Testing consistency health check...")
|
||||
response = requests.get(f"{BASE_URL}/data-consistency/health", headers=headers)
|
||||
if response.status_code == 200:
|
||||
health_data = response.json()
|
||||
print(f"✓ Health check successful: {health_data['status']}")
|
||||
print(f" Consistency: {health_data.get('consistency_percentage', 0):.1f}%")
|
||||
else:
|
||||
print(f"❌ Health check failed: {response.status_code}")
|
||||
return False
|
||||
|
||||
# Test consistency report endpoint
|
||||
print("\n2. Testing consistency report...")
|
||||
response = requests.get(f"{BASE_URL}/data-consistency/report", headers=headers)
|
||||
if response.status_code == 200:
|
||||
report_data = response.json()
|
||||
print(f"✓ Report generated successfully")
|
||||
print(f" Total entities: {report_data['summary']['total_entities']}")
|
||||
print(f" Valid entities: {report_data['summary']['valid_entities']}")
|
||||
print(f" Consistency: {report_data['summary']['consistency_percentage']:.1f}%")
|
||||
else:
|
||||
print(f"❌ Report generation failed: {response.status_code}")
|
||||
return False
|
||||
|
||||
# Test individual entity validation (if we have entities)
|
||||
if report_data['summary']['total_entities'] > 0:
|
||||
print("\n3. Testing individual entity validation...")
|
||||
|
||||
# Try to validate a shot if available
|
||||
if report_data['shots']['total_entities'] > 0:
|
||||
# Get first shot ID from the system (this is a simplified approach)
|
||||
# In a real test, you'd have specific test data
|
||||
shot_id = 1 # Assuming there's at least one shot with ID 1
|
||||
response = requests.get(f"{BASE_URL}/data-consistency/validate/shot/{shot_id}", headers=headers)
|
||||
if response.status_code == 200:
|
||||
validation_data = response.json()
|
||||
print(f"✓ Shot validation: {'VALID' if validation_data['valid'] else 'INVALID'}")
|
||||
else:
|
||||
print(f"⚠ Shot validation failed (might not exist): {response.status_code}")
|
||||
|
||||
# Try to validate an asset if available
|
||||
if report_data['assets']['total_entities'] > 0:
|
||||
asset_id = 1 # Assuming there's at least one asset with ID 1
|
||||
response = requests.get(f"{BASE_URL}/data-consistency/validate/asset/{asset_id}", headers=headers)
|
||||
if response.status_code == 200:
|
||||
validation_data = response.json()
|
||||
print(f"✓ Asset validation: {'VALID' if validation_data['valid'] else 'INVALID'}")
|
||||
else:
|
||||
print(f"⚠ Asset validation failed (might not exist): {response.status_code}")
|
||||
|
||||
print(f"\n✓ All API endpoint tests completed successfully")
|
||||
return True
|
||||
|
||||
except requests.exceptions.ConnectionError:
|
||||
print("❌ Failed to connect to the API server. Make sure the server is running on http://localhost:8000")
|
||||
return False
|
||||
except Exception as e:
|
||||
print(f"❌ API test failed with error: {str(e)}")
|
||||
return False
|
||||
|
||||
|
||||
def main():
|
||||
"""Main test function."""
|
||||
print("=== Data Consistency API Integration Test ===")
|
||||
print(f"Test started at: {datetime.now()}")
|
||||
print(f"Testing API at: {BASE_URL}")
|
||||
|
||||
success = test_consistency_endpoints()
|
||||
|
||||
if success:
|
||||
print(f"\n=== All API Tests Completed Successfully ===")
|
||||
else:
|
||||
print(f"\n❌ API Tests Failed")
|
||||
|
||||
return success
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
success = main()
|
||||
sys.exit(0 if success else 1)
|
||||
Reference in New Issue
Block a user