From 6d6f21a20a1a02bcb89caaef4aa4b20c18e6ee94 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Tue, 6 Aug 2024 19:14:53 +0100 Subject: [PATCH] #2706 - Additional assert on new test and a guard clause on LocalTerminalConnection.execute() to check that the Terminal service is running before sending a command --- src/primaite/simulator/system/services/terminal/terminal.py | 5 ++++- .../_primaite/_simulator/_system/_services/test_terminal.py | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/primaite/simulator/system/services/terminal/terminal.py b/src/primaite/simulator/system/services/terminal/terminal.py index 0ebae491..4be2c501 100644 --- a/src/primaite/simulator/system/services/terminal/terminal.py +++ b/src/primaite/simulator/system/services/terminal/terminal.py @@ -84,8 +84,11 @@ class LocalTerminalConnection(TerminalClientConnection): ip_address: str = "Local Connection" - def execute(self, command: Any) -> RequestResponse: + def execute(self, command: Any) -> Optional[RequestResponse]: """Execute a given command on local Terminal.""" + if self.parent_terminal.operating_state != ServiceOperatingState.RUNNING: + self.parent_terminal.sys_log.warning("Cannot process command as system not running") + return None if not self.is_active: self.parent_terminal.sys_log.warning("Connection inactive, cannot execute") return None diff --git a/tests/unit_tests/_primaite/_simulator/_system/_services/test_terminal.py b/tests/unit_tests/_primaite/_simulator/_system/_services/test_terminal.py index cdd0ebb3..9286fa49 100644 --- a/tests/unit_tests/_primaite/_simulator/_system/_services/test_terminal.py +++ b/tests/unit_tests/_primaite/_simulator/_system/_services/test_terminal.py @@ -376,3 +376,5 @@ def test_terminal_rejects_commands_if_disconnect(basic_network): assert remote_connection.execute(["software_manager", "application", "install", "RansomwareScript"]) is False assert not computer_b.software_manager.software.get("RansomwareScript") + + assert remote_connection.is_active is False