#!/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)