Skip to content

Commit

Permalink
Add integration tests for OmniToken. (#148)
Browse files Browse the repository at this point in the history
* Add integration tests for OmniToken.

* Correct chain kind for deploy token args.

* Add the tests for the native token.
  • Loading branch information
kisialiou authored Dec 4, 2024
1 parent 64d7746 commit db88f8d
Show file tree
Hide file tree
Showing 5 changed files with 476 additions and 25 deletions.
28 changes: 14 additions & 14 deletions near/omni-tests/src/fin_transfer.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#[cfg(test)]
mod tests {
use crate::helpers::tests::{
account_1, account_2, 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, 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;
Expand All @@ -14,46 +14,46 @@ mod tests {
use rstest::rstest;

#[rstest]
#[case(vec![(account_1(), true), (relayer_account_id(), true)], 1000, 1, None)]
#[case(vec![(account_1(), true)], 1000, 0, None)]
#[case(vec![(account_n(1), true), (relayer_account_id(), true)], 1000, 1, None)]
#[case(vec![(account_n(1), true)], 1000, 0, None)]
#[case(
vec![
(account_1(), true),
(account_n(1), true),
(relayer_account_id(), true),
(account_2(), true),
(account_2(), true),
(account_n(2), true),
(account_n(2), true),
],
1000,
1,
Some("Invalid len of accounts for storage deposit")
)]
#[case(
vec![(relayer_account_id(), true), (account_1(), true)],
vec![(relayer_account_id(), true), (account_n(1), true)],
1000,
1,
Some("STORAGE_ERR: The transfer recipient is omitted")
)]
#[case(
vec![(account_1(), true)],
vec![(account_n(1), true)],
1000,
1,
Some("STORAGE_ERR: The fee recipient is omitted")
)]
#[case(vec![], 1000, 1, Some("STORAGE_ERR: The transfer recipient is omitted"))]
#[case(
vec![(account_1(), false), (relayer_account_id(), false)],
vec![(account_n(1), false), (relayer_account_id(), false)],
1000,
1,
Some("STORAGE_ERR: The transfer recipient is omitted")
)]
#[case(
vec![(account_1(), true), (relayer_account_id(), false)],
vec![(account_n(1), true), (relayer_account_id(), false)],
1000,
1,
Some("STORAGE_ERR: The fee recipient is omitted")
)]
#[case(
vec![(account_1(), false), (relayer_account_id(), true)],
vec![(account_n(1), false), (relayer_account_id(), true)],
1000,
1,
Some("STORAGE_ERR: The transfer recipient is omitted")
Expand Down Expand Up @@ -188,7 +188,7 @@ mod tests {
prover_args: borsh::to_vec(&ProverResult::InitTransfer(InitTransferMessage {
origin_nonce: 1,
token: OmniAddress::Near(token_contract.id().clone()),
recipient: OmniAddress::Near(account_1()),
recipient: OmniAddress::Near(account_n(1)),
amount: U128(amount),
fee: Fee {
fee: U128(fee),
Expand All @@ -210,7 +210,7 @@ mod tests {
let recipient_balance: U128 = token_contract
.view("ft_balance_of")
.args_json(json!({
"account_id": account_1(),
"account_id": account_n(1),
}))
.await?
.json()?;
Expand Down
53 changes: 44 additions & 9 deletions near/omni-tests/src/helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,25 @@ pub mod tests {
use near_sdk::{borsh, json_types::U128, serde_json, AccountId};
use near_workspaces::types::NearToken;
use omni_types::{
locker_args::{BindTokenArgs, ClaimFeeArgs},
prover_result::{DeployTokenMessage, FinTransferMessage, ProverResult},
ChainKind, Nonce, OmniAddress, TransferId,
locker_args::{BindTokenArgs, ClaimFeeArgs, DeployTokenArgs},
prover_result::{DeployTokenMessage, FinTransferMessage, LogMetadataMessage, ProverResult},
BasicMetadata, ChainKind, Nonce, OmniAddress, TransferId,
};

pub const MOCK_TOKEN_PATH: &str = "./../target/wasm32-unknown-unknown/release/mock_token.wasm";
pub const MOCK_PROVER_PATH: &str =
"./../target/wasm32-unknown-unknown/release/mock_prover.wasm";
pub const LOCKER_PATH: &str = "./../target/wasm32-unknown-unknown/release/omni_bridge.wasm";
pub const NEP141_DEPOSIT: NearToken = NearToken::from_yoctonear(1250000000000000000000);
pub const TOKEN_DEPLOYER_PATH: &str =
"./../target/wasm32-unknown-unknown/release/token_deployer.wasm";

pub fn relayer_account_id() -> AccountId {
"relayer".parse().unwrap()
}

pub fn account_1() -> AccountId {
"account_1".parse().unwrap()
}

pub fn account_2() -> AccountId {
"account_2".parse().unwrap()
pub fn account_n(n: u8) -> AccountId {
format!("account_{}", n).parse().unwrap()
}

pub fn eth_factory_address() -> OmniAddress {
Expand All @@ -44,6 +42,22 @@ pub mod tests {
.unwrap()
}

pub fn sol_token_address() -> OmniAddress {
"sol:11111111111111111111111111111111".parse().unwrap()
}

pub fn arb_token_address() -> OmniAddress {
"arb:0x1234567890123456789012345678901234567890"
.parse()
.unwrap()
}

pub fn base_token_address() -> OmniAddress {
"base:0x1234567890123456789012345678901234567890"
.parse()
.unwrap()
}

pub fn get_claim_fee_args_near(
origin_chain: ChainKind,
destination_chain: ChainKind,
Expand Down Expand Up @@ -72,6 +86,27 @@ pub mod tests {
}
}

pub fn get_test_deploy_token_args(
token_address: &OmniAddress,
token_metadata: &BasicMetadata,
) -> DeployTokenArgs {
let log_metadata_message = LogMetadataMessage {
token_address: token_address.clone(),
name: token_metadata.name.clone(),
symbol: token_metadata.symbol.clone(),
decimals: token_metadata.decimals,
emitter_address: token_address.clone(),
};

let prover_result = ProverResult::LogMetadata(log_metadata_message);
let prover_args = borsh::to_vec(&prover_result).expect("Failed to serialize prover result");

DeployTokenArgs {
chain_kind: token_address.get_chain(),
prover_args,
}
}

pub fn get_bind_token_args(
token: &AccountId,
token_address: &OmniAddress,
Expand Down
4 changes: 2 additions & 2 deletions near/omni-tests/src/init_transfer.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#[cfg(test)]
mod tests {
use crate::helpers::tests::{
account_1, eth_eoa_address, eth_factory_address, eth_token_address, get_bind_token_args,
account_n, eth_eoa_address, eth_factory_address, eth_token_address, get_bind_token_args,
get_claim_fee_args_near, get_event_data, relayer_account_id, LOCKER_PATH, MOCK_PROVER_PATH,
MOCK_TOKEN_PATH, NEP141_DEPOSIT,
};
Expand Down Expand Up @@ -82,7 +82,7 @@ mod tests {

// Create sender account. (Default account in sandbox has 100 NEAR)
let sender_account = worker
.create_tla(account_1(), worker.dev_generate().await.1)
.create_tla(account_n(1), worker.dev_generate().await.1)
.await?
.unwrap();

Expand Down
1 change: 1 addition & 0 deletions near/omni-tests/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
mod fin_transfer;
mod helpers;
mod init_transfer;
mod omni_token;
Loading

0 comments on commit db88f8d

Please sign in to comment.