modify rln tests that use group manager

This commit is contained in:
stubbsta 2025-12-19 14:50:05 +02:00
parent a87cb50e3e
commit dce45ba9e8
No known key found for this signature in database
4 changed files with 68 additions and 86 deletions

View File

@ -87,7 +87,8 @@ suite "Onchain group manager":
let merkleRootBefore = waitFor manager.fetchMerkleRoot() let merkleRootBefore = waitFor manager.fetchMerkleRoot()
(waitFor manager.register(credentials, UserMessageLimit(20))).isOkOr: (waitFor manager.register(credentials, UserMessageLimit(20))).isOkOr:
raiseAssert "Failed to register: " & error assert false,
"error returned when calling register: " & error
discard waitFor withTimeout(trackRootChanges(manager), 15.seconds) discard waitFor withTimeout(trackRootChanges(manager), 15.seconds)
@ -111,7 +112,7 @@ suite "Onchain group manager":
for i in 0 ..< credentials.len(): for i in 0 ..< credentials.len():
info "Registering credential", index = i, credential = credentials[i] info "Registering credential", index = i, credential = credentials[i]
(waitFor manager.register(credentials[i], UserMessageLimit(20))).isOkOr: (waitFor manager.register(credentials[i], UserMessageLimit(20))).isOkOr:
raiseAssert "Failed to register credential " & $i & ": " & error assert false, "Failed to register credential " & $i & ": " & error
discard waitFor manager.updateRoots() discard waitFor manager.updateRoots()
let merkleRootAfter = waitFor manager.fetchMerkleRoot() let merkleRootAfter = waitFor manager.fetchMerkleRoot()
@ -143,7 +144,7 @@ suite "Onchain group manager":
(waitFor manager.register(idCredentials, UserMessageLimit(20))).isOkOr: (waitFor manager.register(idCredentials, UserMessageLimit(20))).isOkOr:
assert false, assert false,
"exception raised when calling register: " & getCurrentExceptionMsg() "error returned when calling register: " & error
let merkleRootAfter = waitFor manager.fetchMerkleRoot() let merkleRootAfter = waitFor manager.fetchMerkleRoot()
@ -170,26 +171,24 @@ suite "Onchain group manager":
manager.onRegister(callback) manager.onRegister(callback)
try: (waitFor manager.register(
waitFor manager.register( RateCommitment(
RateCommitment( idCommitment: idCommitment, userMessageLimit: UserMessageLimit(20)
idCommitment: idCommitment, userMessageLimit: UserMessageLimit(20)
)
) )
except Exception, CatchableError: )).isOkOr:
assert false, "exception raised: " & getCurrentExceptionMsg() assert false,
"error returned when calling register: " & error
waitFor fut waitFor fut
test "withdraw: should guard against uninitialized state": test "withdraw: should guard against uninitialized state":
let idSecretHash = generateCredentials().idSecretHash let idSecretHash = generateCredentials().idSecretHash
try: let res = waitFor manager.withdraw(idSecretHash)
waitFor manager.withdraw(idSecretHash)
except CatchableError: check:
assert true res.isErr()
except Exception: res.error == "Not initialized: OnchainGroupManager is not initialized"
assert false, "exception raised: " & getCurrentExceptionMsg()
test "validateRoot: should validate good root": test "validateRoot: should validate good root":
let idCredentials = generateCredentials() let idCredentials = generateCredentials()
@ -210,10 +209,8 @@ suite "Onchain group manager":
(waitFor manager.init()).isOkOr: (waitFor manager.init()).isOkOr:
raiseAssert $error raiseAssert $error
try: (waitFor manager.register(idCredentials, UserMessageLimit(20))).isOkOr:
waitFor manager.register(idCredentials, UserMessageLimit(20)) assert false, "error returned : " & getCurrentExceptionMsg()
except Exception, CatchableError:
assert false, "exception raised: " & getCurrentExceptionMsg()
waitFor fut waitFor fut
@ -292,10 +289,10 @@ suite "Onchain group manager":
manager.onRegister(callback) manager.onRegister(callback)
try:
waitFor manager.register(credentials, UserMessageLimit(20)) (waitFor manager.register(credentials, UserMessageLimit(20))).isOkOr:
except Exception, CatchableError: assert false,
assert false, "exception raised: " & getCurrentExceptionMsg() "error returned when calling register: " & error
waitFor fut waitFor fut
let rootUpdated = waitFor manager.updateRoots() let rootUpdated = waitFor manager.updateRoots()
@ -330,11 +327,9 @@ suite "Onchain group manager":
let idCredential = generateCredentials() let idCredential = generateCredentials()
try: (waitFor manager.register(idCredential, UserMessageLimit(20))).isOkOr:
waitFor manager.register(idCredential, UserMessageLimit(20)) assert false,
except Exception, CatchableError: "error returned when calling register: " & error
assert false,
"exception raised when calling startGroupSync: " & getCurrentExceptionMsg()
let messageBytes = "Hello".toBytes() let messageBytes = "Hello".toBytes()
@ -388,14 +383,12 @@ suite "Onchain group manager":
return callback return callback
try: manager.onRegister(generateCallback(futures, credentials))
manager.onRegister(generateCallback(futures, credentials))
for i in 0 ..< credentials.len(): for i in 0 ..< credentials.len():
waitFor manager.register(credentials[i], UserMessageLimit(20)) (waitFor manager.register(credentials[i], UserMessageLimit(20))).isOkOr:
discard waitFor manager.updateRoots() assert false, "Failed to register credential " & $i & ": " & error
except Exception, CatchableError: discard waitFor manager.updateRoots()
assert false, "exception raised: " & getCurrentExceptionMsg()
waitFor allFutures(futures) waitFor allFutures(futures)

View File

@ -239,11 +239,8 @@ suite "Waku rln relay":
let manager = cast[OnchainGroupManager](wakuRlnRelay.groupManager) let manager = cast[OnchainGroupManager](wakuRlnRelay.groupManager)
let idCredentials = generateCredentials() let idCredentials = generateCredentials()
try: (waitFor manager.register(idCredentials, UserMessageLimit(20))).isOkOr:
waitFor manager.register(idCredentials, UserMessageLimit(20)) assert false, "error returned when calling register: " & error
except Exception, CatchableError:
assert false,
"exception raised when calling register: " & getCurrentExceptionMsg()
let epoch1 = wakuRlnRelay.getCurrentEpoch() let epoch1 = wakuRlnRelay.getCurrentEpoch()
@ -296,11 +293,8 @@ suite "Waku rln relay":
let manager = cast[OnchainGroupManager](wakuRlnRelay.groupManager) let manager = cast[OnchainGroupManager](wakuRlnRelay.groupManager)
let idCredentials = generateCredentials() let idCredentials = generateCredentials()
try: (waitFor manager.register(idCredentials, UserMessageLimit(20))).isOkOr:
waitFor manager.register(idCredentials, UserMessageLimit(20)) assert false, "error returned when calling register: " & error
except Exception, CatchableError:
assert false,
"exception raised when calling register: " & getCurrentExceptionMsg()
# usually it's 20 seconds but we set it to 1 for testing purposes which make the test faster # usually it's 20 seconds but we set it to 1 for testing purposes which make the test faster
wakuRlnRelay.rlnMaxTimestampGap = 1 wakuRlnRelay.rlnMaxTimestampGap = 1
@ -346,11 +340,9 @@ suite "Waku rln relay":
let manager1 = cast[OnchainGroupManager](wakuRlnRelay1.groupManager) let manager1 = cast[OnchainGroupManager](wakuRlnRelay1.groupManager)
let idCredentials1 = generateCredentials() let idCredentials1 = generateCredentials()
try: (waitFor manager1.register(idCredentials1, UserMessageLimit(20))).isOkOr:
waitFor manager1.register(idCredentials1, UserMessageLimit(20))
except Exception, CatchableError:
assert false, assert false,
"exception raised when calling register: " & getCurrentExceptionMsg() "error returned when calling register: " & error
let index2 = MembershipIndex(6) let index2 = MembershipIndex(6)
let rlnConf2 = getWakuRlnConfig(manager = manager, index = index2) let rlnConf2 = getWakuRlnConfig(manager = manager, index = index2)
@ -360,11 +352,9 @@ suite "Waku rln relay":
let manager2 = cast[OnchainGroupManager](wakuRlnRelay2.groupManager) let manager2 = cast[OnchainGroupManager](wakuRlnRelay2.groupManager)
let idCredentials2 = generateCredentials() let idCredentials2 = generateCredentials()
try: (waitFor manager2.register(idCredentials2, UserMessageLimit(20))).isOkOr:
waitFor manager2.register(idCredentials2, UserMessageLimit(20))
except Exception, CatchableError:
assert false, assert false,
"exception raised when calling register: " & getCurrentExceptionMsg() "error returned when calling register: " & error
# get the current epoch time # get the current epoch time
let epoch = wakuRlnRelay1.getCurrentEpoch() let epoch = wakuRlnRelay1.getCurrentEpoch()

View File

@ -65,11 +65,9 @@ procSuite "WakuNode - RLN relay":
let manager1 = cast[OnchainGroupManager](node1.wakuRlnRelay.groupManager) let manager1 = cast[OnchainGroupManager](node1.wakuRlnRelay.groupManager)
let idCredentials1 = generateCredentials() let idCredentials1 = generateCredentials()
try: (waitFor manager1.register(idCredentials1, UserMessageLimit(20))).isOkOr:
waitFor manager1.register(idCredentials1, UserMessageLimit(20))
except Exception, CatchableError:
assert false, assert false,
"exception raised when calling register: " & getCurrentExceptionMsg() "error returned when calling register: " & error
let rootUpdated1 = waitFor manager1.updateRoots() let rootUpdated1 = waitFor manager1.updateRoots()
info "Updated root for node1", rootUpdated1 info "Updated root for node1", rootUpdated1
@ -182,11 +180,9 @@ procSuite "WakuNode - RLN relay":
let manager = cast[OnchainGroupManager](node.wakuRlnRelay.groupManager) let manager = cast[OnchainGroupManager](node.wakuRlnRelay.groupManager)
let idCredentials = generateCredentials() let idCredentials = generateCredentials()
try: (waitFor manager.register(idCredentials, UserMessageLimit(20))).isOkOr:
waitFor manager.register(idCredentials, UserMessageLimit(20))
except Exception, CatchableError:
assert false, assert false,
"exception raised when calling register: " & getCurrentExceptionMsg() "error returned when calling register: " & error
let rootUpdated = waitFor manager.updateRoots() let rootUpdated = waitFor manager.updateRoots()
info "Updated root for node", node = index + 1, rootUpdated = rootUpdated info "Updated root for node", node = index + 1, rootUpdated = rootUpdated
@ -301,11 +297,9 @@ procSuite "WakuNode - RLN relay":
let manager1 = cast[OnchainGroupManager](node1.wakuRlnRelay.groupManager) let manager1 = cast[OnchainGroupManager](node1.wakuRlnRelay.groupManager)
let idCredentials1 = generateCredentials() let idCredentials1 = generateCredentials()
try: (waitFor manager1.register(idCredentials1, UserMessageLimit(20))).isOkOr:
waitFor manager1.register(idCredentials1, UserMessageLimit(20))
except Exception, CatchableError:
assert false, assert false,
"exception raised when calling register: " & getCurrentExceptionMsg() "error returned when calling register: " & error
let rootUpdated1 = waitFor manager1.updateRoots() let rootUpdated1 = waitFor manager1.updateRoots()
info "Updated root for node1", rootUpdated1 info "Updated root for node1", rootUpdated1
@ -418,11 +412,9 @@ procSuite "WakuNode - RLN relay":
let manager1 = cast[OnchainGroupManager](node1.wakuRlnRelay.groupManager) let manager1 = cast[OnchainGroupManager](node1.wakuRlnRelay.groupManager)
let idCredentials1 = generateCredentials() let idCredentials1 = generateCredentials()
try: (waitFor manager1.register(idCredentials1, UserMessageLimit(20))).isOkOr:
waitFor manager1.register(idCredentials1, UserMessageLimit(20))
except Exception, CatchableError:
assert false, assert false,
"exception raised when calling register: " & getCurrentExceptionMsg() "error returned when calling register: " & error
let rootUpdated1 = waitFor manager1.updateRoots() let rootUpdated1 = waitFor manager1.updateRoots()
info "Updated root for node1", rootUpdated1 info "Updated root for node1", rootUpdated1
@ -585,11 +577,10 @@ procSuite "WakuNode - RLN relay":
let manager1 = cast[OnchainGroupManager](node1.wakuRlnRelay.groupManager) let manager1 = cast[OnchainGroupManager](node1.wakuRlnRelay.groupManager)
let idCredentials1 = generateCredentials() let idCredentials1 = generateCredentials()
try: (waitFor manager1.register(idCredentials1, UserMessageLimit(20))).isOkOr:
waitFor manager1.register(idCredentials1, UserMessageLimit(20)) assert false,
except Exception, CatchableError: "error returned when calling register: " & error
assert false,
"exception raised when calling register: " & getCurrentExceptionMsg()
let rootUpdated1 = waitFor manager1.updateRoots() let rootUpdated1 = waitFor manager1.updateRoots()
info "Updated root for node1", rootUpdated1 info "Updated root for node1", rootUpdated1

View File

@ -214,6 +214,8 @@ method register*(
except Exception as e: except Exception as e:
return err("Failed to call register callback: " & e.msg) return err("Failed to call register callback: " & e.msg)
return ok()
method register*( method register*(
g: OnchainGroupManager, g: OnchainGroupManager,
identityCredential: IdentityCredential, identityCredential: IdentityCredential,
@ -282,11 +284,9 @@ method register*(
debug "ts receipt", receipt = tsReceipt[] debug "ts receipt", receipt = tsReceipt[]
if tsReceipt.status.isNone(): if tsReceipt.status.isNone():
raise newException(ValueError, "Transaction failed: status is None") return err("Transaction failed: status is None")
if tsReceipt.status.get() != 1.Quantity: if tsReceipt.status.get() != 1.Quantity:
raise newException( return err("Transaction failed with status: " & $tsReceipt.status.get())
ValueError, "Transaction failed with status: " & $tsReceipt.status.get()
)
## Search through all transaction logs to find the MembershipRegistered event ## Search through all transaction logs to find the MembershipRegistered event
let expectedEventSignature = cast[FixedBytes[32]](keccak.keccak256.digest( let expectedEventSignature = cast[FixedBytes[32]](keccak.keccak256.digest(
@ -300,9 +300,7 @@ method register*(
break break
if membershipRegisteredLog.isNone(): if membershipRegisteredLog.isNone():
raise newException( return err("register: MembershipRegistered event not found in transaction logs")
ValueError, "register: MembershipRegistered event not found in transaction logs"
)
let registrationLog = membershipRegisteredLog.get() let registrationLog = membershipRegisteredLog.get()
@ -336,13 +334,23 @@ method register*(
method withdraw*( method withdraw*(
g: OnchainGroupManager, idCommitment: IDCommitment g: OnchainGroupManager, idCommitment: IDCommitment
): Future[void] {.async: (raises: [Exception]).} = ): Future[Result[void, string]] {.async.} =
initializedGuard(g) # TODO: after slashing is enabled on the contract try:
initializedGuard(g)
except CatchableError as e:
return err("Not initialized: " & e.msg)
return ok()
method withdrawBatch*( method withdrawBatch*(
g: OnchainGroupManager, idCommitments: seq[IDCommitment] g: OnchainGroupManager, idCommitments: seq[IDCommitment]
): Future[void] {.async: (raises: [Exception]).} = ): Future[Result[void, string]] {.async.} =
initializedGuard(g) try:
initializedGuard(g)
except CatchableError as e:
return err("Not initialized: " & e.msg)
return ok()
proc getRootFromProofAndIndex( proc getRootFromProofAndIndex(
g: OnchainGroupManager, elements: seq[byte], bits: seq[byte] g: OnchainGroupManager, elements: seq[byte], bits: seq[byte]