@@ -30,6 +30,7 @@ import (
30
30
"testing"
31
31
32
32
"github.com/davecgh/go-spew/spew"
33
+
33
34
"github.com/ethereum/go-ethereum/common/hexutil"
34
35
"github.com/ethereum/go-ethereum/common/mclock"
35
36
"github.com/ethereum/go-ethereum/crypto"
@@ -283,9 +284,38 @@ func TestDecodeErrorsV5(t *testing.T) {
283
284
b = make ([]byte , 63 )
284
285
net .nodeA .expectDecodeErr (t , errInvalidHeader , b )
285
286
286
- // TODO some more tests would be nice :)
287
- // - check invalid authdata sizes
288
- // - check invalid handshake data sizes
287
+ t .Run ("invalid-handshake-datasize" , func (t * testing.T ) {
288
+ requiredNumber := 108
289
+
290
+ testDataFile := filepath .Join ("testdata" , "v5.1-ping-handshake" + ".txt" )
291
+ enc := hexFile (testDataFile )
292
+ //delete some byte from handshake to make it invalid
293
+ enc = enc [:len (enc )- requiredNumber ]
294
+ net .nodeB .expectDecodeErr (t , errMsgTooShort , enc )
295
+ })
296
+
297
+ t .Run ("invalid-auth-datasize" , func (t * testing.T ) {
298
+ testPacket := []byte {}
299
+ testDataFiles := []string {"v5.1-whoareyou" , "v5.1-ping-handshake" }
300
+ for counter , name := range testDataFiles {
301
+ file := filepath .Join ("testdata" , name + ".txt" )
302
+ enc := hexFile (file )
303
+ if counter == 0 {
304
+ //make whoareyou header
305
+ testPacket = enc [:sizeofStaticPacketData - 1 ]
306
+ testPacket = append (testPacket , 255 )
307
+ }
308
+ if counter == 1 {
309
+ //append invalid auth size
310
+ testPacket = append (testPacket , enc [sizeofStaticPacketData :]... )
311
+ }
312
+ }
313
+
314
+ wantErr := "invalid auth size"
315
+ if _ , err := net .nodeB .decode (testPacket ); strings .HasSuffix (err .Error (), wantErr ) {
316
+ t .Fatal (fmt .Errorf ("(%s) got err %q, want %q" , net .nodeB .ln .ID ().TerminalString (), err , wantErr ))
317
+ }
318
+ })
289
319
}
290
320
291
321
// This test checks that all test vectors can be decoded.
0 commit comments