116 lines
3.6 KiB
Python
116 lines
3.6 KiB
Python
#!/usr/bin/env python3
|
|||
|
|
"""
|
||
|
|
Test script to verify DNS zone name generation fix for double periods.
|
||
|
|
"""
|
||
|
|
|
||
|
|
import sys
|
||
|
|
import os
|
||
|
|
|
||
|
|
# Add the app directory to the path so we can import modules
|
||
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'app'))
|
||
|
|
|
||
|
|
from app.utils.dns_helpers import get_vdc_dns_zone_name, generate_dns_zone_for_vdc
|
||
|
|
|
||
|
|
# Mock the database models for testing
|
||
|
|
class MockUniverse:
|
||
|
|
def __init__(self, universe_dns_name):
|
||
|
|
self.universe_dns_name = universe_dns_name
|
||
|
|
|
||
|
|
class MockProject:
|
||
|
|
def __init__(self, universe):
|
||
|
|
self.universe = universe
|
||
|
|
|
||
|
|
class MockVDC:
|
||
|
|
def __init__(self, name, project):
|
||
|
|
self.name = name
|
||
|
|
self.project = project
|
||
|
|
|
||
|
|
def test_get_vdc_dns_zone_name():
|
||
|
|
"""Test that get_vdc_dns_zone_name strips trailing periods correctly."""
|
||
|
|
print("Testing get_vdc_dns_zone_name...")
|
||
|
|
|
||
|
|
# Test case 1: universe_dns_name with trailing period
|
||
|
|
universe = MockUniverse("fidget-spinner-research.")
|
||
|
|
project = MockProject(universe)
|
||
|
|
vdc = MockVDC("demo-pod", project)
|
||
|
|
|
||
|
|
# Mock the query.get method
|
||
|
|
original_get = None
|
||
|
|
try:
|
||
|
|
from app.models.models import VirtualDataCenter
|
||
|
|
original_get = VirtualDataCenter.query.get
|
||
|
|
|
||
|
|
# Mock the get method
|
||
|
|
VirtualDataCenter.query.get = lambda vdc_id: vdc
|
||
|
|
|
||
|
|
zone_name = get_vdc_dns_zone_name("test-vdc-id")
|
||
|
|
expected = "demo-pod.fidget-spinner-research.local"
|
||
|
|
|
||
|
|
if zone_name == expected:
|
||
|
|
print(f"✓ PASS: {zone_name}")
|
||
|
|
else:
|
||
|
|
print(f"✗ FAIL: Expected '{expected}', got '{zone_name}'")
|
||
|
|
return False
|
||
|
|
|
||
|
|
finally:
|
||
|
|
if original_get:
|
||
|
|
VirtualDataCenter.query.get = original_get
|
||
|
|
|
||
|
|
# Test case 2: universe_dns_name without trailing period
|
||
|
|
universe2 = MockUniverse("fidget-spinner-research")
|
||
|
|
project2 = MockProject(universe2)
|
||
|
|
vdc2 = MockVDC("demo-pod", project2)
|
||
|
|
|
||
|
|
try:
|
||
|
|
VirtualDataCenter.query.get = lambda vdc_id: vdc2
|
||
|
|
|
||
|
|
zone_name2 = get_vdc_dns_zone_name("test-vdc-id")
|
||
|
|
expected2 = "demo-pod.fidget-spinner-research.local"
|
||
|
|
|
||
|
|
if zone_name2 == expected2:
|
||
|
|
print(f"✓ PASS: {zone_name2}")
|
||
|
|
else:
|
||
|
|
print(f"✗ FAIL: Expected '{expected2}', got '{zone_name2}'")
|
||
|
|
return False
|
||
|
|
|
||
|
|
finally:
|
||
|
|
if original_get:
|
||
|
|
VirtualDataCenter.query.get = original_get
|
||
|
|
|
||
|
|
return True
|
||
|
|
|
||
|
|
def test_generate_dns_zone_for_vdc():
|
||
|
|
"""Test that generate_dns_zone_for_vdc strips trailing periods correctly."""
|
||
|
|
print("\nTesting generate_dns_zone_for_vdc...")
|
||
|
|
|
||
|
|
# This is harder to test without a full database setup, so we'll just
|
||
|
|
# verify the zone name construction part works
|
||
|
|
universe = MockUniverse("fidget-spinner-research.")
|
||
|
|
project = MockProject(universe)
|
||
|
|
vdc = MockVDC("demo-pod", project)
|
||
|
|
|
||
|
|
# Test the zone name construction logic from generate_dns_zone_for_vdc
|
||
|
|
vdc_slug = "demo-pod" # slugify_name would return this
|
||
|
|
universe_dns_name = universe.universe_dns_name.rstrip('.')
|
||
|
|
zone_name = f"{vdc_slug}.{universe_dns_name}.local"
|
||
|
|
expected = "demo-pod.fidget-spinner-research.local"
|
||
|
|
|
||
|
|
if zone_name == expected:
|
||
|
|
print(f"✓ PASS: {zone_name}")
|
||
|
|
return True
|
||
|
|
else:
|
||
|
|
print(f"✗ FAIL: Expected '{expected}', got '{zone_name}'")
|
||
|
|
return False
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
print("Testing DNS zone name generation fix...\n")
|
||
|
|
|
||
|
|
success1 = test_get_vdc_dns_zone_name()
|
||
|
|
success2 = test_generate_dns_zone_for_vdc()
|
||
|
|
|
||
|
|
if success1 and success2:
|
||
|
|
print("\n✓ All tests passed! The double period issue should be fixed.")
|
||
|
|
sys.exit(0)
|
||
|
|
else:
|
||
|
|
print("\n✗ Some tests failed!")
|
||
|
|
sys.exit(1)
|