From 64cc229dfa8c3d75581b8d35e40ea069baf4004f Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 24 Oct 2024 16:02:40 +0300 Subject: [PATCH] ping pong interactor - generate one transaction when wallet is registered --- .../ping-pong-egld/interactor/.gitignore | 2 +- .../interactor/ping-pong-owner.pem | 5 --- .../ping-pong-egld/interactor/src/interact.rs | 39 ++++++++--------- .../interactor/tests/interact_cs_test.rs | 42 ++++++++++--------- .../ping-pong-egld/interactor/wallet.pem | 5 --- framework/snippets-base/src/interactor.rs | 1 + 6 files changed, 43 insertions(+), 51 deletions(-) delete mode 100644 contracts/examples/ping-pong-egld/interactor/ping-pong-owner.pem delete mode 100644 contracts/examples/ping-pong-egld/interactor/wallet.pem diff --git a/contracts/examples/ping-pong-egld/interactor/.gitignore b/contracts/examples/ping-pong-egld/interactor/.gitignore index e17170346b..ac5c74ec15 100644 --- a/contracts/examples/ping-pong-egld/interactor/.gitignore +++ b/contracts/examples/ping-pong-egld/interactor/.gitignore @@ -1,5 +1,5 @@ # Pem files are used for interactions, but shouldn't be committed -# *.pem +*.pem *.json # Temporary storage of deployed contract address, so we can preserve the context between executions. diff --git a/contracts/examples/ping-pong-egld/interactor/ping-pong-owner.pem b/contracts/examples/ping-pong-egld/interactor/ping-pong-owner.pem deleted file mode 100644 index 0c066f4b15..0000000000 --- a/contracts/examples/ping-pong-egld/interactor/ping-pong-owner.pem +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY for erd1r86as0572rkv05lvz8gvavnmdrjjt7y7u60v37aw9567p0yuvmhspcrkvh----- -MWUwZWNlOGFlNjk5OTA1ZDk2NzA3Nzk3MzhjMGRiOWM5YjQzNTNkMDVjYjFjNTM1 -NzdmMmE0ZWMzYzgxN2VmYjE5ZjVkODNlOWU1MGVjYzdkM2VjMTFkMGNlYjI3YjY4 -ZTUyNWY4OWVlNjllYzhmYmFlMmQzNWUwYmM5YzY2ZWY= ------END PRIVATE KEY for erd1r86as0572rkv05lvz8gvavnmdrjjt7y7u60v37aw9567p0yuvmhspcrkvh----- diff --git a/contracts/examples/ping-pong-egld/interactor/src/interact.rs b/contracts/examples/ping-pong-egld/interactor/src/interact.rs index 7fafad5720..2206564a11 100644 --- a/contracts/examples/ping-pong-egld/interactor/src/interact.rs +++ b/contracts/examples/ping-pong-egld/interactor/src/interact.rs @@ -43,12 +43,19 @@ pub async fn ping_pong_egld_cli() { .await }, Some(interact_cli::InteractCliCommand::Ping(args)) => { + let sender = interact.ping_pong_owner_address.clone(); interact - .ping(args.cost.unwrap_or_default(), None, None) + .ping(args.cost.unwrap_or_default(), None, &sender) .await }, - Some(interact_cli::InteractCliCommand::Pong) => interact.pong(None, None).await, - Some(interact_cli::InteractCliCommand::PongAll) => interact.pong_all(None, None).await, + Some(interact_cli::InteractCliCommand::Pong) => { + let sender = interact.ping_pong_owner_address.clone(); + interact.pong(None, &sender).await; + }, + Some(interact_cli::InteractCliCommand::PongAll) => { + let sender = interact.ping_pong_owner_address.clone(); + interact.pong_all(None, &sender).await; + }, Some(interact_cli::InteractCliCommand::GetUserAddresses) => { let user_addresses = interact.get_user_addresses().await; println!("User addresses: "); @@ -114,12 +121,8 @@ impl PingPongEgldInteract { .with_tracer(INTERACTOR_SCENARIO_TRACE_PATH) .await; - let ping_pong_owner_address = interactor - .register_wallet(Wallet::from_pem_file("ping-pong-owner.pem").unwrap()) - .await; - let wallet_address = interactor - .register_wallet(Wallet::from_pem_file("wallet.pem").unwrap()) - .await; + let ping_pong_owner_address = interactor.register_wallet(test_wallets::eve()).await; + let wallet_address = interactor.register_wallet(test_wallets::mallory()).await; // generate blocks until ESDTSystemSCAddress is enabled interactor.generate_blocks_until_epoch(1).await.unwrap(); @@ -133,7 +136,6 @@ impl PingPongEgldInteract { } pub async fn set_state(&mut self) { - println!("ping pong owner address: {}", self.ping_pong_owner_address); println!("wallet address: {}", self.wallet_address); self.interactor .retrieve_account(&self.ping_pong_owner_address) @@ -203,18 +205,13 @@ impl PingPongEgldInteract { println!("Result: {response:?}"); } - pub async fn ping( - &mut self, - egld_amount: u64, - message: Option<&str>, - sender: Option<&Bech32Address>, - ) { + pub async fn ping(&mut self, egld_amount: u64, message: Option<&str>, sender: &Bech32Address) { let _data: IgnoreValue = IgnoreValue; let response = self .interactor .tx() - .from(sender.unwrap_or(&self.wallet_address)) + .from(sender) .to(self.state.current_ping_pong_egld_address()) .gas(30_000_000u64) .typed(proxy_ping_pong_egld::PingPongProxy) @@ -233,11 +230,11 @@ impl PingPongEgldInteract { } } - pub async fn pong(&mut self, message: Option<&str>, sender: Option<&Bech32Address>) { + pub async fn pong(&mut self, message: Option<&str>, sender: &Bech32Address) { let response = self .interactor .tx() - .from(sender.unwrap_or(&self.wallet_address)) + .from(sender) .to(self.state.current_ping_pong_egld_address()) .gas(30_000_000u64) .typed(proxy_ping_pong_egld::PingPongProxy) @@ -255,11 +252,11 @@ impl PingPongEgldInteract { } } - pub async fn pong_all(&mut self, message: Option, sender: Option<&Bech32Address>) { + pub async fn pong_all(&mut self, message: Option, sender: &Bech32Address) { let response = self .interactor .tx() - .from(sender.unwrap_or(&self.wallet_address)) + .from(sender) .to(self.state.current_ping_pong_egld_address()) .gas(30_000_000u64) .typed(proxy_ping_pong_egld::PingPongProxy) diff --git a/contracts/examples/ping-pong-egld/interactor/tests/interact_cs_test.rs b/contracts/examples/ping-pong-egld/interactor/tests/interact_cs_test.rs index d689b57da5..f25bcfde12 100644 --- a/contracts/examples/ping-pong-egld/interactor/tests/interact_cs_test.rs +++ b/contracts/examples/ping-pong-egld/interactor/tests/interact_cs_test.rs @@ -5,6 +5,9 @@ use ping_pong_egld_interact::{Config, PingPongEgldInteract}; #[cfg_attr(not(feature = "chain-simulator-tests"), ignore)] async fn test_ping_pong_egld() { let mut interact = PingPongEgldInteract::init(Config::chain_simulator_config()).await; + let wallet_address = interact.wallet_address.clone(); + let ping_pong_owner_address = interact.ping_pong_owner_address.clone(); + let ping_amount = 1u64; // test_ping_unmatched_amount @@ -22,7 +25,11 @@ async fn test_ping_pong_egld() { .await; interact - .ping(0u64, Some("the payment must match the fixed sum"), None) + .ping( + 0u64, + Some("the payment must match the fixed sum"), + &wallet_address, + ) .await; // test_ping_inactive_contracts @@ -40,7 +47,7 @@ async fn test_ping_pong_egld() { .await; interact - .ping(1u64, Some("smart contract not active yet"), None) + .ping(1u64, Some("smart contract not active yet"), &wallet_address) .await; // test_ping_passed_deadline @@ -57,7 +64,9 @@ async fn test_ping_pong_egld() { ) .await; - interact.ping(1u64, Some("deadline has passed"), None).await; + interact + .ping(1u64, Some("deadline has passed"), &wallet_address) + .await; // test_ping_max_funds let ping_amount = 10u64; @@ -74,7 +83,7 @@ async fn test_ping_pong_egld() { .await; interact - .ping(10u64, Some("smart contract full"), None) + .ping(10u64, Some("smart contract full"), &wallet_address) .await; // test ping @@ -91,16 +100,18 @@ async fn test_ping_pong_egld() { ) .await; - interact.ping(1u64, None, None).await; - interact.ping(1u64, Some("can only ping once"), None).await; + interact.ping(1u64, None, &wallet_address).await; + interact + .ping(1u64, Some("can only ping once"), &wallet_address) + .await; assert_eq!(interact.get_ping_amount().await, RustBigUint::from(1u64)); interact - .pong(Some("can't withdraw before deadline"), None) + .pong(Some("can't withdraw before deadline"), &wallet_address) .await; - interact.pong(None, None).await; + interact.pong(None, &wallet_address).await; // test_pong_all let ping_amount = 1u64; @@ -116,19 +127,12 @@ async fn test_ping_pong_egld() { ) .await; - interact - .ping(1u64, None, Some(&interact.ping_pong_owner_address.clone())) - .await; + interact.ping(1u64, None, &ping_pong_owner_address).await; - interact - .ping(1u64, None, Some(&interact.wallet_address.clone())) - .await; + interact.ping(1u64, None, &wallet_address).await; - interact.pong_all(None, None).await; + interact.pong_all(None, &ping_pong_owner_address).await; interact - .pong( - Some("already withdrawn"), - Some(&interact.wallet_address.clone()), - ) + .pong(Some("already withdrawn"), &wallet_address) .await; } diff --git a/contracts/examples/ping-pong-egld/interactor/wallet.pem b/contracts/examples/ping-pong-egld/interactor/wallet.pem deleted file mode 100644 index 44428ac9c7..0000000000 --- a/contracts/examples/ping-pong-egld/interactor/wallet.pem +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY for erd18r620tsqvyqmjgu23cdd8r33rauht978weehakscxdjm9g92g5zsw8sjh3----- -MmYzYmU5M2ZmZDBmN2FiNDA1ZjU3NDExOTYwMmQxYzgwNWFkY2FhNmI1NGNhNGU2 -ZmQxMzAxMmMyMTMzNjk2YjM4ZjRhN2FlMDA2MTAxYjkyMzhhOGUxYWQzOGUzMTFm -Nzk3NTk3Yzc3NjczN2VkYTE4MzM2NWIyYTBhYTQ1MDU= ------END PRIVATE KEY for erd18r620tsqvyqmjgu23cdd8r33rauht978weehakscxdjm9g92g5zsw8sjh3----- diff --git a/framework/snippets-base/src/interactor.rs b/framework/snippets-base/src/interactor.rs index d49ab2cbe8..94da772847 100644 --- a/framework/snippets-base/src/interactor.rs +++ b/framework/snippets-base/src/interactor.rs @@ -55,6 +55,7 @@ where let address = wallet.to_address(); self.send_user_funds(&address).await.unwrap(); + self.generate_blocks(1).await.unwrap(); self.sender_map.insert( address.clone(), Sender {