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:
@@ -160,37 +160,6 @@ class TestAPIEndpoints(unittest.TestCase):
|
||||
response = self.client.delete('/api/dns/records', data=json.dumps({'name': 'test'}), content_type='application/json')
|
||||
self.assertEqual(response.status_code, 500)
|
||||
|
||||
@patch('app.network_manager')
|
||||
def test_dhcp_endpoints(self, mock_network):
|
||||
# Mock get_dhcp_leases
|
||||
mock_network.get_dhcp_leases.return_value = [{'ip': '10.0.0.2', 'mac': '00:11:22:33:44:55'}]
|
||||
response = self.client.get('/api/dhcp/leases')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
data = json.loads(response.data)
|
||||
self.assertIsInstance(data, list)
|
||||
# Mock add_dhcp_reservation
|
||||
mock_network.add_dhcp_reservation.return_value = True
|
||||
response = self.client.post('/api/dhcp/reservations', data=json.dumps({'ip': '10.0.0.2', 'mac': '00:11:22:33:44:55'}), content_type='application/json')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
# Missing mac field → 400, not 500
|
||||
response = self.client.post('/api/dhcp/reservations', data=json.dumps({'ip': '10.0.0.2'}), content_type='application/json')
|
||||
self.assertEqual(response.status_code, 400)
|
||||
# Simulate manager error
|
||||
mock_network.add_dhcp_reservation.side_effect = Exception('fail')
|
||||
response = self.client.post('/api/dhcp/reservations', data=json.dumps({'ip': '10.0.0.2', 'mac': '00:11:22:33:44:55'}), content_type='application/json')
|
||||
self.assertEqual(response.status_code, 500)
|
||||
# Mock remove_dhcp_reservation
|
||||
mock_network.remove_dhcp_reservation.return_value = True
|
||||
response = self.client.delete('/api/dhcp/reservations', data=json.dumps({'mac': '00:11:22:33:44:55'}), content_type='application/json')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
# Missing mac → 400
|
||||
response = self.client.delete('/api/dhcp/reservations', data=json.dumps({'ip': '10.0.0.2'}), content_type='application/json')
|
||||
self.assertEqual(response.status_code, 400)
|
||||
# Simulate manager error
|
||||
mock_network.remove_dhcp_reservation.side_effect = Exception('fail')
|
||||
response = self.client.delete('/api/dhcp/reservations', data=json.dumps({'mac': '00:11:22:33:44:55'}), content_type='application/json')
|
||||
self.assertEqual(response.status_code, 500)
|
||||
|
||||
@patch('app.network_manager')
|
||||
def test_ntp_status_endpoint(self, mock_network):
|
||||
# Mock get_ntp_status
|
||||
|
||||
Reference in New Issue
Block a user