Skip to content

Commit

Permalink
Add the tests for the native token.
Browse files Browse the repository at this point in the history
  • Loading branch information
kisialiou committed Dec 3, 2024
1 parent 83084ce commit b7af052
Showing 1 changed file with 84 additions and 29 deletions.
113 changes: 84 additions & 29 deletions near/omni-tests/src/omni_token.rs
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,11 @@ mod tests {
})
}

async fn new_native(chain_kind: ChainKind) -> anyhow::Result<Self> {
let init_token_address = OmniAddress::new_zero(chain_kind).unwrap();
Self::new(init_token_address).await
}

async fn deploy_token(
worker: &near_workspaces::Worker<near_workspaces::network::Sandbox>,
locker: &near_workspaces::Contract,
Expand All @@ -125,17 +130,34 @@ mod tests {
.await?
.json()?;

token_deploy_initiator
.call(locker.id(), "deploy_token")
.args_borsh(get_test_deploy_token_args(
init_token_address,
token_metadata,
))
.deposit(required_storage)
.max_gas()
.transact()
.await?
.into_result()?;
if init_token_address == &OmniAddress::new_zero(init_token_address.get_chain()).unwrap()
{
locker
.call("deploy_native_token")
.args_json(json!({
"chain_kind": init_token_address.get_chain(),
"name": token_metadata.name,
"symbol": token_metadata.symbol,
"decimals": token_metadata.decimals,
}))
.deposit(required_storage)
.max_gas()
.transact()
.await?
.into_result()?;
} else {
token_deploy_initiator
.call(locker.id(), "deploy_token")
.args_borsh(get_test_deploy_token_args(
init_token_address,
token_metadata,
))
.deposit(required_storage)
.max_gas()
.transact()
.await?
.into_result()?;
}

let token_account_id: AccountId = locker
.view("get_token_id")
Expand Down Expand Up @@ -181,13 +203,24 @@ mod tests {
}

#[rstest]
#[case(eth_token_address())]
#[case(sol_token_address())]
#[case(arb_token_address())]
#[case(base_token_address())]
#[case(eth_token_address(), false)]
#[case(sol_token_address(), false)]
#[case(arb_token_address(), false)]
#[case(base_token_address(), false)]
#[case(eth_token_address(), true)]
#[case(sol_token_address(), true)]
#[case(arb_token_address(), true)]
#[case(base_token_address(), true)]
#[tokio::test]
async fn test_token_metadata(#[case] init_token_address: OmniAddress) -> anyhow::Result<()> {
let env = TestEnv::new(init_token_address).await?;
async fn test_token_metadata(
#[case] init_token_address: OmniAddress,
#[case] is_native: bool,
) -> anyhow::Result<()> {
let env = if is_native {
TestEnv::new_native(init_token_address.get_chain()).await?
} else {
TestEnv::new(init_token_address).await?
};

let fetched_metadata: BasicMetadata =
env.token_contract.view("ft_metadata").await?.json()?;
Expand All @@ -200,13 +233,24 @@ mod tests {
}

#[rstest]
#[case(eth_token_address())]
#[case(sol_token_address())]
#[case(arb_token_address())]
#[case(base_token_address())]
#[case(eth_token_address(), false)]
#[case(sol_token_address(), false)]
#[case(arb_token_address(), false)]
#[case(base_token_address(), false)]
#[case(eth_token_address(), true)]
#[case(sol_token_address(), true)]
#[case(arb_token_address(), true)]
#[case(base_token_address(), true)]
#[tokio::test]
async fn test_token_minting(#[case] init_token_address: OmniAddress) -> anyhow::Result<()> {
let env = TestEnv::new(init_token_address).await?;
async fn test_token_minting(
#[case] init_token_address: OmniAddress,
#[case] is_native: bool,
) -> anyhow::Result<()> {
let env = if is_native {
TestEnv::new_native(init_token_address.get_chain()).await?
} else {
TestEnv::new(init_token_address).await?
};
let recipient = env.create_registered_account(3).await?;
let amount = U128(1000000000000000000000000);

Expand Down Expand Up @@ -242,13 +286,24 @@ mod tests {
}

#[rstest]
#[case(eth_token_address())]
#[case(sol_token_address())]
#[case(arb_token_address())]
#[case(base_token_address())]
#[case(eth_token_address(), false)]
#[case(sol_token_address(), false)]
#[case(arb_token_address(), false)]
#[case(base_token_address(), false)]
#[case(eth_token_address(), true)]
#[case(sol_token_address(), true)]
#[case(arb_token_address(), true)]
#[case(base_token_address(), true)]
#[tokio::test]
async fn test_token_transfer(#[case] init_token_address: OmniAddress) -> anyhow::Result<()> {
let env = TestEnv::new(init_token_address).await?;
async fn test_token_transfer(
#[case] init_token_address: OmniAddress,
#[case] is_native: bool,
) -> anyhow::Result<()> {
let env = if is_native {
TestEnv::new_native(init_token_address.get_chain()).await?
} else {
TestEnv::new(init_token_address).await?
};
let sender = env.create_registered_account(3).await?;
let receiver = env.create_registered_account(4).await?;
let amount = U128(1000000000000000000000000);
Expand Down

0 comments on commit b7af052

Please sign in to comment.