nim-eth/tests/rlp/test_empty_string.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()