[GEMINI] Add unit tests for OOP RoutingEngine, BaseRoute, and MetadataRoute

This commit is contained in:
venus
2026-07-19 03:19:15 -05:00
parent eae3286da4
commit 6d92d16dc3

View File

@@ -80,3 +80,68 @@ def test_cli_analyse_no_file():
assert result.exit_code == 0
assert "No file attached to analyze" in result.output
assert "No clear flag found yet" in result.output
# }}}
# {{{ test_metadata_route_direct_execute
def test_metadata_route_direct_execute():
"""
Verifies that MetadataRoute can be instantiated and executed directly.
"""
from ctf.analysis import MetadataRoute, RouteResult
route = MetadataRoute()
assert route.route_name == "File Metadata Extraction"
assert route.is_applicable(Path("dummy.txt"))
# Executing on non-existent file
res = route.execute(Path("non_existent_file_xyz.bin"))
assert isinstance(res, RouteResult)
assert res.executed
assert not res.success
assert "File not found" in res.message
# }}}
# {{{ test_routing_engine_register_and_run
def test_routing_engine_register_and_run():
"""
Verifies that RoutingEngine successfully registers and runs applicable routes.
"""
from ctf.analysis import RoutingEngine, BaseRoute, RouteResult
class MockRoute(BaseRoute):
def __init__(self):
super().__init__("Mock Route")
def is_applicable(self, file_path: Path) -> bool:
return file_path.name.endswith(".mock")
def execute(self, file_path: Path) -> RouteResult:
return RouteResult(
route_name=self.route_name,
executed=True,
success=True,
message="Mock success",
extracted_flags=["flag{mock_success}"]
)
engine = RoutingEngine()
route = MockRoute()
engine.register_route(route)
# Run with no file path
res_no_path = engine.run_all(None)
assert not res_no_path.success
assert len(res_no_path.routes) == 1
assert not res_no_path.routes[0].executed
# Run with non-applicable file path
res_non_app = engine.run_all(Path("test.txt"))
assert not res_non_app.success
assert len(res_non_app.routes) == 0
# Run with applicable file path
res_app = engine.run_all(Path("test.mock"))
assert res_app.success
assert len(res_app.routes) == 1
assert res_app.routes[0].success
assert "flag{mock_success}" in res_app.routes[0].extracted_flags
# }}}