aboutsummaryrefslogtreecommitdiff
path: root/tests/models
diff options
context:
space:
mode:
Diffstat (limited to 'tests/models')
-rw-r--r--tests/models/network/__init__.py0
-rw-r--r--tests/models/network/test_mtr.py26
-rw-r--r--tests/models/network/test_nmap.py29
-rw-r--r--tests/models/network/test_nmap_parser.py22
-rw-r--r--tests/models/network/test_rdns.py33
5 files changed, 110 insertions, 0 deletions
diff --git a/tests/models/network/__init__.py b/tests/models/network/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/models/network/__init__.py
diff --git a/tests/models/network/test_mtr.py b/tests/models/network/test_mtr.py
new file mode 100644
index 0000000..2965300
--- /dev/null
+++ b/tests/models/network/test_mtr.py
@@ -0,0 +1,26 @@
+from generalresearch.models.network.mtr.execute import execute_mtr
+import faker
+
+from generalresearch.models.network.tool_run import ToolName, ToolClass
+
+fake = faker.Faker()
+
+
+def test_execute_mtr(toolrun_manager):
+ ip = "65.19.129.53"
+
+ run = execute_mtr(ip=ip, report_cycles=3)
+ assert run.tool_name == ToolName.MTR
+ assert run.tool_class == ToolClass.TRACEROUTE
+ assert run.ip == ip
+ result = run.parsed
+
+ last_hop = result.hops[-1]
+ assert last_hop.asn == 6939
+ assert last_hop.domain == "grlengine.com"
+
+ last_hop_1 = result.hops[-2]
+ assert last_hop_1.asn == 6939
+ assert last_hop_1.domain == "he.net"
+
+ toolrun_manager.create_mtr_run(run)
diff --git a/tests/models/network/test_nmap.py b/tests/models/network/test_nmap.py
new file mode 100644
index 0000000..0be98d4
--- /dev/null
+++ b/tests/models/network/test_nmap.py
@@ -0,0 +1,29 @@
+import subprocess
+
+from generalresearch.models.network.definitions import IPProtocol
+from generalresearch.models.network.nmap.execute import execute_nmap
+import faker
+
+from generalresearch.models.network.nmap.result import PortState
+from generalresearch.models.network.tool_run import ToolName, ToolClass
+
+fake = faker.Faker()
+
+
+def resolve(host):
+ return subprocess.check_output(["dig", host, "+short"]).decode().strip()
+
+
+def test_execute_nmap_scanme(toolrun_manager):
+ ip = resolve("scanme.nmap.org")
+
+ run = execute_nmap(ip=ip, top_ports=None, ports="20-30", enable_advanced=False)
+ assert run.tool_name == ToolName.NMAP
+ assert run.tool_class == ToolClass.PORT_SCAN
+ assert run.ip == ip
+ result = run.parsed
+
+ port22 = result._port_index[(IPProtocol.TCP, 22)]
+ assert port22.state == PortState.OPEN
+
+ toolrun_manager.create_nmap_run(run)
diff --git a/tests/models/network/test_nmap_parser.py b/tests/models/network/test_nmap_parser.py
new file mode 100644
index 0000000..96d7b37
--- /dev/null
+++ b/tests/models/network/test_nmap_parser.py
@@ -0,0 +1,22 @@
+import os
+
+import pytest
+
+from generalresearch.models.network.nmap.parser import parse_nmap_xml
+
+@pytest.fixture
+def nmap_raw_output_2(request) -> str:
+ fp = os.path.join(request.config.rootpath, "data/nmaprun2.xml")
+ with open(fp, "r") as f:
+ data = f.read()
+ return data
+
+
+def test_nmap_xml_parser(nmap_raw_output, nmap_raw_output_2):
+ n = parse_nmap_xml(nmap_raw_output)
+ assert n.tcp_open_ports == [61232]
+ assert len(n.trace.hops) == 18
+
+ n = parse_nmap_xml(nmap_raw_output_2)
+ assert n.tcp_open_ports == [22, 80, 9929, 31337]
+ assert n.trace is None
diff --git a/tests/models/network/test_rdns.py b/tests/models/network/test_rdns.py
new file mode 100644
index 0000000..e56c494
--- /dev/null
+++ b/tests/models/network/test_rdns.py
@@ -0,0 +1,33 @@
+from generalresearch.models.network.rdns.execute import execute_rdns
+import faker
+
+from generalresearch.models.network.tool_run import ToolName, ToolClass
+
+fake = faker.Faker()
+
+
+def test_execute_rdns_grl(toolrun_manager):
+ ip = "65.19.129.53"
+ run = execute_rdns(ip=ip)
+ assert run.tool_name == ToolName.DIG
+ assert run.tool_class == ToolClass.RDNS
+ assert run.ip == ip
+ result = run.parsed
+ assert result.primary_hostname == "in1-smtp.grlengine.com"
+ assert result.primary_domain == "grlengine.com"
+ assert result.hostname_count == 1
+
+ toolrun_manager.create_rdns_run(run)
+
+
+def test_execute_rdns_none(toolrun_manager):
+ ip = fake.ipv6()
+ run = execute_rdns(ip)
+ result = run.parsed
+
+ assert result.primary_hostname is None
+ assert result.primary_domain is None
+ assert result.hostname_count == 0
+ assert result.hostnames == []
+
+ toolrun_manager.create_rdns_run(run)