Files
moreminimore-marketing/backend/test/verify_subscription_setup.py
Kunthawat Greethong c35fa52117 Base code
2026-01-08 22:39:53 +07:00

205 lines
6.6 KiB
Python

"""
Simple verification script for subscription system setup.
Checks that all files are created and properly structured.
"""
import os
import sys
from pathlib import Path
def check_file_exists(file_path, description):
"""Check if a file exists and report status."""
if os.path.exists(file_path):
print(f"{description}: {file_path}")
return True
else:
print(f"{description}: {file_path} - NOT FOUND")
return False
def check_file_content(file_path, search_terms, description):
"""Check if file contains expected content."""
try:
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
missing_terms = []
for term in search_terms:
if term not in content:
missing_terms.append(term)
if not missing_terms:
print(f"{description}: All expected content found")
return True
else:
print(f"{description}: Missing content - {missing_terms}")
return False
except Exception as e:
print(f"{description}: Error reading file - {e}")
return False
def main():
"""Main verification function."""
print("🔍 ALwrity Subscription System Setup Verification")
print("=" * 60)
backend_dir = Path(__file__).parent
# Files to check
files_to_check = [
(backend_dir / "models" / "subscription_models.py", "Subscription Models"),
(backend_dir / "services" / "pricing_service.py", "Pricing Service"),
(backend_dir / "services" / "usage_tracking_service.py", "Usage Tracking Service"),
(backend_dir / "services" / "subscription_exception_handler.py", "Exception Handler"),
(backend_dir / "api" / "subscription_api.py", "Subscription API"),
(backend_dir / "scripts" / "create_subscription_tables.py", "Migration Script"),
(backend_dir / "test_subscription_system.py", "Test Script"),
(backend_dir / "SUBSCRIPTION_SYSTEM_README.md", "Documentation")
]
# Check file existence
print("\n📁 Checking File Existence:")
print("-" * 30)
files_exist = 0
for file_path, description in files_to_check:
if check_file_exists(file_path, description):
files_exist += 1
# Check content of key files
print("\n📝 Checking File Content:")
print("-" * 30)
content_checks = [
(
backend_dir / "models" / "subscription_models.py",
["SubscriptionPlan", "APIUsageLog", "UsageSummary", "APIProvider"],
"Subscription Models Content"
),
(
backend_dir / "services" / "pricing_service.py",
["calculate_api_cost", "check_usage_limits", "APIProvider.GEMINI"],
"Pricing Service Content"
),
(
backend_dir / "services" / "usage_tracking_service.py",
["track_api_usage", "get_user_usage_stats", "enforce_usage_limits"],
"Usage Tracking Content"
),
(
backend_dir / "api" / "subscription_api.py",
["get_user_usage", "get_subscription_plans", "get_dashboard_data"],
"API Endpoints Content"
)
]
content_valid = 0
for file_path, search_terms, description in content_checks:
if os.path.exists(file_path):
if check_file_content(file_path, search_terms, description):
content_valid += 1
else:
print(f"{description}: File not found")
# Check middleware integration
print("\n🔧 Checking Middleware Integration:")
print("-" * 30)
middleware_file = backend_dir / "middleware" / "monitoring_middleware.py"
middleware_terms = [
"UsageTrackingService",
"detect_api_provider",
"track_api_usage",
"check_usage_limits_middleware"
]
middleware_ok = check_file_content(
middleware_file,
middleware_terms,
"Middleware Integration"
)
# Check app.py integration
print("\n🚀 Checking FastAPI Integration:")
print("-" * 30)
app_file = backend_dir / "app.py"
app_terms = [
"from api.subscription_api import router as subscription_router",
"app.include_router(subscription_router)"
]
app_ok = check_file_content(
app_file,
app_terms,
"FastAPI App Integration"
)
# Check database service integration
print("\n💾 Checking Database Integration:")
print("-" * 30)
db_file = backend_dir / "services" / "database.py"
db_terms = [
"from models.subscription_models import Base as SubscriptionBase",
"SubscriptionBase.metadata.create_all(bind=engine)"
]
db_ok = check_file_content(
db_file,
db_terms,
"Database Service Integration"
)
# Summary
print("\n" + "=" * 60)
print("📊 VERIFICATION SUMMARY")
print("=" * 60)
total_files = len(files_to_check)
total_content = len(content_checks)
print(f"Files Created: {files_exist}/{total_files}")
print(f"Content Valid: {content_valid}/{total_content}")
print(f"Middleware Integration: {'' if middleware_ok else ''}")
print(f"FastAPI Integration: {'' if app_ok else ''}")
print(f"Database Integration: {'' if db_ok else ''}")
# Overall status
all_checks = [
files_exist == total_files,
content_valid == total_content,
middleware_ok,
app_ok,
db_ok
]
if all(all_checks):
print("\n🎉 ALL CHECKS PASSED!")
print("✅ Subscription system setup is complete and ready to use.")
print("\n" + "=" * 60)
print("🚀 NEXT STEPS:")
print("=" * 60)
print("1. Install dependencies (if not already done):")
print(" pip install sqlalchemy loguru fastapi")
print("\n2. Run the migration script:")
print(" python scripts/create_subscription_tables.py")
print("\n3. Test the system:")
print(" python test_subscription_system.py")
print("\n4. Start the server:")
print(" python start_alwrity_backend.py")
print("\n5. Test API endpoints:")
print(" GET http://localhost:8000/api/subscription/plans")
print(" GET http://localhost:8000/api/subscription/pricing")
else:
print("\n❌ SOME CHECKS FAILED!")
print("Please review the errors above and fix any issues.")
return False
return True
if __name__ == "__main__":
success = main()
if not success:
sys.exit(1)