[GEMINI] Add unit tests for FormatParser subclasses and ParserFactory
This commit is contained in:
@@ -605,3 +605,32 @@ def test_metadata_decoded_hints_cli():
|
|||||||
assert "base64" in result.output
|
assert "base64" in result.output
|
||||||
assert "flag{b64_metadata}" 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"") == {}
|
||||||
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user