[GEMINI] Add unit tests for concrete BaseDecoder subclasses and DecodingRegistry

This commit is contained in:
venus
2026-07-19 03:27:18 -05:00
parent 87b5d71a64
commit 0cd24740c8

View File

@@ -133,5 +133,31 @@ def test_try_decode_metadata_rot13_unique_only():
assert "rot13" not in res_duplicate assert "rot13" not in res_duplicate
# }}} # }}}
# {{{ test_decoder_subclasses_and_registry
def test_decoder_subclasses_and_registry():
"""
Verifies that DecodingRegistry successfully registers concrete decoders and
that individual BaseDecoder subclasses correctly decode matching strings.
"""
from ctf.decoding import DecodingRegistry, Base64Decoder, HexDecoder, Rot13Decoder
registry = DecodingRegistry.get_default_registry()
assert len(registry.decoders) >= 7
# Assert Base64Decoder behaves correctly
b64_dec = Base64Decoder()
assert b64_dec.name == "base64"
assert b64_dec.is_applicable("ZmxhZ3tiNjRfbWV0YWRhdGF9")
assert not b64_dec.is_applicable("A")
assert b64_dec.attempt_single("ZmxhZ3tiNjRfbWV0YWRhdGF9") == "flag{b64_metadata}"
# Assert Rot13Decoder validates correctly
rot_dec = Rot13Decoder()
assert rot_dec.name == "rot13"
assert rot_dec.attempt_single("synt{ebg13}") == "flag{rot13}"
assert rot_dec.attempt_single("abezny grkg") is None # Fails validate check
# }}}