From 74e876b0648a416157ce39c333aab0acd17d2137 Mon Sep 17 00:00:00 2001 From: karim-en Date: Wed, 8 Jan 2025 22:18:40 +0000 Subject: [PATCH] Fix tests --- near/omni-tests/src/fin_transfer.rs | 39 ++++++++++++++++++++++++----- near/omni-tests/src/helpers.rs | 19 +++++++++++++- near/omni-tests/src/omni_token.rs | 36 ++++++++++++++++++++------ 3 files changed, 80 insertions(+), 14 deletions(-) diff --git a/near/omni-tests/src/fin_transfer.rs b/near/omni-tests/src/fin_transfer.rs index a94fd847..f3bb8bcd 100644 --- a/near/omni-tests/src/fin_transfer.rs +++ b/near/omni-tests/src/fin_transfer.rs @@ -1,14 +1,14 @@ #[cfg(test)] mod tests { use crate::helpers::tests::{ - account_n, eth_eoa_address, eth_factory_address, relayer_account_id, LOCKER_PATH, - MOCK_PROVER_PATH, MOCK_TOKEN_PATH, NEP141_DEPOSIT, + account_n, eth_eoa_address, eth_factory_address, eth_token_address, relayer_account_id, + LOCKER_PATH, MOCK_PROVER_PATH, MOCK_TOKEN_PATH, NEP141_DEPOSIT, }; use near_sdk::{borsh, json_types::U128, serde_json::json, AccountId}; use near_workspaces::types::NearToken; use omni_types::{ - locker_args::{FinTransferArgs, StorageDepositAction}, - prover_result::{InitTransferMessage, ProverResult}, + locker_args::{BindTokenArgs, FinTransferArgs, StorageDepositAction}, + prover_result::{DeployTokenMessage, InitTransferMessage, ProverResult}, Fee, OmniAddress, }; use rstest::rstest; @@ -73,7 +73,9 @@ mod tests { "Expected an error but got success" ), Err(result_error) => { - let error = expected_error.expect("Got an error when none was expected"); + let error = expected_error.expect(&format!( + "Got an error {result_error} when none was expected" + )); assert!( result_error.to_string().contains(error), "Wrong error. Got: {}, Expected: {}", @@ -166,6 +168,31 @@ mod tests { .await? .into_result()?; + // Bind token + let required_balance_for_bind_token: NearToken = locker_contract + .view("required_balance_for_bind_token") + .await? + .json()?; + + relayer_account + .call(locker_contract.id(), "bind_token") + .args_borsh(BindTokenArgs { + chain_kind: omni_types::ChainKind::Eth, + prover_args: borsh::to_vec(&ProverResult::DeployToken(DeployTokenMessage { + token: token_contract.id().clone(), + token_address: eth_token_address(), + decimals: 24, + origin_decimals: 24, + emitter_address: eth_factory_address(), + })) + .unwrap(), + }) + .deposit(required_balance_for_bind_token) + .max_gas() + .transact() + .await? + .into_result()?; + let required_deposit_for_fin_transfer = NEP141_DEPOSIT .saturating_mul(storage_deposit_accounts.len() as u128) .saturating_add(required_balance_for_fin_transfer); @@ -187,7 +214,7 @@ mod tests { storage_deposit_actions, prover_args: borsh::to_vec(&ProverResult::InitTransfer(InitTransferMessage { origin_nonce: 1, - token: OmniAddress::Near(token_contract.id().clone()), + token: eth_token_address(), recipient: OmniAddress::Near(account_n(1)), amount: U128(amount), fee: Fee { diff --git a/near/omni-tests/src/helpers.rs b/near/omni-tests/src/helpers.rs index de17248e..72d667f0 100644 --- a/near/omni-tests/src/helpers.rs +++ b/near/omni-tests/src/helpers.rs @@ -30,6 +30,22 @@ pub mod tests { .unwrap() } + pub fn arb_factory_address() -> OmniAddress { + "arb:0x252e87862A3A720287E7fd527cE6e8d0738427A2" + .parse() + .unwrap() + } + + pub fn base_factory_address() -> OmniAddress { + "base:0x252e87862A3A720287E7fd527cE6e8d0738427A2" + .parse() + .unwrap() + } + + pub fn sol_factory_address() -> OmniAddress { + "sol:11111111111111111111111111111111".parse().unwrap() + } + pub fn eth_eoa_address() -> OmniAddress { "eth:0xc5ed912ca6db7b41de4ef3632fa0a5641e42bf09" .parse() @@ -88,6 +104,7 @@ pub mod tests { pub fn get_test_deploy_token_args( token_address: &OmniAddress, + factory_contract_address: &OmniAddress, token_metadata: &BasicMetadata, ) -> DeployTokenArgs { let log_metadata_message = LogMetadataMessage { @@ -95,7 +112,7 @@ pub mod tests { name: token_metadata.name.clone(), symbol: token_metadata.symbol.clone(), decimals: token_metadata.decimals, - emitter_address: token_address.clone(), + emitter_address: factory_contract_address.clone(), }; let prover_result = ProverResult::LogMetadata(log_metadata_message); diff --git a/near/omni-tests/src/omni_token.rs b/near/omni-tests/src/omni_token.rs index 6ac564eb..2a24c778 100644 --- a/near/omni-tests/src/omni_token.rs +++ b/near/omni-tests/src/omni_token.rs @@ -1,9 +1,10 @@ #[cfg(test)] mod tests { use crate::helpers::tests::{ - account_n, arb_token_address, base_token_address, eth_eoa_address, eth_token_address, - get_test_deploy_token_args, sol_token_address, LOCKER_PATH, MOCK_PROVER_PATH, - NEP141_DEPOSIT, TOKEN_DEPLOYER_PATH, + account_n, arb_factory_address, arb_token_address, base_factory_address, + base_token_address, eth_eoa_address, eth_factory_address, eth_token_address, + get_test_deploy_token_args, sol_factory_address, sol_token_address, LOCKER_PATH, + MOCK_PROVER_PATH, NEP141_DEPOSIT, TOKEN_DEPLOYER_PATH, }; use anyhow; use near_sdk::borsh; @@ -23,6 +24,7 @@ mod tests { locker: near_workspaces::Contract, token_contract: near_workspaces::Contract, init_token_address: OmniAddress, + factory_contract_address: OmniAddress, token_metadata: BasicMetadata, } @@ -86,10 +88,18 @@ mod tests { .await? .into_result()?; + let factory_contract_address = match init_token_address.get_chain() { + ChainKind::Eth => eth_factory_address(), + ChainKind::Sol => sol_factory_address(), + ChainKind::Arb => arb_factory_address(), + ChainKind::Base => base_factory_address(), + _ => panic!("Unsupported chain"), + }; + locker .call("add_factory") .args_json(json!({ - "address": init_token_address, + "address": factory_contract_address, })) .max_gas() .transact() @@ -97,14 +107,21 @@ mod tests { .into_result()?; // Deploy token - let token_contract = - Self::deploy_token(&worker, &locker, &init_token_address, &token_metadata).await?; + let token_contract = Self::deploy_token( + &worker, + &locker, + &init_token_address, + &factory_contract_address, + &token_metadata, + ) + .await?; Ok(Self { worker, locker, token_contract, init_token_address, + factory_contract_address, token_metadata, }) } @@ -118,6 +135,7 @@ mod tests { worker: &near_workspaces::Worker, locker: &near_workspaces::Contract, init_token_address: &OmniAddress, + factoty_contract_address: &OmniAddress, token_metadata: &BasicMetadata, ) -> anyhow::Result { let token_deploy_initiator = worker @@ -150,6 +168,7 @@ mod tests { .call(locker.id(), "deploy_token") .args_borsh(get_test_deploy_token_args( init_token_address, + &factoty_contract_address, token_metadata, )) .deposit(required_storage) @@ -259,6 +278,7 @@ mod tests { &env.token_contract, &recipient, env.init_token_address, + env.factory_contract_address, amount, ) .await?; @@ -314,6 +334,7 @@ mod tests { &env.token_contract, &sender, env.init_token_address, + env.factory_contract_address, amount, ) .await?; @@ -369,6 +390,7 @@ mod tests { locker_contract: &near_workspaces::Contract, token_contract: &near_workspaces::Contract, recipient: &near_workspaces::Account, + token_address: OmniAddress, emitter_address: OmniAddress, amount: U128, ) -> anyhow::Result<()> { @@ -392,7 +414,7 @@ mod tests { storage_deposit_actions, prover_args: borsh::to_vec(&ProverResult::InitTransfer(InitTransferMessage { origin_nonce: 1, - token: OmniAddress::Near(token_contract.id().clone()), + token: token_address, recipient: OmniAddress::Near(recipient.id().clone()), amount, fee: Fee {