mirror of https://github.com/status-im/nim-eth.git
36 lines
850 B
Nim
36 lines
850 B
Nim
|
{.used.}
|
||
|
|
||
|
import
|
||
|
unittest2,
|
||
|
stew/byteutils,
|
||
|
../../eth/rlp
|
||
|
|
||
|
type
|
||
|
HelloObj = object
|
||
|
version*: uint
|
||
|
clientId*: string
|
||
|
capabilities*: seq[(string,int)]
|
||
|
listenPort*: uint
|
||
|
nodeId*: array[64, byte]
|
||
|
|
||
|
const
|
||
|
# Some hello message seen on rlpx
|
||
|
a = "f84c0580c6c5836574684280b840"
|
||
|
b = "8ee5fa75daaf0b96a01162f4e1d23daaa676246ccfa3b4787b09915bae9d66173827704c5b80c235ca32265ff04c36d19a2331173e8ff73880dd200648979bb4"
|
||
|
|
||
|
hello = HelloObj(
|
||
|
version: 5,
|
||
|
clientId: "",
|
||
|
capabilities: @[("eth", 66)],
|
||
|
listenPort: 0,
|
||
|
nodeId: hexToByteArray[64](b))
|
||
|
|
||
|
proc suite() =
|
||
|
suite "Pathological zero string decoding":
|
||
|
test "decode rlpx hello message":
|
||
|
# Unless fixed, this check crashes with an `IndexDefect` in the
|
||
|
# function `rlp.toString()`
|
||
|
check (a & b).hexToSeqByte.decode(HelloObj) == hello
|
||
|
|
||
|
suite()
|