106 lines
4.1 KiB
Python
106 lines
4.1 KiB
Python
"""
|
|
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()
|
|
|