#1947: added test for agent actions + clearing up the implementation of the request managers for filesystem
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
from typing import Tuple
|
||||
|
||||
import pytest
|
||||
|
||||
from primaite.simulator.file_system.file_system import File, FileSystem, FileSystemItemStatus, Folder
|
||||
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def populated_file_system(file_system) -> Tuple[FileSystem, Folder, File]:
|
||||
"""Test that an agent can request a file scan."""
|
||||
folder = file_system.create_folder(folder_name="test_folder")
|
||||
file = file_system.create_file(folder_name="test_folder", file_name="test_file.txt")
|
||||
|
||||
return file_system, folder, file
|
||||
|
||||
|
||||
def test_file_scan_request(populated_file_system):
|
||||
"""Test that an agent can request a file scan."""
|
||||
fs, folder, file = populated_file_system
|
||||
|
||||
file.corrupt()
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.visible_status == FileSystemItemStatus.GOOD
|
||||
|
||||
fs.apply_request(request=["file", file.uuid, "scan"])
|
||||
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.visible_status == FileSystemItemStatus.CORRUPTED
|
||||
|
||||
|
||||
def test_folder_scan_request(populated_file_system):
|
||||
"""Test that an agent can request a folder scan."""
|
||||
fs, folder, file = populated_file_system
|
||||
|
||||
folder.corrupt()
|
||||
assert folder.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert folder.visible_status == FileSystemItemStatus.GOOD
|
||||
assert file.visible_status == FileSystemItemStatus.GOOD
|
||||
|
||||
fs.apply_request(request=["folder", folder.uuid, "scan"])
|
||||
|
||||
assert folder.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert folder.visible_status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.visible_status == FileSystemItemStatus.CORRUPTED
|
||||
|
||||
|
||||
def test_file_checkhash_request(populated_file_system):
|
||||
"""Test that an agent can request a file hash check."""
|
||||
fs, folder, file = populated_file_system
|
||||
|
||||
fs.apply_request(request=["file", file.uuid, "checkhash"])
|
||||
|
||||
assert file.status == FileSystemItemStatus.GOOD
|
||||
file.sim_size = 0
|
||||
|
||||
fs.apply_request(request=["file", file.uuid, "checkhash"])
|
||||
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
|
||||
|
||||
def test_folder_checkhash_request(populated_file_system):
|
||||
"""Test that an agent can request a folder hash check."""
|
||||
fs, folder, file = populated_file_system
|
||||
|
||||
fs.apply_request(request=["folder", folder.uuid, "checkhash"])
|
||||
|
||||
assert folder.status == FileSystemItemStatus.GOOD
|
||||
file.sim_size = 0
|
||||
|
||||
fs.apply_request(request=["folder", folder.uuid, "checkhash"])
|
||||
assert folder.status == FileSystemItemStatus.CORRUPTED
|
||||
|
||||
|
||||
def test_file_repair_request(populated_file_system):
|
||||
"""Test that an agent can request a file repair."""
|
||||
fs, folder, file = populated_file_system
|
||||
|
||||
file.corrupt()
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
|
||||
fs.apply_request(request=["file", file.uuid, "repair"])
|
||||
assert file.status == FileSystemItemStatus.GOOD
|
||||
|
||||
|
||||
def test_folder_repair_request(populated_file_system):
|
||||
"""Test that an agent can request a folder repair."""
|
||||
fs, folder, file = populated_file_system
|
||||
|
||||
folder.corrupt()
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert folder.status == FileSystemItemStatus.CORRUPTED
|
||||
|
||||
fs.apply_request(request=["folder", folder.uuid, "repair"])
|
||||
assert file.status == FileSystemItemStatus.GOOD
|
||||
assert folder.status == FileSystemItemStatus.GOOD
|
||||
|
||||
|
||||
def test_file_restore_request(populated_file_system):
|
||||
pass
|
||||
|
||||
|
||||
def test_folder_restore_request(populated_file_system):
|
||||
pass
|
||||
|
||||
|
||||
def test_file_corrupt_request(populated_file_system):
|
||||
"""Test that an agent can request a file corruption."""
|
||||
fs, folder, file = populated_file_system
|
||||
fs.apply_request(request=["file", file.uuid, "corrupt"])
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
|
||||
|
||||
def test_folder_corrupt_request(populated_file_system):
|
||||
"""Test that an agent can request a folder corruption."""
|
||||
fs, folder, file = populated_file_system
|
||||
fs.apply_request(request=["folder", folder.uuid, "corrupt"])
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert folder.status == FileSystemItemStatus.CORRUPTED
|
||||
|
||||
|
||||
def test_file_delete_request(populated_file_system):
|
||||
pass
|
||||
|
||||
|
||||
def test_folder_delete_request(populated_file_system):
|
||||
pass
|
||||
@@ -0,0 +1,23 @@
|
||||
import pytest
|
||||
|
||||
from primaite.simulator.network.hardware.base import Node, NodeOperatingState
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def node() -> Node:
|
||||
return Node(hostname="test")
|
||||
|
||||
|
||||
def test_node_startup(node):
|
||||
assert node.operating_state == NodeOperatingState.OFF
|
||||
node.apply_request(["startup"])
|
||||
assert node.operating_state == NodeOperatingState.ON
|
||||
|
||||
|
||||
def test_node_shutdown(node):
|
||||
assert node.operating_state == NodeOperatingState.OFF
|
||||
node.apply_request(["startup"])
|
||||
assert node.operating_state == NodeOperatingState.ON
|
||||
|
||||
node.apply_request(["shutdown"])
|
||||
assert node.operating_state == NodeOperatingState.OFF
|
||||
@@ -0,0 +1,79 @@
|
||||
from primaite.simulator.system.services.service import ServiceOperatingState
|
||||
|
||||
|
||||
def test_service_scan(service):
|
||||
"""Test that an agent can request a service scan."""
|
||||
service.start()
|
||||
assert service.operating_state == ServiceOperatingState.RUNNING
|
||||
assert service.visible_operating_state == ServiceOperatingState.STOPPED
|
||||
|
||||
service.apply_request(["scan"])
|
||||
assert service.operating_state == ServiceOperatingState.RUNNING
|
||||
assert service.visible_operating_state == ServiceOperatingState.RUNNING
|
||||
|
||||
|
||||
def test_service_stop(service):
|
||||
"""Test that an agent can request to stop a service."""
|
||||
service.start()
|
||||
assert service.operating_state == ServiceOperatingState.RUNNING
|
||||
|
||||
service.apply_request(["stop"])
|
||||
assert service.operating_state == ServiceOperatingState.STOPPED
|
||||
|
||||
|
||||
def test_service_start(service):
|
||||
"""Test that an agent can request to start a service."""
|
||||
assert service.operating_state == ServiceOperatingState.STOPPED
|
||||
service.apply_request(["start"])
|
||||
assert service.operating_state == ServiceOperatingState.RUNNING
|
||||
|
||||
|
||||
def test_service_pause(service):
|
||||
"""Test that an agent can request to pause a service."""
|
||||
service.start()
|
||||
assert service.operating_state == ServiceOperatingState.RUNNING
|
||||
|
||||
service.apply_request(["pause"])
|
||||
assert service.operating_state == ServiceOperatingState.PAUSED
|
||||
|
||||
|
||||
def test_service_resume(service):
|
||||
"""Test that an agent can request to resume a service."""
|
||||
service.start()
|
||||
assert service.operating_state == ServiceOperatingState.RUNNING
|
||||
|
||||
service.apply_request(["pause"])
|
||||
assert service.operating_state == ServiceOperatingState.PAUSED
|
||||
|
||||
service.apply_request(["resume"])
|
||||
assert service.operating_state == ServiceOperatingState.RUNNING
|
||||
|
||||
|
||||
def test_service_restart(service):
|
||||
"""Test that an agent can request to restart a service."""
|
||||
service.start()
|
||||
assert service.operating_state == ServiceOperatingState.RUNNING
|
||||
|
||||
service.apply_request(["restart"])
|
||||
assert service.operating_state == ServiceOperatingState.RESTARTING
|
||||
|
||||
|
||||
def test_service_disable(service):
|
||||
"""Test that an agent can request to disable a service."""
|
||||
service.start()
|
||||
assert service.operating_state == ServiceOperatingState.RUNNING
|
||||
|
||||
service.apply_request(["disable"])
|
||||
assert service.operating_state == ServiceOperatingState.DISABLED
|
||||
|
||||
|
||||
def test_service_enable(service):
|
||||
"""Test that an agent can request to enable a service."""
|
||||
service.start()
|
||||
assert service.operating_state == ServiceOperatingState.RUNNING
|
||||
|
||||
service.apply_request(["disable"])
|
||||
assert service.operating_state == ServiceOperatingState.DISABLED
|
||||
|
||||
service.apply_request(["enable"])
|
||||
assert service.operating_state == ServiceOperatingState.STOPPED
|
||||
@@ -1,24 +1,4 @@
|
||||
from typing import Any
|
||||
|
||||
import pytest
|
||||
|
||||
from primaite.simulator.network.transmission.transport_layer import Port
|
||||
from primaite.simulator.system.core.sys_log import SysLog
|
||||
from primaite.simulator.system.services.service import Service, ServiceOperatingState
|
||||
|
||||
|
||||
class TestService(Service):
|
||||
"""Test Service class"""
|
||||
|
||||
def receive(self, payload: Any, session_id: str, **kwargs) -> bool:
|
||||
pass
|
||||
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def service(file_system) -> TestService:
|
||||
return TestService(
|
||||
name="TestService", port=Port.ARP, file_system=file_system, sys_log=SysLog(hostname="test_service")
|
||||
)
|
||||
from primaite.simulator.system.services.service import ServiceOperatingState
|
||||
|
||||
|
||||
def test_scan(service):
|
||||
|
||||
Reference in New Issue
Block a user