mirror of
https://github.com/logos-messaging/logos-delivery.git
synced 2026-07-20 03:30:22 +00:00
* convert all codecs except sds_persistency to proto2 * add common/protobuf_ext.nim: generic array[N,byte] protobuf extension * encode PeerId and MultiAddress via libp2p extensions * encode PublicKey as seq[byte] * change encode() to return seq[byte] and update all .encode().buffer call sites * reduce common/protobuf.nim to ProtobufError/ProtobufResult * add wire-format tests for message, filter v2, lightpush v3/legacy, rln proof * adapt chat2, chat2mix, chat2bridge, wakustealthcommitments * delete tests/common/test_protobuf_validation * add protobuf_serialization to logos_delivery.nimble
47 lines
1.7 KiB
Nim
47 lines
1.7 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().requestId == resp.requestId
|
|
check decoded.get().statusCode == resp.statusCode
|
|
check decoded.get().statusDesc == resp.statusDesc
|
|
check decoded.get().relayPeerCount == resp.relayPeerCount
|
|
|
|
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().requestId == req.requestId
|
|
check decoded.get().pubSubTopic == req.pubSubTopic
|
|
check decoded.get().message == req.message
|