#1962: clean up tests + improve the show command which shows the folders and files in file system

This commit is contained in:
Czar.Echavez
2023-11-06 11:56:44 +00:00
parent 535c1b19ab
commit eba10ae5ef
6 changed files with 121 additions and 93 deletions

View File

@@ -55,7 +55,23 @@ def test_file_repair_request(populated_file_system):
def test_file_restore_request(populated_file_system):
pass
"""Test that an agent can request that a file can be restored."""
fs, folder, file = populated_file_system
assert fs.get_file_by_id(folder_uuid=folder.uuid, file_uuid=file.uuid) is not None
fs.apply_request(request=["delete", "file", folder.uuid, file.uuid])
assert fs.get_file(folder_name=folder.name, file_name=file.name) is None
assert fs.get_file_by_id(folder_uuid=folder.uuid, file_uuid=file.uuid, include_deleted=True).deleted is True
fs.apply_request(request=["restore", "file", folder.uuid, file.uuid])
assert fs.get_file(folder_name=folder.name, file_name=file.name) is not None
assert fs.get_file(folder_name=folder.name, file_name=file.name).deleted is False
fs.apply_request(request=["file", file.uuid, "corrupt"])
assert fs.get_file(folder_name=folder.name, file_name=file.name).health_status == FileSystemItemHealthStatus.CORRUPT
fs.apply_request(request=["restore", "file", folder.uuid, file.uuid])
assert fs.get_file(folder_name=folder.name, file_name=file.name).health_status == FileSystemItemHealthStatus.GOOD
def test_file_corrupt_request(populated_file_system):

View File

@@ -18,6 +18,8 @@ def test_create_folder_and_file(file_system):
assert file_system.get_folder("test_folder").get_file("test_file.txt")
file_system.show(full=True)
def test_create_file_no_folder(file_system):
"""Tests that creating a file without a folder creates a folder and sets that as the file's parent."""
@@ -27,6 +29,8 @@ def test_create_file_no_folder(file_system):
assert file_system.get_folder("root").get_file("test_file.txt").file_type == FileType.TXT
assert file_system.get_folder("root").get_file("test_file.txt").size == 10
file_system.show(full=True)
def test_delete_file(file_system):
"""Tests that a file can be deleted."""
@@ -39,6 +43,8 @@ def test_delete_file(file_system):
assert len(file_system.get_folder("root").files) == 0
assert len(file_system.get_folder("root").deleted_files) == 1
file_system.show(full=True)
def test_delete_non_existent_file(file_system):
"""Tests deleting a non existent file."""
@@ -56,6 +62,8 @@ def test_delete_non_existent_file(file_system):
# The folder should still have 1 file
assert len(file_system.get_folder("root").files) == 1
file_system.show(full=True)
def test_delete_folder(file_system):
file_system.create_folder(folder_name="test_folder")
@@ -66,6 +74,8 @@ def test_delete_folder(file_system):
assert len(file_system.deleted_folders) == 1
file_system.show(full=True)
def test_create_duplicate_folder(file_system):
"""Test that creating a duplicate folder throws exception."""
@@ -78,6 +88,8 @@ def test_create_duplicate_folder(file_system):
assert len(file_system.folders) is 2
file_system.show(full=True)
def test_create_duplicate_file(file_system):
"""Test that creating a duplicate file throws exception."""
@@ -94,6 +106,8 @@ def test_create_duplicate_file(file_system):
assert len(file_system.get_folder("test_folder").files) == 1
file_system.show(full=True)
def test_deleting_a_non_existent_folder(file_system):
file_system.create_folder(folder_name="test_folder")
@@ -102,6 +116,8 @@ def test_deleting_a_non_existent_folder(file_system):
file_system.delete_folder(folder_name="does not exist!")
assert len(file_system.folders) == 2
file_system.show(full=True)
def test_deleting_root_folder_fails(file_system):
assert len(file_system.folders) == 1
@@ -109,6 +125,8 @@ def test_deleting_root_folder_fails(file_system):
file_system.delete_folder(folder_name="root")
assert len(file_system.folders) == 1
file_system.show(full=True)
def test_move_file(file_system):
"""Tests the file move function."""
@@ -127,6 +145,8 @@ def test_move_file(file_system):
assert len(file_system.get_folder("dst_folder").files) == 1
assert file_system.get_file("dst_folder", "test_file.txt").uuid == original_uuid
file_system.show(full=True)
def test_copy_file(file_system):
"""Tests the file copy function."""
@@ -145,6 +165,8 @@ def test_copy_file(file_system):
assert len(file_system.get_folder("dst_folder").files) == 1
assert file_system.get_file("dst_folder", "test_file.txt").uuid != original_uuid
file_system.show(full=True)
def test_get_file(file_system):
"""Test that files can be retrieved."""
@@ -162,6 +184,8 @@ def test_get_file(file_system):
file_system.delete_folder(folder_name="test_folder")
assert file_system.get_file_by_id(file_uuid=file2.uuid, include_deleted=True) is not None
file_system.show(full=True)
@pytest.mark.skip(reason="Skipping until we tackle serialisation")
def test_serialisation(file_system):
@@ -172,3 +196,5 @@ def test_serialisation(file_system):
deserialised_file_sys = FileSystem.model_validate_json(serialised_file_sys)
assert file_system.model_dump_json() == deserialised_file_sys.model_dump_json()
file_system.show(full=True)

View File

@@ -23,6 +23,8 @@ def test_file_delete_request(populated_file_system):
fs.apply_request(request=["delete", "file", folder.uuid, file.uuid])
assert fs.get_file(folder_name=folder.name, file_name=file.name) is None
fs.show(full=True)
def test_folder_delete_request(populated_file_system):
"""Test that an agent can request a folder deletion."""
@@ -34,87 +36,4 @@ def test_folder_delete_request(populated_file_system):
assert fs.get_folder_by_id(folder_uuid=folder.uuid) is None
assert fs.get_file_by_id(folder_uuid=folder.uuid, file_uuid=file.uuid) is None
def test_file_restore_request(populated_file_system):
"""Test that an agent can request that a file can be restored."""
fs, folder, file = populated_file_system
assert fs.get_file_by_id(folder_uuid=folder.uuid, file_uuid=file.uuid) is not None
fs.apply_request(request=["delete", "file", folder.uuid, file.uuid])
assert fs.get_file(folder_name=folder.name, file_name=file.name) is None
assert fs.get_file_by_id(folder_uuid=folder.uuid, file_uuid=file.uuid, include_deleted=True).deleted is True
fs.apply_request(request=["restore", "file", folder.uuid, file.uuid])
assert fs.get_file(folder_name=folder.name, file_name=file.name) is not None
assert fs.get_file(folder_name=folder.name, file_name=file.name).deleted is False
fs.apply_request(request=["file", file.uuid, "corrupt"])
assert fs.get_file(folder_name=folder.name, file_name=file.name).health_status == FileSystemItemHealthStatus.CORRUPT
fs.apply_request(request=["restore", "file", folder.uuid, file.uuid])
assert fs.get_file(folder_name=folder.name, file_name=file.name).health_status == FileSystemItemHealthStatus.GOOD
def test_folder_restore_request(populated_file_system):
"""Test that an agent can request that a folder can be restored."""
fs, folder, file = populated_file_system
assert fs.get_folder_by_id(folder_uuid=folder.uuid) is not None
assert fs.get_file_by_id(folder_uuid=folder.uuid, file_uuid=file.uuid) is not None
# delete folder
fs.apply_request(request=["delete", "folder", folder.uuid])
assert fs.get_folder(folder_name=folder.name) is None
assert fs.get_folder_by_id(folder_uuid=folder.uuid, include_deleted=True).deleted is True
assert fs.get_file(folder_name=folder.name, file_name=file.name) is None
assert fs.get_file_by_id(folder_uuid=folder.uuid, file_uuid=file.uuid, include_deleted=True).deleted is True
# restore folder
fs.apply_request(request=["restore", "folder", folder.uuid])
fs.apply_timestep(timestep=0)
assert fs.get_folder(folder_name=folder.name) is not None
assert (
fs.get_folder_by_id(folder_uuid=folder.uuid, include_deleted=True).health_status
== FileSystemItemHealthStatus.RESTORING
)
assert fs.get_folder_by_id(folder_uuid=folder.uuid, include_deleted=True).deleted is False
assert fs.get_file(folder_name=folder.name, file_name=file.name) is None
assert fs.get_file_by_id(folder_uuid=folder.uuid, file_uuid=file.uuid, include_deleted=True).deleted is True
fs.apply_timestep(timestep=1)
fs.apply_timestep(timestep=2)
assert fs.get_file(folder_name=folder.name, file_name=file.name) is not None
assert (
fs.get_file(folder_name=folder.name, file_name=file.name).health_status
is not FileSystemItemHealthStatus.RESTORING
)
assert fs.get_file(folder_name=folder.name, file_name=file.name).deleted is False
assert fs.get_file(folder_name=folder.name, file_name=file.name) is not None
assert fs.get_file_by_id(folder_uuid=folder.uuid, file_uuid=file.uuid, include_deleted=True).deleted is False
# corrupt folder
fs.apply_request(request=["folder", folder.uuid, "corrupt"])
assert fs.get_folder(folder_name=folder.name).health_status == FileSystemItemHealthStatus.CORRUPT
assert fs.get_file(folder_name=folder.name, file_name=file.name).health_status == FileSystemItemHealthStatus.CORRUPT
# restore folder
fs.apply_request(request=["restore", "folder", folder.uuid])
fs.apply_timestep(timestep=0)
assert fs.get_folder(folder_name=folder.name).health_status == FileSystemItemHealthStatus.RESTORING
assert fs.get_file(folder_name=folder.name, file_name=file.name).health_status == FileSystemItemHealthStatus.CORRUPT
fs.apply_timestep(timestep=1)
fs.apply_timestep(timestep=2)
assert fs.get_file(folder_name=folder.name, file_name=file.name) is not None
assert (
fs.get_file(folder_name=folder.name, file_name=file.name).health_status
is not FileSystemItemHealthStatus.RESTORING
)
assert fs.get_file(folder_name=folder.name, file_name=file.name).deleted is False
assert fs.get_file(folder_name=folder.name, file_name=file.name) is not None
assert fs.get_file_by_id(folder_uuid=folder.uuid, file_uuid=file.uuid, include_deleted=True).deleted is False
fs.show(full=True)

View File

@@ -74,7 +74,68 @@ def test_folder_repair_request(populated_file_system):
def test_folder_restore_request(populated_file_system):
pass
"""Test that an agent can request that a folder can be restored."""
fs, folder, file = populated_file_system
assert fs.get_folder_by_id(folder_uuid=folder.uuid) is not None
assert fs.get_file_by_id(folder_uuid=folder.uuid, file_uuid=file.uuid) is not None
# delete folder
fs.apply_request(request=["delete", "folder", folder.uuid])
assert fs.get_folder(folder_name=folder.name) is None
assert fs.get_folder_by_id(folder_uuid=folder.uuid, include_deleted=True).deleted is True
assert fs.get_file(folder_name=folder.name, file_name=file.name) is None
assert fs.get_file_by_id(folder_uuid=folder.uuid, file_uuid=file.uuid, include_deleted=True).deleted is True
# restore folder
fs.apply_request(request=["restore", "folder", folder.uuid])
fs.apply_timestep(timestep=0)
assert fs.get_folder(folder_name=folder.name) is not None
assert (
fs.get_folder_by_id(folder_uuid=folder.uuid, include_deleted=True).health_status
== FileSystemItemHealthStatus.RESTORING
)
assert fs.get_folder_by_id(folder_uuid=folder.uuid, include_deleted=True).deleted is False
assert fs.get_file(folder_name=folder.name, file_name=file.name) is None
assert fs.get_file_by_id(folder_uuid=folder.uuid, file_uuid=file.uuid, include_deleted=True).deleted is True
fs.apply_timestep(timestep=1)
fs.apply_timestep(timestep=2)
assert fs.get_file(folder_name=folder.name, file_name=file.name) is not None
assert (
fs.get_file(folder_name=folder.name, file_name=file.name).health_status
is not FileSystemItemHealthStatus.RESTORING
)
assert fs.get_file(folder_name=folder.name, file_name=file.name).deleted is False
assert fs.get_file(folder_name=folder.name, file_name=file.name) is not None
assert fs.get_file_by_id(folder_uuid=folder.uuid, file_uuid=file.uuid, include_deleted=True).deleted is False
# corrupt folder
fs.apply_request(request=["folder", folder.uuid, "corrupt"])
assert fs.get_folder(folder_name=folder.name).health_status == FileSystemItemHealthStatus.CORRUPT
assert fs.get_file(folder_name=folder.name, file_name=file.name).health_status == FileSystemItemHealthStatus.CORRUPT
# restore folder
fs.apply_request(request=["restore", "folder", folder.uuid])
fs.apply_timestep(timestep=0)
assert fs.get_folder(folder_name=folder.name).health_status == FileSystemItemHealthStatus.RESTORING
assert fs.get_file(folder_name=folder.name, file_name=file.name).health_status == FileSystemItemHealthStatus.CORRUPT
fs.apply_timestep(timestep=1)
fs.apply_timestep(timestep=2)
assert fs.get_file(folder_name=folder.name, file_name=file.name) is not None
assert (
fs.get_file(folder_name=folder.name, file_name=file.name).health_status
is not FileSystemItemHealthStatus.RESTORING
)
assert fs.get_file(folder_name=folder.name, file_name=file.name).deleted is False
assert fs.get_file(folder_name=folder.name, file_name=file.name) is not None
assert fs.get_file_by_id(folder_uuid=folder.uuid, file_uuid=file.uuid, include_deleted=True).deleted is False
def test_folder_corrupt_request(populated_file_system):