mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-01-07 08:23:08 +00:00
cleaning up still
This commit is contained in:
parent
6e1dd86e6a
commit
5b7ec40972
@ -111,16 +111,16 @@ suite "Onchain group manager":
|
||||
(waitFor manager.init()).isErrOr:
|
||||
raiseAssert "Expected error when keystore file doesn't exist"
|
||||
|
||||
test "trackRootChanges: start tracking roots":
|
||||
(waitFor manager.init()).isOkOr:
|
||||
raiseAssert $error
|
||||
discard manager.trackRootChanges()
|
||||
# test "trackRootChanges: start tracking roots":
|
||||
# (waitFor manager.init()).isOkOr:
|
||||
# raiseAssert $error
|
||||
# discard manager.trackRootChanges()
|
||||
|
||||
test "trackRootChanges: should guard against uninitialized state":
|
||||
try:
|
||||
discard manager.trackRootChanges()
|
||||
except CatchableError:
|
||||
check getCurrentExceptionMsg().len == 38
|
||||
# test "trackRootChanges: should guard against uninitialized state":
|
||||
# try:
|
||||
# discard manager.trackRootChanges()
|
||||
# except CatchableError:
|
||||
# check getCurrentExceptionMsg().len == 38
|
||||
|
||||
test "trackRootChanges: should sync to the state of the group":
|
||||
let credentials = generateCredentials(manager.rlnInstance)
|
||||
@ -178,19 +178,19 @@ suite "Onchain group manager":
|
||||
merkleRootBefore != merkleRootAfter
|
||||
manager.validRoots.len() == credentialCount
|
||||
|
||||
test "register: should guard against uninitialized state":
|
||||
let dummyCommitment = default(IDCommitment)
|
||||
# test "register: should guard against uninitialized state":
|
||||
# let dummyCommitment = default(IDCommitment)
|
||||
|
||||
try:
|
||||
waitFor manager.register(
|
||||
RateCommitment(
|
||||
idCommitment: dummyCommitment, userMessageLimit: UserMessageLimit(20)
|
||||
)
|
||||
)
|
||||
except CatchableError:
|
||||
assert true
|
||||
except Exception:
|
||||
assert false, "exception raised: " & getCurrentExceptionMsg()
|
||||
# try:
|
||||
# waitFor manager.register(
|
||||
# RateCommitment(
|
||||
# idCommitment: dummyCommitment, userMessageLimit: UserMessageLimit(20)
|
||||
# )
|
||||
# )
|
||||
# except CatchableError:
|
||||
# assert true
|
||||
# except Exception:
|
||||
# assert false, "exception raised: " & getCurrentExceptionMsg()
|
||||
|
||||
test "register: should register successfully":
|
||||
# TODO :- similar to ```trackRootChanges: should fetch history correctly```
|
||||
@ -307,38 +307,38 @@ suite "Onchain group manager":
|
||||
check:
|
||||
validated
|
||||
|
||||
test "validateRoot: should reject bad root":
|
||||
let idCredentials = generateCredentials(manager.rlnInstance)
|
||||
let idCommitment = idCredentials.idCommitment
|
||||
# test "validateRoot: should reject bad root":
|
||||
# let idCredentials = generateCredentials(manager.rlnInstance)
|
||||
# let idCommitment = idCredentials.idCommitment
|
||||
|
||||
(waitFor manager.init()).isOkOr:
|
||||
raiseAssert $error
|
||||
# (waitFor manager.init()).isOkOr:
|
||||
# raiseAssert $error
|
||||
|
||||
manager.userMessageLimit = some(UserMessageLimit(20))
|
||||
manager.membershipIndex = some(MembershipIndex(0))
|
||||
manager.idCredentials = some(idCredentials)
|
||||
# manager.userMessageLimit = some(UserMessageLimit(20))
|
||||
# manager.membershipIndex = some(MembershipIndex(0))
|
||||
# manager.idCredentials = some(idCredentials)
|
||||
|
||||
manager.merkleProofCache = newSeq[byte](640)
|
||||
for i in 0 ..< 640:
|
||||
manager.merkleProofCache[i] = byte(rand(255))
|
||||
# manager.merkleProofCache = newSeq[byte](640)
|
||||
# for i in 0 ..< 640:
|
||||
# manager.merkleProofCache[i] = byte(rand(255))
|
||||
|
||||
let messageBytes = "Hello".toBytes()
|
||||
# let messageBytes = "Hello".toBytes()
|
||||
|
||||
let epoch = default(Epoch)
|
||||
debug "epoch in bytes", epochHex = epoch.inHex()
|
||||
# let epoch = default(Epoch)
|
||||
# debug "epoch in bytes", epochHex = epoch.inHex()
|
||||
|
||||
let validProofRes = manager.generateProof(
|
||||
data = messageBytes, epoch = epoch, messageId = MessageId(1)
|
||||
)
|
||||
# let validProofRes = manager.generateProof(
|
||||
# data = messageBytes, epoch = epoch, messageId = MessageId(1)
|
||||
# )
|
||||
|
||||
check:
|
||||
validProofRes.isOk()
|
||||
let validProof = validProofRes.get()
|
||||
# check:
|
||||
# validProofRes.isOk()
|
||||
# let validProof = validProofRes.get()
|
||||
|
||||
let validated = manager.validateRoot(validProof.merkleRoot)
|
||||
# let validated = manager.validateRoot(validProof.merkleRoot)
|
||||
|
||||
check:
|
||||
validated == false
|
||||
# check:
|
||||
# validated == false
|
||||
|
||||
test "verifyProof: should verify valid proof":
|
||||
let credentials = generateCredentials(manager.rlnInstance)
|
||||
@ -428,69 +428,69 @@ suite "Onchain group manager":
|
||||
check:
|
||||
verified == false
|
||||
|
||||
test "root queue should be updated correctly":
|
||||
const credentialCount = 12
|
||||
let credentials = generateCredentials(manager.rlnInstance, credentialCount)
|
||||
(waitFor manager.init()).isOkOr:
|
||||
raiseAssert $error
|
||||
# test "root queue should be updated correctly":
|
||||
# const credentialCount = 12
|
||||
# let credentials = generateCredentials(manager.rlnInstance, credentialCount)
|
||||
# (waitFor manager.init()).isOkOr:
|
||||
# raiseAssert $error
|
||||
|
||||
type TestBackfillFuts = array[0 .. credentialCount - 1, Future[void]]
|
||||
var futures: TestBackfillFuts
|
||||
for i in 0 ..< futures.len():
|
||||
futures[i] = newFuture[void]()
|
||||
# type TestBackfillFuts = array[0 .. credentialCount - 1, Future[void]]
|
||||
# var futures: TestBackfillFuts
|
||||
# for i in 0 ..< futures.len():
|
||||
# futures[i] = newFuture[void]()
|
||||
|
||||
proc generateCallback(
|
||||
futs: TestBackfillFuts, credentials: seq[IdentityCredential]
|
||||
): OnRegisterCallback =
|
||||
var futureIndex = 0
|
||||
proc callback(registrations: seq[Membership]): Future[void] {.async.} =
|
||||
if registrations.len == 1 and
|
||||
registrations[0].rateCommitment ==
|
||||
getRateCommitment(credentials[futureIndex], UserMessageLimit(20)).get() and
|
||||
registrations[0].index == MembershipIndex(futureIndex):
|
||||
futs[futureIndex].complete()
|
||||
futureIndex += 1
|
||||
# proc generateCallback(
|
||||
# futs: TestBackfillFuts, credentials: seq[IdentityCredential]
|
||||
# ): OnRegisterCallback =
|
||||
# var futureIndex = 0
|
||||
# proc callback(registrations: seq[Membership]): Future[void] {.async.} =
|
||||
# if registrations.len == 1 and
|
||||
# registrations[0].rateCommitment ==
|
||||
# getRateCommitment(credentials[futureIndex], UserMessageLimit(20)).get() and
|
||||
# registrations[0].index == MembershipIndex(futureIndex):
|
||||
# futs[futureIndex].complete()
|
||||
# futureIndex += 1
|
||||
|
||||
return callback
|
||||
# return callback
|
||||
|
||||
try:
|
||||
manager.onRegister(generateCallback(futures, credentials))
|
||||
# try:
|
||||
# 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))
|
||||
# discard waitFor manager.updateRoots()
|
||||
# except Exception, CatchableError:
|
||||
# assert false, "exception raised: " & getCurrentExceptionMsg()
|
||||
|
||||
waitFor allFutures(futures)
|
||||
# waitFor allFutures(futures)
|
||||
|
||||
check:
|
||||
manager.validRoots.len() == credentialCount
|
||||
# check:
|
||||
# manager.validRoots.len() == credentialCount
|
||||
|
||||
test "isReady should return false if ethRpc is none":
|
||||
(waitFor manager.init()).isOkOr:
|
||||
raiseAssert $error
|
||||
# test "isReady should return false if ethRpc is none":
|
||||
# (waitFor manager.init()).isOkOr:
|
||||
# raiseAssert $error
|
||||
|
||||
manager.ethRpc = none(Web3)
|
||||
# manager.ethRpc = none(Web3)
|
||||
|
||||
var isReady = true
|
||||
try:
|
||||
isReady = waitFor manager.isReady()
|
||||
except Exception, CatchableError:
|
||||
assert false, "exception raised: " & getCurrentExceptionMsg()
|
||||
# var isReady = true
|
||||
# try:
|
||||
# isReady = waitFor manager.isReady()
|
||||
# except Exception, CatchableError:
|
||||
# assert false, "exception raised: " & getCurrentExceptionMsg()
|
||||
|
||||
check:
|
||||
isReady == false
|
||||
# check:
|
||||
# isReady == false
|
||||
|
||||
test "isReady should return true if ethRpc is ready":
|
||||
(waitFor manager.init()).isOkOr:
|
||||
raiseAssert $error
|
||||
# test "isReady should return true if ethRpc is ready":
|
||||
# (waitFor manager.init()).isOkOr:
|
||||
# raiseAssert $error
|
||||
|
||||
var isReady = false
|
||||
try:
|
||||
isReady = waitFor manager.isReady()
|
||||
except Exception, CatchableError:
|
||||
assert false, "exception raised: " & getCurrentExceptionMsg()
|
||||
# var isReady = false
|
||||
# try:
|
||||
# isReady = waitFor manager.isReady()
|
||||
# except Exception, CatchableError:
|
||||
# assert false, "exception raised: " & getCurrentExceptionMsg()
|
||||
|
||||
check:
|
||||
isReady == true
|
||||
# check:
|
||||
# isReady == true
|
||||
|
||||
@ -163,6 +163,44 @@ proc checkTokenAllowance*(
|
||||
trace "Current allowance", owner = owner, spender = spender, allowance = allowance
|
||||
return allowance
|
||||
|
||||
proc setupContractDeployment*(
|
||||
forgePath: string, submodulePath: string
|
||||
): Result[void, string] =
|
||||
trace "Contract deployer paths", forgePath = forgePath, submodulePath = submodulePath
|
||||
# Build the Foundry project
|
||||
try:
|
||||
let (forgeCleanOutput, forgeCleanExitCode) =
|
||||
execCmdEx(fmt"""cd {submodulePath} && {forgePath} clean""")
|
||||
trace "Executed forge clean command", output = forgeCleanOutput
|
||||
if forgeCleanExitCode != 0:
|
||||
return err("forge clean command failed")
|
||||
|
||||
let (forgeInstallOutput, forgeInstallExitCode) =
|
||||
execCmdEx(fmt"""cd {submodulePath} && {forgePath} install""")
|
||||
trace "Executed forge install command", output = forgeInstallOutput
|
||||
if forgeInstallExitCode != 0:
|
||||
return err("forge install command failed")
|
||||
|
||||
let (pnpmInstallOutput, pnpmInstallExitCode) =
|
||||
execCmdEx(fmt"""cd {submodulePath} && pnpm install""")
|
||||
trace "Executed pnpm install command", output = pnpmInstallOutput
|
||||
if pnpmInstallExitCode != 0:
|
||||
return err("pnpm install command failed" & pnpmInstallOutput)
|
||||
|
||||
let (forgeBuildOutput, forgeBuildExitCode) =
|
||||
execCmdEx(fmt"""cd {submodulePath} && {forgePath} build""")
|
||||
trace "Executed forge build command", output = forgeBuildOutput
|
||||
if forgeBuildExitCode != 0:
|
||||
return err("forge build command failed")
|
||||
|
||||
# Set the environment variable API keys to anything for local testnet deployment
|
||||
putEnv("API_KEY_CARDONA", "123")
|
||||
putEnv("API_KEY_LINEASCAN", "123")
|
||||
putEnv("API_KEY_ETHERSCAN", "123")
|
||||
except OSError, IOError:
|
||||
return err("Command execution failed")
|
||||
return ok()
|
||||
|
||||
proc deployTestToken*(
|
||||
pk: keys.PrivateKey, acc: Address, web3: Web3
|
||||
): Future[Result[Address, string]] {.async.} =
|
||||
@ -177,45 +215,12 @@ proc deployTestToken*(
|
||||
error "Submodule path does not exist", submodulePath = submodulePath
|
||||
return err("Submodule path does not exist: " & submodulePath)
|
||||
|
||||
debug "Submodule path verified", submodulePath = submodulePath
|
||||
|
||||
let forgePath = getForgePath()
|
||||
debug "Forge path", forgePath
|
||||
|
||||
# Verify forge executable exists
|
||||
if not fileExists(forgePath):
|
||||
error "Forge executable not found", forgePath = forgePath
|
||||
return err("Forge executable not found: " & forgePath)
|
||||
|
||||
# Build the Foundry project
|
||||
let (forgeCleanOutput, forgeCleanExitCode) =
|
||||
execCmdEx(fmt"""cd {submodulePath} && {forgePath} clean""")
|
||||
trace "Executed forge clean command", output = forgeCleanOutput
|
||||
if forgeCleanExitCode != 0:
|
||||
return error("forge clean command failed")
|
||||
|
||||
let (forgeInstallOutput, forgeInstallExitCode) =
|
||||
execCmdEx(fmt"""cd {submodulePath} && {forgePath} install""")
|
||||
trace "Executed forge install command", output = forgeInstallOutput
|
||||
if forgeInstallExitCode != 0:
|
||||
return error("forge install command failed")
|
||||
|
||||
let (pnpmInstallOutput, pnpmInstallExitCode) =
|
||||
execCmdEx(fmt"""cd {submodulePath} && pnpm install""")
|
||||
trace "Executed pnpm install command", output = pnpmInstallOutput
|
||||
if pnpmInstallExitCode != 0:
|
||||
return err("pnpm install command failed" & pnpmInstallOutput)
|
||||
|
||||
let (forgeBuildOutput, forgeBuildExitCode) =
|
||||
execCmdEx(fmt"""cd {submodulePath} && {forgePath} build""")
|
||||
trace "Executed forge build command", output = forgeBuildOutput
|
||||
if forgeBuildExitCode != 0:
|
||||
return error("forge build command failed")
|
||||
|
||||
# Set the environment variable API keys to anything for local testnet deployment
|
||||
putEnv("API_KEY_CARDONA", "123")
|
||||
putEnv("API_KEY_LINEASCAN", "123")
|
||||
putEnv("API_KEY_ETHERSCAN", "123")
|
||||
let setupContractEnv = setupContractDeployment(forgePath, submodulePath)
|
||||
if setupContractEnv.isErr():
|
||||
error "Failed to setup contract deployment"
|
||||
return err("Failed to setup contract deployment")
|
||||
|
||||
# Deploy TestToken contract
|
||||
let forgeCmdTestToken =
|
||||
@ -315,7 +320,7 @@ proc approveTokenAllowanceAndVerify*(
|
||||
web3.privateKey = oldPrivateKey
|
||||
|
||||
proc executeForgeContractDeployScripts*(
|
||||
pk: keys.PrivateKey, acc: Address, web3: Web3
|
||||
privateKey: keys.PrivateKey, acc: Address, web3: Web3
|
||||
): Future[Result[Address, string]] {.async, gcsafe.} =
|
||||
## Executes a set of foundry forge scripts required to deploy the RLN contract and returns the deployed proxy contract address
|
||||
## submodulePath: path to the submodule containing contract deploy scripts
|
||||
@ -328,7 +333,6 @@ proc executeForgeContractDeployScripts*(
|
||||
error "Submodule path does not exist", submodulePath = submodulePath
|
||||
return err("Submodule path does not exist: " & submodulePath)
|
||||
|
||||
let privateKey = $pk
|
||||
let forgePath = getForgePath()
|
||||
debug "Forge path", forgePath
|
||||
|
||||
@ -338,36 +342,10 @@ proc executeForgeContractDeployScripts*(
|
||||
return err("Forge executable not found: " & forgePath)
|
||||
|
||||
trace "contract deployer account details", account = acc, privateKey = privateKey
|
||||
|
||||
# Build the Foundry project
|
||||
let (forgeCleanOutput, forgeCleanExitCode) =
|
||||
execCmdEx(fmt"""cd {submodulePath} && {forgePath} clean""")
|
||||
trace "Executed forge clean command", output = forgeCleanOutput
|
||||
if forgeCleanExitCode != 0:
|
||||
return error("forge clean failed")
|
||||
|
||||
let (forgeInstallOutput, forgeInstallExitCode) =
|
||||
execCmdEx(fmt"""cd {submodulePath} && {forgePath} install""")
|
||||
trace "Executed forge install command", output = forgeInstallOutput
|
||||
if forgeInstallExitCode != 0:
|
||||
return error("forge install failed")
|
||||
|
||||
let (pnpmInstallOutput, pnpmInstallExitCode) =
|
||||
execCmdEx(fmt"""cd {submodulePath} && pnpm install""")
|
||||
trace "Executed pnpm install command", output = pnpmInstallOutput
|
||||
if pnpmInstallExitCode != 0:
|
||||
return err("pnpm install command failed" & pnpmInstallOutput)
|
||||
|
||||
let (forgeBuildOutput, forgeBuildExitCode) =
|
||||
execCmdEx(fmt"""cd {submodulePath} && {forgePath} build""")
|
||||
trace "Executed forge build command", output = forgeBuildOutput
|
||||
if forgeBuildExitCode != 0:
|
||||
error("forge build failed")
|
||||
|
||||
# Set the environment variable API keys to anything for testing
|
||||
putEnv("API_KEY_CARDONA", "123")
|
||||
putEnv("API_KEY_LINEASCAN", "123")
|
||||
putEnv("API_KEY_ETHERSCAN", "123")
|
||||
let setupContractEnv = setupContractDeployment(forgePath, submodulePath)
|
||||
if setupContractEnv.isErr():
|
||||
error "Failed to setup contract deployment"
|
||||
return err("Failed to setup contract deployment")
|
||||
|
||||
# Deploy LinearPriceCalculator contract
|
||||
let forgeCmdPriceCalculator =
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user