logos-delivery/tests/waku_lightpush/test_rpc_codec.nim
2026-07-16 17:01:21 -03:00

42 lines
1.4 KiB
Nim

{.used.}
import results, testutils/unittests
import
logos_delivery/waku/waku_lightpush/rpc,
logos_delivery/waku/waku_lightpush/rpc_codec,
logos_delivery/waku/waku_core
# response: requestId "x" (0a 01 78) + statusCode 200 in field 10 (50 c8 01)
const StatusResponse200 = @[byte 0x0a, 0x01, 0x78, 0x50, 0xc8, 0x01]
suite "Waku Lightpush v3 - codec wire format":
test "LightPushResponse emits statusCode (distinct uint32)":
let resp = LightPushResponse(
requestId: "x",
statusCode: LightPushStatusCode(200),
statusDesc: Opt.none(string),
relayPeerCount: Opt.none(uint32),
)
check resp.encode() == StatusResponse200
test "LightPushResponse round-trips with all fields":
let resp = LightPushResponse(
requestId: "req-1",
statusCode: LightPushStatusCode(429),
statusDesc: Opt.some("too many"),
relayPeerCount: Opt.some(3'u32),
)
let decoded = LightPushResponse.decode(resp.encode())
check decoded.isOk()
check decoded.get() == resp
test "LightpushRequest round-trips with nested WakuMessage":
let req = LightpushRequest(
requestId: "req-2",
pubSubTopic: Opt.some("/waku/2/rs/0/0"),
message: WakuMessage(payload: @[byte 1, 2, 3], contentTopic: "/a/1/b/c"),
)
let decoded = LightpushRequest.decode(req.encode())
check decoded.isOk()
check decoded.get() == req