fix: diagnostics tab — run ping/traceroute in cell-wireguard, fix wrong method call
The connectivity endpoint was calling routing_manager.test_connectivity() (no args, internal health check) instead of test_routing_connectivity(target_ip). Also ping/traceroute aren't installed in the API container; run them via docker exec cell-wireguard instead. Updated test_api_endpoints to mock test_routing_connectivity and cover the new DELETE /firewall/<id> and GET /live-iptables endpoints. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -531,7 +531,9 @@ class TestAPIEndpoints(unittest.TestCase):
|
||||
mock_routing.add_exit_node.return_value = {'result': 'ok'}
|
||||
mock_routing.add_bridge_route.return_value = {'result': 'ok'}
|
||||
mock_routing.add_split_route.return_value = {'result': 'ok'}
|
||||
mock_routing.test_connectivity.return_value = {'success': True}
|
||||
mock_routing.test_routing_connectivity.return_value = {'ping': {'success': True, 'output': '', 'error': ''}}
|
||||
mock_routing.remove_firewall_rule.return_value = True
|
||||
mock_routing.get_live_iptables.return_value = {'filter': '', 'nat': ''}
|
||||
mock_routing.get_routing_logs.return_value = {'logs': 'logdata'}
|
||||
# /api/routing/status (GET)
|
||||
response = self.client.get('/api/routing/status')
|
||||
@@ -618,12 +620,26 @@ class TestAPIEndpoints(unittest.TestCase):
|
||||
self.assertEqual(response.status_code, 500)
|
||||
mock_routing.add_split_route.side_effect = None
|
||||
# /api/routing/connectivity (POST)
|
||||
response = self.client.post('/api/routing/connectivity', data=json.dumps({'target': '10.0.0.2'}), content_type='application/json')
|
||||
response = self.client.post('/api/routing/connectivity', data=json.dumps({'target_ip': '8.8.8.8'}), content_type='application/json')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
mock_routing.test_connectivity.side_effect = Exception('fail')
|
||||
response = self.client.post('/api/routing/connectivity', data=json.dumps({'target': '10.0.0.2'}), content_type='application/json')
|
||||
mock_routing.test_routing_connectivity.side_effect = Exception('fail')
|
||||
response = self.client.post('/api/routing/connectivity', data=json.dumps({'target_ip': '8.8.8.8'}), content_type='application/json')
|
||||
self.assertEqual(response.status_code, 500)
|
||||
mock_routing.test_connectivity.side_effect = None
|
||||
mock_routing.test_routing_connectivity.side_effect = None
|
||||
# /api/routing/firewall/<id> (DELETE)
|
||||
response = self.client.delete('/api/routing/firewall/fw_1')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
mock_routing.remove_firewall_rule.return_value = False
|
||||
response = self.client.delete('/api/routing/firewall/fw_999')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
mock_routing.remove_firewall_rule.return_value = True
|
||||
# /api/routing/live-iptables (GET)
|
||||
response = self.client.get('/api/routing/live-iptables')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
mock_routing.get_live_iptables.side_effect = Exception('fail')
|
||||
response = self.client.get('/api/routing/live-iptables')
|
||||
self.assertEqual(response.status_code, 500)
|
||||
mock_routing.get_live_iptables.side_effect = None
|
||||
# /api/routing/logs (GET)
|
||||
mock_routing.get_logs.return_value = {
|
||||
'iptables': 'iptables log data',
|
||||
|
||||
Reference in New Issue
Block a user