#1947: added ability for files and folders to be scanned, corrupted and repaired

This commit is contained in:
Czar.Echavez
2023-10-10 15:14:47 +01:00
parent a1b4d3d5e0
commit 060bbf0506
6 changed files with 227 additions and 35 deletions

View File

@@ -1,6 +1,6 @@
import pytest
from primaite.simulator.file_system.file_system import FileSystem
from primaite.simulator.file_system.file_system import File, FileSystem, FileSystemItemStatus, Folder
from primaite.simulator.file_system.file_type import FileType
@@ -135,6 +135,40 @@ def test_folder_quarantine_state(file_system):
assert folder.quarantine_status() is False
def test_file_corrupt_repair(file_system):
"""Test the ability to corrupt and repair files."""
folder: Folder = file_system.create_folder(folder_name="test_folder")
file: File = file_system.create_file(file_name="test_file.txt", folder_name="test_folder")
file.corrupt()
assert folder.status == FileSystemItemStatus.GOOD
assert file.status == FileSystemItemStatus.CORRUPTED
file.repair()
assert folder.status == FileSystemItemStatus.GOOD
assert file.status == FileSystemItemStatus.GOOD
def test_folder_corrupt_repair(file_system):
"""Test the ability to corrupt and repair folders."""
folder: Folder = file_system.create_folder(folder_name="test_folder")
file_system.create_file(file_name="test_file.txt", folder_name="test_folder")
folder.corrupt()
file = folder.get_file(file_name="test_file.txt")
assert folder.status == FileSystemItemStatus.CORRUPTED
assert file.status == FileSystemItemStatus.CORRUPTED
folder.repair()
file = folder.get_file(file_name="test_file.txt")
assert folder.status == FileSystemItemStatus.GOOD
assert file.status == FileSystemItemStatus.GOOD
@pytest.mark.skip(reason="Skipping until we tackle serialisation")
def test_serialisation(file_system):
"""Test to check that the object serialisation works correctly."""

View File

@@ -0,0 +1,80 @@
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")
)
def test_scan(service):
assert service.operating_state == ServiceOperatingState.STOPPED
assert service.visible_operating_state == ServiceOperatingState.STOPPED
service.start()
assert service.operating_state == ServiceOperatingState.RUNNING
assert service.visible_operating_state == ServiceOperatingState.STOPPED
service.scan()
assert service.operating_state == ServiceOperatingState.RUNNING
assert service.visible_operating_state == ServiceOperatingState.RUNNING
def test_start_service(service):
assert service.operating_state == ServiceOperatingState.STOPPED
service.start()
assert service.operating_state == ServiceOperatingState.RUNNING
def test_stop_service(service):
service.start()
assert service.operating_state == ServiceOperatingState.RUNNING
service.stop()
assert service.operating_state == ServiceOperatingState.STOPPED
def test_pause_and_resume_service(service):
assert service.operating_state == ServiceOperatingState.STOPPED
service.resume()
assert service.operating_state == ServiceOperatingState.STOPPED
service.start()
service.pause()
assert service.operating_state == ServiceOperatingState.PAUSED
service.resume()
assert service.operating_state == ServiceOperatingState.RUNNING
def test_restart(service):
assert service.operating_state == ServiceOperatingState.STOPPED
service.restart()
assert service.operating_state == ServiceOperatingState.STOPPED
service.start()
service.restart()
assert service.operating_state == ServiceOperatingState.RESTARTING
def test_enable_disable(service):
service.disable()
assert service.operating_state == ServiceOperatingState.DISABLED
service.enable()
assert service.operating_state == ServiceOperatingState.STOPPED