Big-Link-Man/scripts/test_story_6_3.py

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()