diff --git a/tests/test_decode_event.py b/tests/test_decode_event.py index 3e55c42..11635b6 100644 --- a/tests/test_decode_event.py +++ b/tests/test_decode_event.py @@ -2,7 +2,7 @@ import pytest -from eth_event import EventError, decode_event, decode_logs +from eth_event import EventError, UnknownEvent, decode_event, decode_logs def test_decode_event(log, abi): @@ -25,12 +25,32 @@ def test_decode_logs(log, complex_log, abi): decode_logs([log, complex_log], abi) -def test_decode_logs_anonymous(anon_a_log, anon_b_log, complex_log, abi): +def test_decode_logs_allow_undecoded(anon_a_log, anon_b_log, complex_log, abi): logs = [anon_a_log, complex_log, anon_b_log] - with pytest.raises(EventError): - decode_logs(logs, abi, skip_anonymous=False) - events = decode_logs(logs, abi) - assert len(events) == 1 + events = decode_logs(logs, abi, allow_undecoded=True) + + assert len(events) == 3 + assert len([i for i in events if i["decoded"]]) == 1 + + +def test_decode_logs_not_allow_undecoded(anon_a_log, abi): + logs = [anon_a_log] + with pytest.raises(UnknownEvent): + decode_logs(logs, abi, allow_undecoded=False) + + +def test_decode_logs_no_topic(anon_a_log, abi): + logs = [anon_a_log] + event = decode_logs(logs, abi, allow_undecoded=True) + + assert event == [ + { + "name": None, + "data": "0x00000000000000000000000066ab6d9362d4f35596279692f0251db635165871", + "topics": [], + "decoded": False, + } + ] def test_decode_insufficient(complex_log, abi): diff --git a/tests/test_decode_trace.py b/tests/test_decode_trace.py index 5bea787..b009711 100644 --- a/tests/test_decode_trace.py +++ b/tests/test_decode_trace.py @@ -5,7 +5,7 @@ import pytest -from eth_event import StructLogError, decode_trace +from eth_event import StructLogError, UnknownEvent, decode_trace # LOG events are at indexes 378 and 536 @@ -46,3 +46,12 @@ def test_decode_raises(abi, raw_trace): del trace[378]["stack"] with pytest.raises(StructLogError): decode_trace(raw_trace["result"]["structLogs"][:400], abi) + + +def test_allow_undecoded(raw_trace): + decode_trace(raw_trace, [], allow_undecoded=True) + + +def test_not_allow_undecoded(raw_trace): + with pytest.raises(UnknownEvent): + decode_trace(raw_trace, [], allow_undecoded=False)