test: raise coverage 68.7% -> ~80.4%; add ~250 tests for new egress/DDNS/network paths
Unit Tests / test (push) Successful in 12m6s
Unit Tests / test (push) Successful in 12m6s
Coverage was below acceptable levels and several newly-added code paths (sshuttle egress, proxy egress, DDNS provider stubs, DNS overview route, peer-registry provisioning) had zero test coverage. ~250 new unit tests are added across 16 new test files. Existing test files are updated to match refactored interfaces (DHCP removed, constants introduced, network_manager restructured). .coveragerc is added to pin the source mapping and the 70% floor so regressions are caught at commit time. tests/test_enhanced_api.py was previously living in api/ (wrong location) and is moved to tests/ where it belongs. Integration test files are updated to remove references to DHCP endpoints and add coverage for the new DNS overview and DDNS sync endpoints. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -70,18 +70,16 @@ class TestConfigManager(unittest.TestCase):
|
||||
# Test valid config
|
||||
valid_config = {
|
||||
'dns_port': 53,
|
||||
'dhcp_range': '10.0.0.100-10.0.0.200',
|
||||
'ntp_servers': ['pool.ntp.org']
|
||||
}
|
||||
validation = self.config_manager.validate_config('network', valid_config)
|
||||
self.assertTrue(validation['valid'])
|
||||
self.assertEqual(len(validation['errors']), 0)
|
||||
|
||||
|
||||
# Test invalid config (missing required field)
|
||||
invalid_config = {
|
||||
'dns_port': 53,
|
||||
'ntp_servers': ['pool.ntp.org']
|
||||
# Missing dhcp_range
|
||||
'dns_port': 53
|
||||
# Missing ntp_servers
|
||||
}
|
||||
validation = self.config_manager.validate_config('network', invalid_config)
|
||||
self.assertFalse(validation['valid'])
|
||||
@@ -387,12 +385,9 @@ class TestNetworkManagerApply(unittest.TestCase):
|
||||
self.data_dir = os.path.join(self.test_dir, 'data')
|
||||
self.config_dir = os.path.join(self.test_dir, 'config')
|
||||
os.makedirs(os.path.join(self.data_dir, 'dns'), exist_ok=True)
|
||||
os.makedirs(os.path.join(self.config_dir, 'dhcp'), exist_ok=True)
|
||||
os.makedirs(os.path.join(self.config_dir, 'ntp'), exist_ok=True)
|
||||
|
||||
# Seed minimal config files
|
||||
with open(os.path.join(self.config_dir, 'dhcp', 'dnsmasq.conf'), 'w') as f:
|
||||
f.write('dhcp-range=10.0.0.100,10.0.0.200,12h\ndomain=cell\n')
|
||||
with open(os.path.join(self.config_dir, 'ntp', 'chrony.conf'), 'w') as f:
|
||||
f.write('server time.google.com iburst\nserver pool.ntp.org iburst\n')
|
||||
|
||||
@@ -403,14 +398,6 @@ class TestNetworkManagerApply(unittest.TestCase):
|
||||
def tearDown(self):
|
||||
shutil.rmtree(self.test_dir)
|
||||
|
||||
@patch('subprocess.run')
|
||||
def test_apply_config_writes_dhcp_range(self, mock_run):
|
||||
mock_run.return_value = MagicMock(returncode=0)
|
||||
result = self.nm.apply_config({'dhcp_range': '192.168.1.100,192.168.1.200,24h'})
|
||||
dhcp_conf = open(os.path.join(self.config_dir, 'dhcp', 'dnsmasq.conf')).read()
|
||||
self.assertIn('192.168.1.100,192.168.1.200,24h', dhcp_conf)
|
||||
self.assertIn('cell-dhcp', ' '.join(result['restarted']))
|
||||
|
||||
@patch('subprocess.run')
|
||||
def test_apply_config_writes_ntp_servers(self, mock_run):
|
||||
mock_run.return_value = MagicMock(returncode=0)
|
||||
@@ -422,14 +409,6 @@ class TestNetworkManagerApply(unittest.TestCase):
|
||||
self.assertNotIn('time.google.com', ntp_conf)
|
||||
self.assertIn('cell-ntp', result['restarted'])
|
||||
|
||||
@patch('subprocess.run')
|
||||
def test_apply_domain_updates_dnsmasq(self, mock_run):
|
||||
mock_run.return_value = MagicMock(returncode=0)
|
||||
result = self.nm.apply_domain('newdomain.local')
|
||||
dhcp_conf = open(os.path.join(self.config_dir, 'dhcp', 'dnsmasq.conf')).read()
|
||||
self.assertIn('domain=newdomain.local', dhcp_conf)
|
||||
self.assertNotIn('domain=cell', dhcp_conf)
|
||||
|
||||
@patch('subprocess.run')
|
||||
def test_apply_domain_updates_corefile(self, mock_run):
|
||||
"""apply_domain must rewrite the Corefile zone name and reload CoreDNS."""
|
||||
@@ -462,10 +441,7 @@ class TestNetworkManagerApplyCellName(unittest.TestCase):
|
||||
self.data_dir = os.path.join(self.test_dir, 'data')
|
||||
self.config_dir = os.path.join(self.test_dir, 'config')
|
||||
os.makedirs(os.path.join(self.data_dir, 'dns'), exist_ok=True)
|
||||
os.makedirs(os.path.join(self.config_dir, 'dhcp'), exist_ok=True)
|
||||
os.makedirs(os.path.join(self.config_dir, 'ntp'), exist_ok=True)
|
||||
with open(os.path.join(self.config_dir, 'dhcp', 'dnsmasq.conf'), 'w') as f:
|
||||
f.write('domain=cell\n')
|
||||
with open(os.path.join(self.config_dir, 'ntp', 'chrony.conf'), 'w') as f:
|
||||
f.write('server pool.ntp.org iburst\n')
|
||||
# Create a zone file matching _generate_zone_content format (name TTL IN type value)
|
||||
|
||||
Reference in New Issue
Block a user