@@ -10,39 +10,6 @@ import (
1010 "github.com/ethereum/go-ethereum/params"
1111)
1212
13- func FuzzMessage_DecodeEvent (f * testing.F ) {
14- f .Fuzz (func (t * testing.T , validEvTopic bool , numTopics uint8 , data []byte ) {
15- if len (data ) < 32 {
16- return
17- }
18- if len (data ) > 100_000 {
19- return
20- }
21- if validEvTopic { // valid even signature topic implies a topic to be there
22- numTopics += 1
23- }
24- if numTopics > 4 { // There can be no more than 4 topics per log event
25- return
26- }
27- if int (numTopics )* 32 > len (data ) {
28- return
29- }
30- var topics []common.Hash
31- if validEvTopic {
32- topics = append (topics , ExecutingMessageEventTopic )
33- }
34- for i := 0 ; i < int (numTopics ); i ++ {
35- var topic common.Hash
36- copy (topic [:], data [:])
37- data = data [32 :]
38- }
39- require .NotPanics (t , func () {
40- var m Message
41- _ = m .DecodeEvent (topics , data )
42- })
43- })
44- }
45-
4613func TestSafetyLevel (t * testing.T ) {
4714 require .True (t , Invalid .wellFormatted ())
4815 require .True (t , Unsafe .wellFormatted ())
@@ -54,129 +21,6 @@ func TestSafetyLevel(t *testing.T) {
5421 require .False (t , SafetyLevel ("" ).wellFormatted ())
5522}
5623
57- func TestInteropMessageFormatEdgeCases (t * testing.T ) {
58- tests := []struct {
59- name string
60- log * types.Log
61- expectedError string
62- }{
63- {
64- name : "Empty Topics" ,
65- log : & types.Log {
66- Address : params .InteropCrossL2InboxAddress ,
67- Topics : []common.Hash {},
68- Data : make ([]byte , 32 * 5 ),
69- },
70- expectedError : "unexpected number of event topics: 0" ,
71- },
72- {
73- name : "Wrong Event Topic" ,
74- log : & types.Log {
75- Address : params .InteropCrossL2InboxAddress ,
76- Topics : []common.Hash {
77- common .BytesToHash ([]byte ("wrong topic" )),
78- common .BytesToHash ([]byte ("payloadHash" )),
79- },
80- Data : make ([]byte , 32 * 5 ),
81- },
82- expectedError : "unexpected event topic" ,
83- },
84- {
85- name : "Missing PayloadHash Topic" ,
86- log : & types.Log {
87- Address : params .InteropCrossL2InboxAddress ,
88- Topics : []common.Hash {
89- common .BytesToHash (ExecutingMessageEventTopic [:]),
90- },
91- Data : make ([]byte , 32 * 5 ),
92- },
93- expectedError : "unexpected number of event topics: 1" ,
94- },
95- {
96- name : "Too Many Topics" ,
97- log : & types.Log {
98- Address : params .InteropCrossL2InboxAddress ,
99- Topics : []common.Hash {
100- common .BytesToHash (ExecutingMessageEventTopic [:]),
101- common .BytesToHash ([]byte ("payloadHash" )),
102- common .BytesToHash ([]byte ("extra" )),
103- },
104- Data : make ([]byte , 32 * 5 ),
105- },
106- expectedError : "unexpected number of event topics: 3" ,
107- },
108- {
109- name : "Data Too Short" ,
110- log : & types.Log {
111- Address : params .InteropCrossL2InboxAddress ,
112- Topics : []common.Hash {
113- common .BytesToHash (ExecutingMessageEventTopic [:]),
114- common .BytesToHash ([]byte ("payloadHash" )),
115- },
116- Data : make ([]byte , 32 * 4 ), // One word too short
117- },
118- expectedError : "unexpected identifier data length: 128" ,
119- },
120- {
121- name : "Data Too Long" ,
122- log : & types.Log {
123- Address : params .InteropCrossL2InboxAddress ,
124- Topics : []common.Hash {
125- common .BytesToHash (ExecutingMessageEventTopic [:]),
126- common .BytesToHash ([]byte ("payloadHash" )),
127- },
128- Data : make ([]byte , 32 * 6 ), // One word too long
129- },
130- expectedError : "unexpected identifier data length: 192" ,
131- },
132- {
133- name : "Invalid Address Padding" ,
134- log : & types.Log {
135- Address : params .InteropCrossL2InboxAddress ,
136- Topics : []common.Hash {
137- common .BytesToHash (ExecutingMessageEventTopic [:]),
138- common .BytesToHash ([]byte ("payloadHash" )),
139- },
140- Data : func () []byte {
141- data := make ([]byte , 32 * 5 )
142- data [0 ] = 1 // Add non-zero byte in address padding
143- return data
144- }(),
145- },
146- expectedError : "invalid address padding" ,
147- },
148- {
149- name : "Invalid Block Number Padding" ,
150- log : & types.Log {
151- Address : params .InteropCrossL2InboxAddress ,
152- Topics : []common.Hash {
153- common .BytesToHash (ExecutingMessageEventTopic [:]),
154- common .BytesToHash ([]byte ("payloadHash" )),
155- },
156- Data : func () []byte {
157- data := make ([]byte , 32 * 5 )
158- data [32 + 23 ] = 1 // Add non-zero byte in block number padding
159- return data
160- }(),
161- },
162- expectedError : "invalid block number padding" ,
163- },
164- }
165-
166- for _ , tt := range tests {
167- t .Run (tt .name , func (t * testing.T ) {
168- var msg Message
169- err := msg .DecodeEvent (tt .log .Topics , tt .log .Data )
170- if tt .expectedError != "" {
171- require .Error (t , err )
172- require .ErrorContains (t , err , tt .expectedError )
173- } else {
174- require .NoError (t , err )
175- }
176- })
177- }
178- }
179-
18024func TestTxToInteropAccessList (t * testing.T ) {
18125 t .Run ("Tx has no access list" , func (t * testing.T ) {
18226 tx := types .NewTx (& types.DynamicFeeTx {})
0 commit comments