#2900 - New test to show that last_response updates as expected. Changelog updated.
This commit is contained in:
@@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
or `generate_seed_value` is set to `true`.
|
or `generate_seed_value` is set to `true`.
|
||||||
- ARP .show() method will now include the port number associated with each entry.
|
- ARP .show() method will now include the port number associated with each entry.
|
||||||
- Added `services_requires_scan` and `applications_requires_scan` to agent observation space config to allow the agents to be able to see actual health states of services and applications without requiring scans (Default `True`, set to `False` to allow agents to see actual health state without scanning).
|
- Added `services_requires_scan` and `applications_requires_scan` to agent observation space config to allow the agents to be able to see actual health states of services and applications without requiring scans (Default `True`, set to `False` to allow agents to see actual health state without scanning).
|
||||||
|
- Updated the `Terminal` class to provide response information when sending remote command execution.
|
||||||
|
|
||||||
## [3.3.0] - 2024-09-04
|
## [3.3.0] - 2024-09-04
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
@@ -214,7 +214,7 @@ class Terminal(Service):
|
|||||||
return self.last_response if not None else RequestResponse(status="failure", data={})
|
return self.last_response if not None else RequestResponse(status="failure", data={})
|
||||||
return RequestResponse(
|
return RequestResponse(
|
||||||
status="failure",
|
status="failure",
|
||||||
data={},
|
data={"reason": "Failed to execute command."},
|
||||||
)
|
)
|
||||||
|
|
||||||
rm.add_request(
|
rm.add_request(
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import pytest
|
|||||||
|
|
||||||
from primaite.game.agent.interface import ProxyAgent
|
from primaite.game.agent.interface import ProxyAgent
|
||||||
from primaite.game.game import PrimaiteGame
|
from primaite.game.game import PrimaiteGame
|
||||||
|
from primaite.interface.request import RequestResponse
|
||||||
from primaite.simulator.network.container import Network
|
from primaite.simulator.network.container import Network
|
||||||
from primaite.simulator.network.hardware.nodes.host.computer import Computer
|
from primaite.simulator.network.hardware.nodes.host.computer import Computer
|
||||||
from primaite.simulator.network.hardware.nodes.host.server import Server
|
from primaite.simulator.network.hardware.nodes.host.server import Server
|
||||||
@@ -403,3 +404,39 @@ def test_terminal_connection_timeout(basic_network):
|
|||||||
assert len(computer_b.user_session_manager.remote_sessions) == 0
|
assert len(computer_b.user_session_manager.remote_sessions) == 0
|
||||||
|
|
||||||
assert not remote_connection.is_active
|
assert not remote_connection.is_active
|
||||||
|
|
||||||
|
|
||||||
|
def test_terminal_last_response_updates(basic_network):
|
||||||
|
"""Test that the _last_response within Terminal correctly updates."""
|
||||||
|
network: Network = basic_network
|
||||||
|
computer_a: Computer = network.get_node_by_hostname("node_a")
|
||||||
|
terminal_a: Terminal = computer_a.software_manager.software.get("Terminal")
|
||||||
|
computer_b: Computer = network.get_node_by_hostname("node_b")
|
||||||
|
|
||||||
|
assert terminal_a.last_response is None
|
||||||
|
|
||||||
|
remote_connection = terminal_a.login(username="admin", password="admin", ip_address="192.168.0.11")
|
||||||
|
|
||||||
|
# Last response should be a successful logon
|
||||||
|
assert terminal_a.last_response == RequestResponse(status="success", data={"reason": "Login Successful"})
|
||||||
|
|
||||||
|
remote_connection.execute(command=["software_manager", "application", "install", "RansomwareScript"])
|
||||||
|
|
||||||
|
# Last response should now update following successful install
|
||||||
|
assert terminal_a.last_response == RequestResponse(status="success", data={})
|
||||||
|
|
||||||
|
remote_connection.execute(command=["software_manager", "application", "install", "RansomwareScript"])
|
||||||
|
|
||||||
|
# Last response should now update to success, but with supplied reason.
|
||||||
|
assert terminal_a.last_response == RequestResponse(status="success", data={"reason": "already installed"})
|
||||||
|
|
||||||
|
remote_connection.execute(command=["file_system", "create", "file", "folder123", "doggo.pdf", False])
|
||||||
|
|
||||||
|
# Check file was created.
|
||||||
|
assert computer_b.file_system.access_file(folder_name="folder123", file_name="doggo.pdf")
|
||||||
|
|
||||||
|
# Last response should be confirmation of file creation.
|
||||||
|
assert terminal_a.last_response == RequestResponse(
|
||||||
|
status="success",
|
||||||
|
data={"file_name": "doggo.pdf", "folder_name": "folder123", "file_type": "PDF", "file_size": 102400},
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user