From dce45ba9e876d3ade9f8b6da06d9fa26634c875b Mon Sep 17 00:00:00 2001 From: stubbsta Date: Fri, 19 Dec 2025 14:50:05 +0200 Subject: [PATCH] modify rln tests that use group manager --- .../test_rln_group_manager_onchain.nim | 65 +++++++++---------- tests/waku_rln_relay/test_waku_rln_relay.nim | 26 +++----- .../test_wakunode_rln_relay.nim | 33 ++++------ .../group_manager/on_chain/group_manager.nim | 30 +++++---- 4 files changed, 68 insertions(+), 86 deletions(-) diff --git a/tests/waku_rln_relay/test_rln_group_manager_onchain.nim b/tests/waku_rln_relay/test_rln_group_manager_onchain.nim index 496a373b9..22802465b 100644 --- a/tests/waku_rln_relay/test_rln_group_manager_onchain.nim +++ b/tests/waku_rln_relay/test_rln_group_manager_onchain.nim @@ -87,7 +87,8 @@ suite "Onchain group manager": let merkleRootBefore = waitFor manager.fetchMerkleRoot() (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) @@ -111,7 +112,7 @@ suite "Onchain group manager": for i in 0 ..< credentials.len(): info "Registering credential", index = i, credential = credentials[i] (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() let merkleRootAfter = waitFor manager.fetchMerkleRoot() @@ -143,7 +144,7 @@ suite "Onchain group manager": (waitFor manager.register(idCredentials, UserMessageLimit(20))).isOkOr: assert false, - "exception raised when calling register: " & getCurrentExceptionMsg() + "error returned when calling register: " & error let merkleRootAfter = waitFor manager.fetchMerkleRoot() @@ -170,26 +171,24 @@ suite "Onchain group manager": manager.onRegister(callback) - try: - waitFor manager.register( - RateCommitment( - idCommitment: idCommitment, userMessageLimit: UserMessageLimit(20) - ) + (waitFor manager.register( + RateCommitment( + idCommitment: idCommitment, userMessageLimit: UserMessageLimit(20) ) - except Exception, CatchableError: - assert false, "exception raised: " & getCurrentExceptionMsg() + )).isOkOr: + assert false, + "error returned when calling register: " & error waitFor fut test "withdraw: should guard against uninitialized state": let idSecretHash = generateCredentials().idSecretHash - try: - waitFor manager.withdraw(idSecretHash) - except CatchableError: - assert true - except Exception: - assert false, "exception raised: " & getCurrentExceptionMsg() + let res = waitFor manager.withdraw(idSecretHash) + + check: + res.isErr() + res.error == "Not initialized: OnchainGroupManager is not initialized" test "validateRoot: should validate good root": let idCredentials = generateCredentials() @@ -210,10 +209,8 @@ suite "Onchain group manager": (waitFor manager.init()).isOkOr: raiseAssert $error - try: - waitFor manager.register(idCredentials, UserMessageLimit(20)) - except Exception, CatchableError: - assert false, "exception raised: " & getCurrentExceptionMsg() + (waitFor manager.register(idCredentials, UserMessageLimit(20))).isOkOr: + assert false, "error returned : " & getCurrentExceptionMsg() waitFor fut @@ -292,10 +289,10 @@ suite "Onchain group manager": manager.onRegister(callback) - try: - waitFor manager.register(credentials, UserMessageLimit(20)) - except Exception, CatchableError: - assert false, "exception raised: " & getCurrentExceptionMsg() + + (waitFor manager.register(credentials, UserMessageLimit(20))).isOkOr: + assert false, + "error returned when calling register: " & error waitFor fut let rootUpdated = waitFor manager.updateRoots() @@ -330,11 +327,9 @@ suite "Onchain group manager": let idCredential = generateCredentials() - try: - waitFor manager.register(idCredential, UserMessageLimit(20)) - except Exception, CatchableError: - assert false, - "exception raised when calling startGroupSync: " & getCurrentExceptionMsg() + (waitFor manager.register(idCredential, UserMessageLimit(20))).isOkOr: + assert false, + "error returned when calling register: " & error let messageBytes = "Hello".toBytes() @@ -388,14 +383,12 @@ suite "Onchain group manager": return callback - try: - manager.onRegister(generateCallback(futures, credentials)) + manager.onRegister(generateCallback(futures, credentials)) - for i in 0 ..< credentials.len(): - waitFor manager.register(credentials[i], UserMessageLimit(20)) - discard waitFor manager.updateRoots() - except Exception, CatchableError: - assert false, "exception raised: " & getCurrentExceptionMsg() + for i in 0 ..< credentials.len(): + (waitFor manager.register(credentials[i], UserMessageLimit(20))).isOkOr: + assert false, "Failed to register credential " & $i & ": " & error + discard waitFor manager.updateRoots() waitFor allFutures(futures) diff --git a/tests/waku_rln_relay/test_waku_rln_relay.nim b/tests/waku_rln_relay/test_waku_rln_relay.nim index 3430657ad..4adfc13f5 100644 --- a/tests/waku_rln_relay/test_waku_rln_relay.nim +++ b/tests/waku_rln_relay/test_waku_rln_relay.nim @@ -239,11 +239,8 @@ suite "Waku rln relay": let manager = cast[OnchainGroupManager](wakuRlnRelay.groupManager) let idCredentials = generateCredentials() - try: - waitFor manager.register(idCredentials, UserMessageLimit(20)) - except Exception, CatchableError: - assert false, - "exception raised when calling register: " & getCurrentExceptionMsg() + (waitFor manager.register(idCredentials, UserMessageLimit(20))).isOkOr: + assert false, "error returned when calling register: " & error let epoch1 = wakuRlnRelay.getCurrentEpoch() @@ -296,11 +293,8 @@ suite "Waku rln relay": let manager = cast[OnchainGroupManager](wakuRlnRelay.groupManager) let idCredentials = generateCredentials() - try: - waitFor manager.register(idCredentials, UserMessageLimit(20)) - except Exception, CatchableError: - assert false, - "exception raised when calling register: " & getCurrentExceptionMsg() + (waitFor manager.register(idCredentials, UserMessageLimit(20))).isOkOr: + assert false, "error returned when calling register: " & error # usually it's 20 seconds but we set it to 1 for testing purposes which make the test faster wakuRlnRelay.rlnMaxTimestampGap = 1 @@ -346,11 +340,9 @@ suite "Waku rln relay": let manager1 = cast[OnchainGroupManager](wakuRlnRelay1.groupManager) let idCredentials1 = generateCredentials() - try: - waitFor manager1.register(idCredentials1, UserMessageLimit(20)) - except Exception, CatchableError: + (waitFor manager1.register(idCredentials1, UserMessageLimit(20))).isOkOr: assert false, - "exception raised when calling register: " & getCurrentExceptionMsg() + "error returned when calling register: " & error let index2 = MembershipIndex(6) let rlnConf2 = getWakuRlnConfig(manager = manager, index = index2) @@ -360,11 +352,9 @@ suite "Waku rln relay": let manager2 = cast[OnchainGroupManager](wakuRlnRelay2.groupManager) let idCredentials2 = generateCredentials() - try: - waitFor manager2.register(idCredentials2, UserMessageLimit(20)) - except Exception, CatchableError: + (waitFor manager2.register(idCredentials2, UserMessageLimit(20))).isOkOr: assert false, - "exception raised when calling register: " & getCurrentExceptionMsg() + "error returned when calling register: " & error # get the current epoch time let epoch = wakuRlnRelay1.getCurrentEpoch() diff --git a/tests/waku_rln_relay/test_wakunode_rln_relay.nim b/tests/waku_rln_relay/test_wakunode_rln_relay.nim index 1850b5277..2e535c0e9 100644 --- a/tests/waku_rln_relay/test_wakunode_rln_relay.nim +++ b/tests/waku_rln_relay/test_wakunode_rln_relay.nim @@ -65,11 +65,9 @@ procSuite "WakuNode - RLN relay": let manager1 = cast[OnchainGroupManager](node1.wakuRlnRelay.groupManager) let idCredentials1 = generateCredentials() - try: - waitFor manager1.register(idCredentials1, UserMessageLimit(20)) - except Exception, CatchableError: + (waitFor manager1.register(idCredentials1, UserMessageLimit(20))).isOkOr: assert false, - "exception raised when calling register: " & getCurrentExceptionMsg() + "error returned when calling register: " & error let rootUpdated1 = waitFor manager1.updateRoots() info "Updated root for node1", rootUpdated1 @@ -182,11 +180,9 @@ procSuite "WakuNode - RLN relay": let manager = cast[OnchainGroupManager](node.wakuRlnRelay.groupManager) let idCredentials = generateCredentials() - try: - waitFor manager.register(idCredentials, UserMessageLimit(20)) - except Exception, CatchableError: + (waitFor manager.register(idCredentials, UserMessageLimit(20))).isOkOr: assert false, - "exception raised when calling register: " & getCurrentExceptionMsg() + "error returned when calling register: " & error let rootUpdated = waitFor manager.updateRoots() 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 idCredentials1 = generateCredentials() - try: - waitFor manager1.register(idCredentials1, UserMessageLimit(20)) - except Exception, CatchableError: + (waitFor manager1.register(idCredentials1, UserMessageLimit(20))).isOkOr: assert false, - "exception raised when calling register: " & getCurrentExceptionMsg() + "error returned when calling register: " & error let rootUpdated1 = waitFor manager1.updateRoots() info "Updated root for node1", rootUpdated1 @@ -418,11 +412,9 @@ procSuite "WakuNode - RLN relay": let manager1 = cast[OnchainGroupManager](node1.wakuRlnRelay.groupManager) let idCredentials1 = generateCredentials() - try: - waitFor manager1.register(idCredentials1, UserMessageLimit(20)) - except Exception, CatchableError: + (waitFor manager1.register(idCredentials1, UserMessageLimit(20))).isOkOr: assert false, - "exception raised when calling register: " & getCurrentExceptionMsg() + "error returned when calling register: " & error let rootUpdated1 = waitFor manager1.updateRoots() info "Updated root for node1", rootUpdated1 @@ -585,11 +577,10 @@ procSuite "WakuNode - RLN relay": let manager1 = cast[OnchainGroupManager](node1.wakuRlnRelay.groupManager) let idCredentials1 = generateCredentials() - try: - waitFor manager1.register(idCredentials1, UserMessageLimit(20)) - except Exception, CatchableError: - assert false, - "exception raised when calling register: " & getCurrentExceptionMsg() + (waitFor manager1.register(idCredentials1, UserMessageLimit(20))).isOkOr: + assert false, + "error returned when calling register: " & error + let rootUpdated1 = waitFor manager1.updateRoots() info "Updated root for node1", rootUpdated1 diff --git a/waku/waku_rln_relay/group_manager/on_chain/group_manager.nim b/waku/waku_rln_relay/group_manager/on_chain/group_manager.nim index aef7c0b59..1d1474f3c 100644 --- a/waku/waku_rln_relay/group_manager/on_chain/group_manager.nim +++ b/waku/waku_rln_relay/group_manager/on_chain/group_manager.nim @@ -214,6 +214,8 @@ method register*( except Exception as e: return err("Failed to call register callback: " & e.msg) + return ok() + method register*( g: OnchainGroupManager, identityCredential: IdentityCredential, @@ -282,11 +284,9 @@ method register*( debug "ts receipt", receipt = tsReceipt[] 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: - raise newException( - ValueError, "Transaction failed with status: " & $tsReceipt.status.get() - ) + return err("Transaction failed with status: " & $tsReceipt.status.get()) ## Search through all transaction logs to find the MembershipRegistered event let expectedEventSignature = cast[FixedBytes[32]](keccak.keccak256.digest( @@ -300,9 +300,7 @@ method register*( break if membershipRegisteredLog.isNone(): - raise newException( - ValueError, "register: MembershipRegistered event not found in transaction logs" - ) + return err("register: MembershipRegistered event not found in transaction logs") let registrationLog = membershipRegisteredLog.get() @@ -336,13 +334,23 @@ method register*( method withdraw*( g: OnchainGroupManager, idCommitment: IDCommitment -): Future[void] {.async: (raises: [Exception]).} = - initializedGuard(g) # TODO: after slashing is enabled on the contract +): Future[Result[void, string]] {.async.} = + try: + initializedGuard(g) + except CatchableError as e: + return err("Not initialized: " & e.msg) + + return ok() method withdrawBatch*( g: OnchainGroupManager, idCommitments: seq[IDCommitment] -): Future[void] {.async: (raises: [Exception]).} = - initializedGuard(g) +): Future[Result[void, string]] {.async.} = + try: + initializedGuard(g) + except CatchableError as e: + return err("Not initialized: " & e.msg) + + return ok() proc getRootFromProofAndIndex( g: OnchainGroupManager, elements: seq[byte], bits: seq[byte]