diff --git a/src/primaite/simulator/network/hardware/nodes/host/computer.py b/src/primaite/simulator/network/hardware/nodes/host/computer.py index 0b13163e..7ce64867 100644 --- a/src/primaite/simulator/network/hardware/nodes/host/computer.py +++ b/src/primaite/simulator/network/hardware/nodes/host/computer.py @@ -1,4 +1,7 @@ +from typing import ClassVar, Dict + from primaite.simulator.network.hardware.nodes.host.host_node import HostNode +from primaite.simulator.system.services.ftp.ftp_client import FTPClient class Computer(HostNode): @@ -29,4 +32,6 @@ class Computer(HostNode): * Web Browser """ + SYSTEM_SOFTWARE: ClassVar[Dict] = {**HostNode.SYSTEM_SOFTWARE, "FTPClient": FTPClient} + pass diff --git a/src/primaite/simulator/network/hardware/nodes/host/host_node.py b/src/primaite/simulator/network/hardware/nodes/host/host_node.py index df254b1e..caea2dd7 100644 --- a/src/primaite/simulator/network/hardware/nodes/host/host_node.py +++ b/src/primaite/simulator/network/hardware/nodes/host/host_node.py @@ -10,7 +10,6 @@ from primaite.simulator.network.transmission.data_link_layer import Frame from primaite.simulator.system.applications.web_browser import WebBrowser from primaite.simulator.system.services.arp.arp import ARP, ARPPacket from primaite.simulator.system.services.dns.dns_client import DNSClient -from primaite.simulator.system.services.ftp.ftp_client import FTPClient from primaite.simulator.system.services.icmp.icmp import ICMP from primaite.simulator.system.services.ntp.ntp_client import NTPClient from primaite.utils.validators import IPV4Address @@ -301,7 +300,6 @@ class HostNode(Node): "HostARP": HostARP, "ICMP": ICMP, "DNSClient": DNSClient, - "FTPClient": FTPClient, "NTPClient": NTPClient, "WebBrowser": WebBrowser, } diff --git a/tests/conftest.py b/tests/conftest.py index 37bc9581..83778748 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2,8 +2,9 @@ from typing import Any, Dict, Tuple import pytest +import yaml -from primaite import getLogger +from primaite import getLogger, PRIMAITE_PATHS from primaite.game.agent.actions import ActionManager from primaite.game.agent.interface import AbstractAgent from primaite.game.agent.observations.observation_manager import NestedObservation, ObservationManager @@ -65,7 +66,10 @@ class TestApplication(Application): @pytest.fixture(scope="function") def uc2_network() -> Network: - return arcd_uc2_network() + with open(PRIMAITE_PATHS.user_config_path / "example_config" / "data_manipulation.yaml") as f: + cfg = yaml.safe_load(f) + game = PrimaiteGame.from_config(cfg) + return game.simulation.network @pytest.fixture(scope="function") diff --git a/tests/e2e_integration_tests/test_uc2_data_manipulation_scenario.py b/tests/e2e_integration_tests/test_uc2_data_manipulation_scenario.py index e598dd19..4e203669 100644 --- a/tests/e2e_integration_tests/test_uc2_data_manipulation_scenario.py +++ b/tests/e2e_integration_tests/test_uc2_data_manipulation_scenario.py @@ -26,6 +26,9 @@ def test_data_manipulation(uc2_network): # First check that the DB client on the web_server can successfully query the users table on the database assert db_connection.query("SELECT") + db_manipulation_bot.data_manipulation_p_of_success = 1.0 + db_manipulation_bot.port_scan_p_of_success = 1.0 + # Now we run the DataManipulationBot db_manipulation_bot.attack() diff --git a/tests/integration_tests/network/test_multi_lan_internet_example_network.py b/tests/integration_tests/network/test_multi_lan_internet_example_network.py index f56fcbf2..f6d702d8 100644 --- a/tests/integration_tests/network/test_multi_lan_internet_example_network.py +++ b/tests/integration_tests/network/test_multi_lan_internet_example_network.py @@ -83,7 +83,7 @@ def test_sometech_webserver_cannot_access_ftp_on_sometech_storage_server(): some_tech_storage_srv.file_system.create_file(file_name="test.png") web_server: Server = network.get_node_by_hostname("some_tech_web_srv") - + web_server.software_manager.install(FTPClient) web_ftp_client: FTPClient = web_server.software_manager.software["FTPClient"] assert not web_ftp_client.request_file( diff --git a/tests/integration_tests/system/test_database_on_node.py b/tests/integration_tests/system/test_database_on_node.py index 9a396fae..8a2a9793 100644 --- a/tests/integration_tests/system/test_database_on_node.py +++ b/tests/integration_tests/system/test_database_on_node.py @@ -101,7 +101,7 @@ def test_database_client_native_connection_query(uc2_network): """Tests DB query across the network returns HTTP status 200 and date.""" web_server: Server = uc2_network.get_node_by_hostname("web_server") db_client: DatabaseClient = web_server.software_manager.software["DatabaseClient"] - + db_client.connect() assert db_client.query(sql="SELECT") assert db_client.query(sql="INSERT") @@ -222,6 +222,7 @@ def test_database_client_cannot_query_offline_database_server(uc2_network): web_server: Server = uc2_network.get_node_by_hostname("web_server") db_client: DatabaseClient = web_server.software_manager.software.get("DatabaseClient") + db_client.connect() assert len(db_client.client_connections) # Establish a new connection to the DatabaseService