feat: update test

This commit is contained in:
darshankabariya 2025-03-20 23:59:41 +05:30
parent 1b2be76e5f
commit a12a862dba
2 changed files with 44 additions and 8 deletions

View File

@ -333,7 +333,7 @@ suite "Onchain group manager":
debug "epoch in bytes", epochHex = epoch.inHex()
# generate proof
let validProofRes = manager.generateProof(
let validProofRes = await manager.generateProof(
data = messageBytes, epoch = epoch, messageId = MessageId(1)
)
@ -367,10 +367,13 @@ suite "Onchain group manager":
debug "epoch in bytes", epochHex = epoch.inHex()
# generate proof
let validProof = manager.generateProof(
let validProofRes = await manager.generateProof(
data = messageBytes, epoch = epoch, messageId = MessageId(0)
).valueOr:
raiseAssert $error
)
check:
validProofRes.isOk()
let validProof = validProofRes.get()
# validate the root (should be false)
let validated = manager.validateRoot(validProof.merkleRoot)
@ -410,10 +413,13 @@ suite "Onchain group manager":
debug "epoch in bytes", epochHex = epoch.inHex()
# generate proof
let validProof = manager.generateProof(
let validProofRes = await manager.generateProof(
data = messageBytes, epoch = epoch, messageId = MessageId(0)
).valueOr:
raiseAssert $error
)
check:
validProofRes.isOk()
let validProof = validProofRes.get()
# verify the proof (should be true)
let verified = manager.verifyProof(messageBytes, validProof).valueOr:
@ -454,7 +460,7 @@ suite "Onchain group manager":
debug "epoch in bytes", epochHex = epoch.inHex()
# generate proof
let invalidProofRes = manager.generateProof(
let invalidProofRes = await manager.generateProof(
data = messageBytes, epoch = epoch, messageId = MessageId(0)
)

View File

@ -64,6 +64,30 @@ type
keystorePassword*: Option[string]
registrationHandler*: Option[RegistrationHandler]
validRootBuffer*: Deque[MerkleNode]
latestProcessedBlock*: BlockNumber
proc setMetadata*(
g: OnchainGroupManager, lastProcessedBlock = none(BlockNumber)
): GroupManagerResult[void] =
let normalizedBlock =
if lastProcessedBlock.isSome():
lastProcessedBlock.get()
else:
g.latestProcessedBlock
try:
let metadataSetRes = g.rlnInstance.setMetadata(
RlnMetadata(
lastProcessedBlock: normalizedBlock.uint64,
chainId: g.chainId,
contractAddress: g.ethContractAddress,
validRoots: g.validRootBuffer.toSeq(),
)
)
if metadataSetRes.isErr():
return err("failed to persist rln metadata: " & metadataSetRes.error)
except CatchableError:
return err("failed to persist rln metadata: " & getCurrentExceptionMsg())
return ok()
proc fetchMerkleProofElements*(
g: OnchainGroupManager
@ -369,6 +393,12 @@ method verifyProof*(
else:
return ok(true)
method onRegister*(g: OnchainGroupManager, cb: OnRegisterCallback) {.gcsafe.} =
g.registerCb = some(cb)
method onWithdraw*(g: OnchainGroupManager, cb: OnWithdrawCallback) {.gcsafe.} =
g.withdrawCb = some(cb)
method init*(g: OnchainGroupManager): Future[GroupManagerResult[void]] {.async.} =
# check if the Ethereum client is reachable
var ethRpc: Web3