Align Store eligibility N8 tests with demo e2e reference wire.

Use the Step 17 query shape and 138-byte canonical hex matching
lez-payment-streams-core n8_canonical_wire_hex.
This commit is contained in:
Sergei Tikhomirov 2026-06-21 20:56:15 +02:00
parent 32fa7dbefd
commit 83785aa472
No known key found for this signature in database
GPG Key ID: 6A1F8ED9D6538027
2 changed files with 11 additions and 58 deletions

View File

@ -4,29 +4,18 @@ import std/options, testutils/unittests
import logos_delivery/waku/[common/paging, waku_core, waku_store/common, waku_store/eligibility_canonical] import logos_delivery/waku/[common/paging, waku_core, waku_store/common, waku_store/eligibility_canonical]
const N8ReferenceWireHex = const N8ReferenceWireHex =
"2f4c455a2f76302e312f53746f7265456c69676962696c6974792f0000000000050000007265712d3101010d0000002f77616b752f322f746f70696301000000140000002f6d792d6170702f312f636861742f70726f746f010a000000000000000002000000010101010101010101010101010101010101010101010101010101010101010102020202020202020202020202020202020202020202020202020202020202020001016400000000000000" "2f4c455a2f76302e312f53746f7265456c69676962696c6974792f0000000000050000007265712d3101010e0000002f77616b752f322f72732f302f31010000002c0000002f6c657a2d7061796d656e742d73747265616d732f312f6532652d656c69676962696c6974792f70726f746f010a0000000000000000000000000001016400000000000000"
procSuite "Waku Store - eligibility canonical (N8)": procSuite "Waku Store - eligibility canonical (N8)":
test "matches lez-payment-streams-core n8_canonical_wire_hex reference": test "matches lez-payment-streams-core n8_canonical_wire_hex reference":
let hash1 = block:
var h: WakuMessageHash
for i in 0 .. 31:
h[i] = byte(1)
h
let hash2 = block:
var h: WakuMessageHash
for i in 0 .. 31:
h[i] = byte(2)
h
let query = StoreQueryRequest( let query = StoreQueryRequest(
requestId: "req-1", requestId: "req-1",
includeData: true, includeData: true,
pubsubTopic: some("/waku/2/topic"), pubsubTopic: some("/waku/2/rs/0/1"),
contentTopics: @["/my-app/1/chat/proto"], contentTopics: @["/lez-payment-streams/1/e2e-eligibility/proto"],
startTime: some(Timestamp(10)), startTime: some(Timestamp(10)),
endTime: none(Timestamp), endTime: none(Timestamp),
messageHashes: @[hash1, hash2], messageHashes: @[],
paginationCursor: none(WakuMessageHash), paginationCursor: none(WakuMessageHash),
paginationForward: PagingDirection.FORWARD, paginationForward: PagingDirection.FORWARD,
paginationLimit: some(uint64(100)), paginationLimit: some(uint64(100)),

View File

@ -7,25 +7,9 @@ import logos_delivery/waku/waku_core, logos_delivery/waku/waku_store/[
import ../../library/store_eligibility/store_query_json import ../../library/store_eligibility/store_query_json
const N8ReferenceWireHex = const N8ReferenceWireHex =
"2f4c455a2f76302e312f53746f7265456c69676962696c6974792f0000000000050000007265712d3101010d0000002f77616b752f322f746f70696301000000140000002f6d792d6170702f312f636861742f70726f746f010a000000000000000002000000010101010101010101010101010101010101010101010101010101010101010102020202020202020202020202020202020202020202020202020202020202020001016400000000000000" "2f4c455a2f76302e312f53746f7265456c69676962696c6974792f0000000000050000007265712d3101010e0000002f77616b752f322f72732f302f31010000002c0000002f6c657a2d7061796d656e742d73747265616d732f312f6532652d656c69676962696c6974792f70726f746f010a0000000000000000000000000001016400000000000000"
const E2eQueryJson = """ const N8ReferenceQueryJson = """
{
"requestId": "req-1",
"includeData": true,
"pubsubTopic": "/waku/2/topic",
"contentTopics": ["/my-app/1/chat/proto"],
"timeStart": 10,
"paginationForward": true,
"paginationLimit": 100,
"messageHashes": [
"0101010101010101010101010101010101010101010101010101010101010101",
"0202020202020202020202020202020202020202020202020202020202020202"
]
}
"""
const Step17E2eQueryJson = """
{ {
"requestId": "req-1", "requestId": "req-1",
"includeData": true, "includeData": true,
@ -38,42 +22,22 @@ const Step17E2eQueryJson = """
} }
""" """
const Step17N8ReferenceWireHex =
"2f4c455a2f76302e312f53746f7265456c69676962696c6974792f0000000000050000007265712d3101010e0000002f77616b752f322f72732f302f31010000002c0000002f6c657a2d7061796d656e742d73747265616d732f312f6532652d656c69676962696c6974792f70726f746f010a0000000000000000000000000001016400000000000000"
procSuite "Waku Store - store query JSON (N8)": procSuite "Waku Store - store query JSON (N8)":
test "E2E query JSON matches n8_canonical_wire_hex reference": test "reference query JSON matches n8_canonical_wire_hex":
let parsed = parseJson(E2eQueryJson) let parsed = parseJson(N8ReferenceQueryJson)
let reqRes = storeQueryRequestFromJson(parsed) let reqRes = storeQueryRequestFromJson(parsed)
check reqRes.isOk() check reqRes.isOk()
let req = reqRes.get() let req = reqRes.get()
check storeEligibilityCanonicalHex(req) == N8ReferenceWireHex check storeEligibilityCanonicalHex(req) == N8ReferenceWireHex
test "Step 17 E2E query JSON matches lez-payment-streams n8 wire": test "reference query JSON protobuf roundtrip matches n8 wire":
let parsed = parseJson(Step17E2eQueryJson) let parsed = parseJson(N8ReferenceQueryJson)
let reqRes = storeQueryRequestFromJson(parsed)
check reqRes.isOk()
let req = reqRes.get()
check storeEligibilityCanonicalHex(req) == Step17N8ReferenceWireHex
test "Step 17 E2E query JSON protobuf roundtrip matches n8 wire":
let parsed = parseJson(Step17E2eQueryJson)
let reqRes = storeQueryRequestFromJson(parsed) let reqRes = storeQueryRequestFromJson(parsed)
check reqRes.isOk() check reqRes.isOk()
var req = reqRes.get() var req = reqRes.get()
req.eligibilityProof = some(@[byte(0xAB)]) req.eligibilityProof = some(@[byte(0xAB)])
let buf = req.encode().buffer let buf = req.encode().buffer
let decoded = StoreQueryRequest.decode(buf).get() let decoded = StoreQueryRequest.decode(buf).get()
check storeEligibilityCanonicalHex(decoded) == Step17N8ReferenceWireHex
test "E2E query JSON protobuf roundtrip matches N8 reference":
let parsed = parseJson(E2eQueryJson)
let reqRes = storeQueryRequestFromJson(parsed)
check reqRes.isOk()
var req = reqRes.get()
req.eligibilityProof = some(@[byte(0xAB), byte(0xCD)])
let buf = req.encode().buffer
let decoded = StoreQueryRequest.decode(buf).get()
check storeEligibilityCanonicalHex(decoded) == N8ReferenceWireHex check storeEligibilityCanonicalHex(decoded) == N8ReferenceWireHex
check decoded.eligibilityProof.isSome() check decoded.eligibilityProof.isSome()
check decoded.eligibilityProof.get() == @[byte(0xAB), byte(0xCD)] check decoded.eligibilityProof.get() == @[byte(0xAB)]