""" Quick test to verify Story 6.3 works - creates and retrieves site deployments with new fields """ import sys import time from pathlib import Path sys.path.insert(0, str(Path(__file__).parent.parent)) from src.database.session import db_manager from src.database.repositories import SiteDeploymentRepository def test(): """Test creating and retrieving site deployments with new multi-cloud fields""" print("Testing Story 6.3: Multi-Cloud Storage Fields\n") db_manager.initialize() session = db_manager.get_session() repo = SiteDeploymentRepository(session) try: timestamp = int(time.time()) # Test 1: Create bunny deployment (backward compatibility) print("1. Creating bunny deployment (default)...") bunny_site = repo.create( site_name="Test Bunny Site", storage_zone_id=100 + timestamp, storage_zone_name="test-zone", storage_zone_password="test-pass", storage_zone_region="DE", pull_zone_id=100 + timestamp, pull_zone_bcdn_hostname=f"test-bunny-{timestamp}.b-cdn.net" ) print(f" [OK] Created: ID={bunny_site.id}, provider={bunny_site.storage_provider}") assert bunny_site.storage_provider == "bunny", "Should default to bunny" # Test 2: Create S3 deployment print("\n2. Creating S3 deployment...") s3_site = repo.create( site_name="Test S3 Site", storage_zone_id=200 + timestamp, storage_zone_name="s3-zone", storage_zone_password="s3-pass", storage_zone_region="NY", pull_zone_id=200 + timestamp, pull_zone_bcdn_hostname=f"test-s3-{timestamp}.b-cdn.net", storage_provider="s3", s3_bucket_name="my-bucket", s3_bucket_region="us-east-1", s3_custom_domain="cdn.example.com" ) print(f" [OK] Created: ID={s3_site.id}, provider={s3_site.storage_provider}") print(f" [OK] S3 fields: bucket={s3_site.s3_bucket_name}, region={s3_site.s3_bucket_region}") assert s3_site.storage_provider == "s3", "Should be s3" assert s3_site.s3_bucket_name == "my-bucket", "Bucket name should match" # Test 3: Retrieve and verify print("\n3. Retrieving S3 deployment...") retrieved = repo.get_by_id(s3_site.id) assert retrieved is not None, "Should retrieve the site" assert retrieved.storage_provider == "s3", "Provider should be s3" assert retrieved.s3_bucket_name == "my-bucket", "Bucket should match" print(f" [OK] Retrieved: provider={retrieved.storage_provider}, bucket={retrieved.s3_bucket_name}") # Test 4: Create S3-compatible deployment print("\n4. Creating S3-compatible deployment...") s3c_site = repo.create( site_name="Test DO Spaces", storage_zone_id=300 + timestamp, storage_zone_name="do-zone", storage_zone_password="do-pass", storage_zone_region="LA", pull_zone_id=300 + timestamp, pull_zone_bcdn_hostname=f"test-do-{timestamp}.b-cdn.net", storage_provider="s3_compatible", s3_bucket_name="spaces-bucket", s3_bucket_region="nyc3", s3_endpoint_url="https://nyc3.digitaloceanspaces.com" ) print(f" [OK] Created: provider={s3c_site.storage_provider}, endpoint={s3c_site.s3_endpoint_url}") assert s3c_site.storage_provider == "s3_compatible", "Should be s3_compatible" assert s3c_site.s3_endpoint_url == "https://nyc3.digitaloceanspaces.com", "Endpoint should match" session.commit() print("\n" + "="*50) print("[SUCCESS] ALL TESTS PASSED - Story 6.3 works!") print("="*50) except Exception as e: session.rollback() print(f"\n[ERROR] {e}") import traceback traceback.print_exc() sys.exit(1) finally: session.close() db_manager.close() if __name__ == "__main__": test()