|
@@ -8,11 +8,17 @@ import pydot
|
|
|
# Application imports.
|
|
|
from conntrackt.models import Entity, Project, Communication
|
|
|
from conntrackt import utils
|
|
|
from .factories import setup_test_data
|
|
|
|
|
|
|
|
|
class GenerateEntityIptablesTest(TestCase):
|
|
|
|
|
|
fixtures = ['test-data.json']
|
|
|
def setUp(self):
|
|
|
"""
|
|
|
Set-up some test data.
|
|
|
"""
|
|
|
|
|
|
setup_test_data()
|
|
|
|
|
|
def test_generated_iptables(self):
|
|
|
"""
|
|
@@ -30,15 +36,15 @@ class GenerateEntityIptablesTest(TestCas
|
|
|
# Accept all incoming traffic on loopback interface.
|
|
|
-A INPUT -i lo -j ACCEPT
|
|
|
|
|
|
# MySQL.
|
|
|
-A INPUT -s 192.168.1.3/255.255.255.255 -d 192.168.1.1/255.255.255.255 -p tcp -m tcp --dport 3306 -j ACCEPT
|
|
|
|
|
|
# Ping.
|
|
|
# Communicate over ICMP:8
|
|
|
-A INPUT -s 192.168.1.2/255.255.255.255 -d 192.168.1.1/255.255.255.255 -p icmp -m icmp --icmp-type 8 -j ACCEPT
|
|
|
|
|
|
# SSH.
|
|
|
# Communicate over TCP:22
|
|
|
-A INPUT -s 192.168.1.2/255.255.255.255 -d 192.168.1.1/255.255.255.255 -p tcp -m tcp --dport 22 -j ACCEPT
|
|
|
-A INPUT -s 192.168.2.0/255.255.255.0 -d 192.168.1.1/255.255.255.255 -p tcp -m tcp --dport 22 -j ACCEPT
|
|
|
-A INPUT -s 10.10.4.0/255.255.255.0 -d 192.168.1.1/255.255.255.255 -p tcp -m tcp --dport 22 -j ACCEPT
|
|
|
|
|
|
# Communicate over TCP:3306
|
|
|
-A INPUT -s 192.168.1.3/255.255.255.255 -d 192.168.1.1/255.255.255.255 -p tcp -m tcp --dport 3306 -j ACCEPT
|
|
|
|
|
|
:OUTPUT ACCEPT [0:0]
|
|
|
:FORWARD DROP [0:0]
|
|
@@ -117,7 +123,12 @@ class GenerateProjectDiagramTest(TestCas
|
|
|
Tests the generate_project_diagram function.
|
|
|
"""
|
|
|
|
|
|
fixtures = ["test-data.json"]
|
|
|
def setUp(self):
|
|
|
"""
|
|
|
Set-up some test data.
|
|
|
"""
|
|
|
|
|
|
setup_test_data()
|
|
|
|
|
|
def test_unique_entity_colors(self):
|
|
|
"""
|
|
@@ -171,7 +182,7 @@ class GenerateProjectDiagramTest(TestCas
|
|
|
diagram = utils.generate_project_diagram(project)
|
|
|
|
|
|
# Set-up expected node names.
|
|
|
expected_node_names = ["Test Entity 1", "Test Entity 2", "Test Entity 3", "Test Subnet"]
|
|
|
expected_node_names = [u"Test Entity 1", u"Test Entity 2", u"Test Entity 3", u"Test Subnet 4"]
|
|
|
|
|
|
# Get all nodes from diagram.
|
|
|
clusters = diagram.get_subgraphs()
|
|
@@ -204,9 +215,12 @@ class GenerateProjectDiagramTest(TestCas
|
|
|
e.get_label().replace('"', '')) for e in edges]
|
|
|
|
|
|
# Create list of expected edge labels
|
|
|
expected_edge_labels = ['Test Entity 1 -> Test Entity 2 (UDP:123)', 'Test Entity 1 -> Test Entity 3 (UDP:53)',
|
|
|
'Test Entity 2 -> Test Entity 1 (ICMP:8)', 'Test Entity 2 -> Test Entity 1 (TCP:22)',
|
|
|
'Test Entity 3 -> Test Entity 1 (TCP:3306)', 'Test Subnet -> Test Entity 1 (TCP:22)']
|
|
|
expected_edge_labels = [u'Test Entity 1 -> Test Entity 2 (UDP:123)',
|
|
|
u'Test Entity 1 -> Test Entity 3 (UDP:53)',
|
|
|
u'Test Entity 2 -> Test Entity 1 (ICMP:8)',
|
|
|
u'Test Entity 2 -> Test Entity 1 (TCP:22)',
|
|
|
u'Test Entity 3 -> Test Entity 1 (TCP:3306)',
|
|
|
u'Test Subnet 4 -> Test Entity 1 (TCP:22)']
|
|
|
|
|
|
self.assertEqual(sorted(expected_edge_labels), sorted(edge_labels))
|
|
|
|