mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-01-07 16:33:08 +00:00
chore: better proof handling in REST (#3286)
* better proof handling in REST
This commit is contained in:
parent
85da5efa13
commit
091024b376
@ -50,6 +50,7 @@ proc fakeWakuMessage*(
|
|||||||
meta: string | seq[byte] = newSeq[byte](),
|
meta: string | seq[byte] = newSeq[byte](),
|
||||||
ts = now(),
|
ts = now(),
|
||||||
ephemeral = false,
|
ephemeral = false,
|
||||||
|
proof = newSeq[byte](),
|
||||||
): WakuMessage =
|
): WakuMessage =
|
||||||
var payloadBytes: seq[byte]
|
var payloadBytes: seq[byte]
|
||||||
var metaBytes: seq[byte]
|
var metaBytes: seq[byte]
|
||||||
@ -71,4 +72,5 @@ proc fakeWakuMessage*(
|
|||||||
version: 2,
|
version: 2,
|
||||||
timestamp: ts,
|
timestamp: ts,
|
||||||
ephemeral: ephemeral,
|
ephemeral: ephemeral,
|
||||||
|
proof: proof,
|
||||||
)
|
)
|
||||||
|
|||||||
@ -128,7 +128,6 @@ suite "Onchain group manager":
|
|||||||
(await manager.startGroupSync()).isOkOr:
|
(await manager.startGroupSync()).isOkOr:
|
||||||
raiseAssert $error
|
raiseAssert $error
|
||||||
|
|
||||||
|
|
||||||
asyncTest "startGroupSync: should guard against uninitialized state":
|
asyncTest "startGroupSync: should guard against uninitialized state":
|
||||||
(await manager.startGroupSync()).isErrOr:
|
(await manager.startGroupSync()).isErrOr:
|
||||||
raiseAssert "Expected error when not initialized"
|
raiseAssert "Expected error when not initialized"
|
||||||
|
|||||||
@ -96,6 +96,29 @@ proc shutdown(self: RestLightPushTest) {.async.} =
|
|||||||
await allFutures(self.serviceNode.stop(), self.pushNode.stop())
|
await allFutures(self.serviceNode.stop(), self.pushNode.stop())
|
||||||
|
|
||||||
suite "Waku v2 Rest API - lightpush":
|
suite "Waku v2 Rest API - lightpush":
|
||||||
|
asyncTest "Push message with proof":
|
||||||
|
let restLightPushTest = await RestLightPushTest.init()
|
||||||
|
|
||||||
|
let message: RelayWakuMessage = fakeWakuMessage(
|
||||||
|
contentTopic = DefaultContentTopic,
|
||||||
|
payload = toBytes("TEST-1"),
|
||||||
|
proof = toBytes("proof-test"),
|
||||||
|
)
|
||||||
|
.toRelayWakuMessage()
|
||||||
|
|
||||||
|
check message.proof.isSome()
|
||||||
|
|
||||||
|
let requestBody =
|
||||||
|
PushRequest(pubsubTopic: some(DefaultPubsubTopic), message: message)
|
||||||
|
|
||||||
|
let response = await restLightPushTest.client.sendPushRequest(body = requestBody)
|
||||||
|
|
||||||
|
## Validate that the push request failed because the node is not
|
||||||
|
## connected to other node but, doesn't fail because of not properly
|
||||||
|
## handling the proof message attribute within the REST request.
|
||||||
|
check:
|
||||||
|
response.data == "Failed to request a message push: not_published_to_any_peer"
|
||||||
|
|
||||||
asyncTest "Push message request":
|
asyncTest "Push message request":
|
||||||
# Given
|
# Given
|
||||||
let restLightPushTest = await RestLightPushTest.init()
|
let restLightPushTest = await RestLightPushTest.init()
|
||||||
|
|||||||
@ -17,6 +17,7 @@ type RelayWakuMessage* = object
|
|||||||
timestamp*: Option[int64]
|
timestamp*: Option[int64]
|
||||||
meta*: Option[Base64String]
|
meta*: Option[Base64String]
|
||||||
ephemeral*: Option[bool]
|
ephemeral*: Option[bool]
|
||||||
|
proof*: Option[Base64String]
|
||||||
|
|
||||||
type
|
type
|
||||||
RelayGetMessagesResponse* = seq[RelayWakuMessage]
|
RelayGetMessagesResponse* = seq[RelayWakuMessage]
|
||||||
@ -36,6 +37,7 @@ proc toRelayWakuMessage*(msg: WakuMessage): RelayWakuMessage =
|
|||||||
else:
|
else:
|
||||||
none(Base64String),
|
none(Base64String),
|
||||||
ephemeral: some(msg.ephemeral),
|
ephemeral: some(msg.ephemeral),
|
||||||
|
proof: some(base64.encode(msg.proof)),
|
||||||
)
|
)
|
||||||
|
|
||||||
proc toWakuMessage*(msg: RelayWakuMessage, version = 0): Result[WakuMessage, string] =
|
proc toWakuMessage*(msg: RelayWakuMessage, version = 0): Result[WakuMessage, string] =
|
||||||
@ -45,6 +47,7 @@ proc toWakuMessage*(msg: RelayWakuMessage, version = 0): Result[WakuMessage, str
|
|||||||
version = uint32(msg.version.get(version))
|
version = uint32(msg.version.get(version))
|
||||||
meta = ?msg.meta.get(Base64String("")).decode()
|
meta = ?msg.meta.get(Base64String("")).decode()
|
||||||
ephemeral = msg.ephemeral.get(false)
|
ephemeral = msg.ephemeral.get(false)
|
||||||
|
proof = ?msg.proof.get(Base64String("")).decode()
|
||||||
|
|
||||||
var timestamp = msg.timestamp.get(0)
|
var timestamp = msg.timestamp.get(0)
|
||||||
|
|
||||||
@ -59,6 +62,7 @@ proc toWakuMessage*(msg: RelayWakuMessage, version = 0): Result[WakuMessage, str
|
|||||||
timestamp: timestamp,
|
timestamp: timestamp,
|
||||||
meta: meta,
|
meta: meta,
|
||||||
ephemeral: ephemeral,
|
ephemeral: ephemeral,
|
||||||
|
proof: proof,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -79,6 +83,8 @@ proc writeValue*(
|
|||||||
writer.writeField("meta", value.meta.get())
|
writer.writeField("meta", value.meta.get())
|
||||||
if value.ephemeral.isSome():
|
if value.ephemeral.isSome():
|
||||||
writer.writeField("ephemeral", value.ephemeral.get())
|
writer.writeField("ephemeral", value.ephemeral.get())
|
||||||
|
if value.proof.isSome():
|
||||||
|
writer.writeField("proof", value.proof.get())
|
||||||
writer.endRecord()
|
writer.endRecord()
|
||||||
|
|
||||||
proc readValue*(
|
proc readValue*(
|
||||||
@ -91,6 +97,7 @@ proc readValue*(
|
|||||||
timestamp = none(int64)
|
timestamp = none(int64)
|
||||||
meta = none(Base64String)
|
meta = none(Base64String)
|
||||||
ephemeral = none(bool)
|
ephemeral = none(bool)
|
||||||
|
proof = none(Base64String)
|
||||||
|
|
||||||
var keys = initHashSet[string]()
|
var keys = initHashSet[string]()
|
||||||
for fieldName in readObjectFields(reader):
|
for fieldName in readObjectFields(reader):
|
||||||
@ -116,6 +123,8 @@ proc readValue*(
|
|||||||
meta = some(reader.readValue(Base64String))
|
meta = some(reader.readValue(Base64String))
|
||||||
of "ephemeral":
|
of "ephemeral":
|
||||||
ephemeral = some(reader.readValue(bool))
|
ephemeral = some(reader.readValue(bool))
|
||||||
|
of "proof":
|
||||||
|
proof = some(reader.readValue(Base64String))
|
||||||
else:
|
else:
|
||||||
unrecognizedFieldWarning(value)
|
unrecognizedFieldWarning(value)
|
||||||
|
|
||||||
@ -132,4 +141,5 @@ proc readValue*(
|
|||||||
timestamp: timestamp,
|
timestamp: timestamp,
|
||||||
meta: meta,
|
meta: meta,
|
||||||
ephemeral: ephemeral,
|
ephemeral: ephemeral,
|
||||||
|
proof: proof,
|
||||||
)
|
)
|
||||||
|
|||||||
@ -65,8 +65,7 @@ proc decodeFromJsonBytes*[T](
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
except SerializationError:
|
except SerializationError:
|
||||||
# TODO: Do better error reporting here
|
err("Unable to deserialize data: " & getCurrentExceptionMsg())
|
||||||
err("Unable to deserialize data")
|
|
||||||
|
|
||||||
proc encodeIntoJsonString*(value: auto): SerdesResult[string] =
|
proc encodeIntoJsonString*(value: auto): SerdesResult[string] =
|
||||||
var encoded: string
|
var encoded: string
|
||||||
|
|||||||
@ -1,8 +1,6 @@
|
|||||||
{.push raises: [].}
|
{.push raises: [].}
|
||||||
|
|
||||||
import
|
import
|
||||||
./waku_store_sync/reconciliation,
|
./waku_store_sync/reconciliation, ./waku_store_sync/transfer, ./waku_store_sync/common
|
||||||
./waku_store_sync/transfer,
|
|
||||||
./waku_store_sync/common
|
|
||||||
|
|
||||||
export reconciliation, transfer, common
|
export reconciliation, transfer, common
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user