[GEMINI] Add unit tests for FormatParser subclasses and ParserFactory

This commit is contained in:
venus
2026-07-19 03:26:45 -05:00
parent 6d92d16dc3
commit 87b5d71a64

View File

@@ -605,3 +605,32 @@ def test_metadata_decoded_hints_cli():
assert "base64" in result.output
assert "flag{b64_metadata}" in result.output
# {{{ test_parser_factory_and_classes
def test_parser_factory_and_classes():
"""
Verifies that ParserFactory selects the correct parser subclass and
that individual FormatParser subclasses behave correctly.
"""
from ctf.forensics import ParserFactory, JpegParser, PngParser, GifParser, FallbackParser
# Assert JPEG
jpeg_parser = ParserFactory.get_parser(b"\xff\xd8\xff\xe0\x00\x10JFIF")
assert isinstance(jpeg_parser, JpegParser)
# Assert PNG
png_parser = ParserFactory.get_parser(b"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR")
assert isinstance(png_parser, PngParser)
# Assert GIF
gif_parser = ParserFactory.get_parser(b"GIF89a\x01\x00\x01\x00")
assert isinstance(gif_parser, GifParser)
# Assert Fallback
fallback_parser = ParserFactory.get_parser(b"MZ\x90\x00\x03\x00\x00\x00")
assert isinstance(fallback_parser, FallbackParser)
assert fallback_parser.parse_physical(b"") == {}
assert fallback_parser.get_comment(b"") == ""
assert fallback_parser.get_exif_tags(b"") == {}
# }}}