Skip to content

Commit

Permalink
all client_l2move_l1move movement client tests pass against framework
Browse files Browse the repository at this point in the history
  • Loading branch information
andygolay committed Oct 15, 2024
1 parent b88cd6a commit 9e8fa76
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 35 deletions.
8 changes: 2 additions & 6 deletions protocol-units/bridge/integration-tests/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ impl Default for EthToMovementCallArgs {
Self {
initiator: b"32Be343B94f860124dC4fEe278FDCBD38C102D88".to_vec(),
recipient: MovementAddress(AccountAddress::new(*b"0x00000000000000000000000000face")),
bridge_transfer_id: MovementHash(*b"00000000000000000000000transfer4"),
bridge_transfer_id: MovementHash(*b"00000000000000000000000transfer9"),
hash_lock: MovementHash(*keccak256(b"secret")),
time_lock: 3600,
amount: 100,
Expand All @@ -63,15 +63,11 @@ impl Default for EthToMovementCallArgs {

impl Default for MovementToEthCallArgs {
fn default() -> Self {
let preimage = "secret".to_string();
let serialized_preimage = bcs::to_bytes(&preimage).unwrap();
let hash_lock = *keccak256(&serialized_preimage);

Self {
initiator: MovementAddress(AccountAddress::new(*b"0x000000000000000000000000A55018")),
recipient: b"32Be343B94f860124dC4fEe278FDCBD38C102D88".to_vec(),
bridge_transfer_id: EthHash(*b"00000000000000000000000transfer1"),
hash_lock: EthHash(hash_lock),
hash_lock: EthHash(*keccak256(b"secret")),
time_lock: 3600,
amount: 100,
}
Expand Down
1 change: 1 addition & 0 deletions protocol-units/bridge/integration-tests/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,7 @@ pub async fn fund_and_check_balance(
let coin_client = CoinClient::new(&rest_client);
let faucet_client = movement_harness.faucet_client.write().unwrap();
faucet_client.fund(movement_client_signer.address(), expected_balance).await?;
faucet_client.fund(AccountAddress::from_hex_literal("0xface")?, expected_balance).await?;

let balance = coin_client.get_account_balance(&movement_client_signer.address()).await?;
assert!(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ use alloy::{
providers::Provider,
};
use anyhow::Result;
use aptos_sdk::types::account_address::AccountAddress;
use aptos_sdk::coin_client::CoinClient;
use aptos_types::PeerId;
use bridge_config::Config;
use bridge_integration_tests::utils as test_utils;
use bridge_integration_tests::EthToMovementCallArgs;
Expand Down Expand Up @@ -133,6 +135,9 @@ async fn test_movement_client_complete_transfer(
{
let faucet_client = mvt_client_harness.faucet_client.write().unwrap();
faucet_client.fund(movement_client_signer.address(), 100_000_000).await?;
faucet_client.fund(AccountAddress::from_hex_literal("0xface")?, 100_000_000).await?;
faucet_client.fund(AccountAddress::from_hex_literal("0x1")?, 100_000_000).await?;

}

let balance = coin_client.get_account_balance(&movement_client_signer.address()).await?;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,27 +21,6 @@ use tokio::time::{sleep, Duration};
use tokio::{self};
use tracing::info;

#[tokio::test]
async fn test_movement_client_build_and_fund_accounts() -> Result<(), anyhow::Error> {
let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init();

let config = Config::default();
let (mut mvt_client_harness, _config, mut mvt_process) =
TestHarness::new_with_movement(config).await;
let test_result = async {
test_utils::fund_and_check_balance(&mut mvt_client_harness, 100_000_000_000)
.await
.expect("Failed to fund accounts");
Ok(())
}
.await;

if let Err(e) = mvt_process.kill().await {
eprintln!("Failed to kill child process: {:?}", e);
}
test_result
}

#[tokio::test]
async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> {
let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init();
Expand Down Expand Up @@ -107,15 +86,10 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> {
#[tokio::test]
async fn test_movement_client_complete_transfer() -> Result<(), anyhow::Error> {
let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init();

MovementClientFramework::bridge_setup_scripts().await?;

let config: Config = Config::suzuka();

let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await;

let args = MovementToEthCallArgs::default();

let test_result = async {
let sender_address = mvt_client_harness.movement_client.signer().address();
test_utils::fund_and_check_balance_framework(&mut mvt_client_harness, 100_000_000_000)
Expand All @@ -136,6 +110,16 @@ async fn test_movement_client_complete_transfer() -> Result<(), anyhow::Error> {
.await?;
info!("Bridge transfer ID: {:?}", bridge_transfer_id);

let details = BridgeContract::get_bridge_transfer_details_initiator(
&mut mvt_client_harness.movement_client,
BridgeTransferId(bridge_transfer_id),
)
.await
.expect("Failed to get bridge transfer details")
.expect("Expected to find bridge transfer details, but got None");

info!("Bridge transfer details: {:?}", details);

let secret = b"secret";
let mut padded_secret = [0u8; 32];
padded_secret[..secret.len()].copy_from_slice(secret);
Expand All @@ -157,8 +141,6 @@ async fn test_movement_client_complete_transfer() -> Result<(), anyhow::Error> {
.expect("Expected to find bridge transfer details, but got None");

info!("Bridge transfer details: {:?}", details);

assert_eq!(details.state, 1, "Bridge transfer should be initiated.");

let amount = match details.amount.0 {
AssetType::Moveth(amount) => amount,
Expand Down
3 changes: 2 additions & 1 deletion protocol-units/bridge/service/src/chains/ethereum/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ use alloy::{
};
use alloy_rlp::Decodable;
use bridge_config::common::eth::EthConfig;
use tracing::info;
use std::fmt::{self, Debug};
use url::Url;

Expand Down Expand Up @@ -265,7 +266,7 @@ impl crate::chains::bridge_contracts::BridgeContract<EthAddress> for EthClient {
.ok_or(generic_error("Could not get required slice from pre-image"))?
.try_into()
.map_err(|_| generic_error("Could not convert pre-image to [u8; 32]"))?;

info!{"Pre-image: {:?}", pre_image};
let contract =
AtomicBridgeInitiator::new(self.initiator_contract_address(), &self.rpc_provider);
let call = contract
Expand Down

0 comments on commit 9e8fa76

Please sign in to comment.