modjam/tests/test_payload.py

52 lines
1.7 KiB
Python
Raw Normal View History

from modjam import payload
def test_make_payload_pads_to_size():
text, token = payload.make_test_payload(size=80, seq=1, elapsed=0.5, ts=1234.5)
assert len(text) == 80
assert text.startswith("1234.5,0.5,1,")
assert f",{token}|" in text
def test_make_payload_short_when_prefix_exceeds_size():
text, token = payload.make_test_payload(size=5, seq=99, elapsed=12.34, ts=1234567890.0)
# prefix already > 5; payload returns prefix as-is
assert text.endswith("|")
assert token in text
def test_token_is_hex_and_correct_length():
_, token = payload.make_test_payload(size=80, seq=1, elapsed=0.0, ts=0.0)
assert len(token) == payload.TOKEN_LEN
assert all(c in "0123456789abcdef" for c in token)
def test_tokens_are_unique():
tokens = {payload.make_test_payload(80, 1, 0, 0)[1] for _ in range(50)}
assert len(tokens) == 50 # vanishingly unlikely to collide
def test_extract_token_roundtrip():
text, token = payload.make_test_payload(size=120, seq=42, elapsed=3.0, ts=999.0)
assert payload.extract_token(text) == token
def test_extract_token_returns_none_on_protocol_message():
assert payload.extract_token("1234567890|A|IDLE|-100") is None
assert payload.extract_token("START|name:foo") is None
assert payload.extract_token("STOP") is None
def test_extract_token_returns_none_on_legacy_format():
# 3-field legacy format (no token) — should not falsely extract
assert payload.extract_token("1234.5,1.0,42|abcdef") is None
def test_extract_token_rejects_non_hex():
assert payload.extract_token("1234.5,1.0,42,nothex!!|abc") is None
def test_extract_token_handles_empty():
assert payload.extract_token("") is None
assert payload.extract_token("nopipe") is None