From a850924523b430f8fb0a628fb4cf19fcf5108bcd Mon Sep 17 00:00:00 2001 From: Ovidiu Stinga Date: Tue, 22 Aug 2023 15:55:44 +0300 Subject: [PATCH] add more tests for staking module --- .../tests/staking_module_whitebox_test.rs | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/contracts/feature-tests/use-module/tests/staking_module_whitebox_test.rs b/contracts/feature-tests/use-module/tests/staking_module_whitebox_test.rs index d95f6d94b7..36bfc0d949 100644 --- a/contracts/feature-tests/use-module/tests/staking_module_whitebox_test.rs +++ b/contracts/feature-tests/use-module/tests/staking_module_whitebox_test.rs @@ -208,6 +208,88 @@ fn test_staking_module() { ALICE_ADDRESS_EXPR, CheckAccount::new().esdt_balance(STAKING_TOKEN_ID_EXPR, rust_biguint!(1_000_000)), )); + + // alice vote to slash bob + world.whitebox_call( + &use_module_whitebox, + ScCallStep::new().from(ALICE_ADDRESS_EXPR), + |sc| { + sc.vote_slash_member(managed_address!(&address_expr_to_address(BOB_ADDRESS_EXPR))); + + assert_eq!( + sc.slashing_proposal_voters(&managed_address!(&address_expr_to_address( + BOB_ADDRESS_EXPR + ))) + .len(), + 1 + ); + assert!(sc + .slashing_proposal_voters(&managed_address!(&address_expr_to_address( + BOB_ADDRESS_EXPR + ))) + .contains(&managed_address!(&address_expr_to_address( + ALICE_ADDRESS_EXPR + )))); + }, + ); + + // bob vote to slash alice + world.whitebox_call( + &use_module_whitebox, + ScCallStep::new().from(BOB_ADDRESS_EXPR), + |sc| { + sc.vote_slash_member(managed_address!(&address_expr_to_address( + ALICE_ADDRESS_EXPR + ))); + }, + ); + + // try slash before quorum reached + world.whitebox_call_check( + &use_module_whitebox, + ScCallStep::new().from(BOB_ADDRESS_EXPR).no_expect(), + |sc| { + sc.slash_member(managed_address!(&address_expr_to_address( + ALICE_ADDRESS_EXPR + ))); + }, + |r| { + r.assert_user_error("Quorum not reached"); + }, + ); + + // carol vote + world.whitebox_call( + &use_module_whitebox, + ScCallStep::new().from(CAROL_ADDRESS_EXPR), + |sc| { + sc.vote_slash_member(managed_address!(&address_expr_to_address( + ALICE_ADDRESS_EXPR + ))); + + assert_eq!( + sc.slashing_proposal_voters(&managed_address!(&address_expr_to_address( + ALICE_ADDRESS_EXPR + ))) + .len(), + 2 + ); + assert!(sc + .slashing_proposal_voters(&managed_address!(&address_expr_to_address( + ALICE_ADDRESS_EXPR + ))) + .contains(&managed_address!(&address_expr_to_address( + BOB_ADDRESS_EXPR + )))); + assert!(sc + .slashing_proposal_voters(&managed_address!(&address_expr_to_address( + ALICE_ADDRESS_EXPR + ))) + .contains(&managed_address!(&address_expr_to_address( + CAROL_ADDRESS_EXPR + )))); + }, + ); } fn address_expr_to_address(address_expr: &str) -> Address {