mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 10:31:04 +00:00
Fix invalid state transitions in pallet-bounties (#11630)
* Pallet-bounty: disallow invalid state transitions * Fix tests: funding only at even block numbers * Fix benchmarks: bounties need to be funded * fix on_initialize Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
This commit is contained in:
@@ -390,7 +390,7 @@ pub mod pallet {
|
|||||||
Bounties::<T, I>::try_mutate_exists(bounty_id, |maybe_bounty| -> DispatchResult {
|
Bounties::<T, I>::try_mutate_exists(bounty_id, |maybe_bounty| -> DispatchResult {
|
||||||
let mut bounty = maybe_bounty.as_mut().ok_or(Error::<T, I>::InvalidIndex)?;
|
let mut bounty = maybe_bounty.as_mut().ok_or(Error::<T, I>::InvalidIndex)?;
|
||||||
match bounty.status {
|
match bounty.status {
|
||||||
BountyStatus::Proposed | BountyStatus::Approved | BountyStatus::Funded => {},
|
BountyStatus::Funded => {},
|
||||||
_ => return Err(Error::<T, I>::UnexpectedStatus.into()),
|
_ => return Err(Error::<T, I>::UnexpectedStatus.into()),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1126,8 +1126,8 @@ fn accept_curator_handles_different_deposit_calculations() {
|
|||||||
assert_ok!(Bounties::propose_bounty(Origin::signed(0), value, b"12345".to_vec()));
|
assert_ok!(Bounties::propose_bounty(Origin::signed(0), value, b"12345".to_vec()));
|
||||||
assert_ok!(Bounties::approve_bounty(Origin::root(), bounty_index));
|
assert_ok!(Bounties::approve_bounty(Origin::root(), bounty_index));
|
||||||
|
|
||||||
System::set_block_number(3);
|
System::set_block_number(4);
|
||||||
<Treasury as OnInitialize<u64>>::on_initialize(3);
|
<Treasury as OnInitialize<u64>>::on_initialize(4);
|
||||||
|
|
||||||
assert_ok!(Bounties::propose_curator(Origin::root(), bounty_index, user, fee));
|
assert_ok!(Bounties::propose_curator(Origin::root(), bounty_index, user, fee));
|
||||||
assert_ok!(Bounties::accept_curator(Origin::signed(user), bounty_index));
|
assert_ok!(Bounties::accept_curator(Origin::signed(user), bounty_index));
|
||||||
@@ -1150,8 +1150,8 @@ fn accept_curator_handles_different_deposit_calculations() {
|
|||||||
assert_ok!(Bounties::propose_bounty(Origin::signed(0), value, b"12345".to_vec()));
|
assert_ok!(Bounties::propose_bounty(Origin::signed(0), value, b"12345".to_vec()));
|
||||||
assert_ok!(Bounties::approve_bounty(Origin::root(), bounty_index));
|
assert_ok!(Bounties::approve_bounty(Origin::root(), bounty_index));
|
||||||
|
|
||||||
System::set_block_number(3);
|
System::set_block_number(6);
|
||||||
<Treasury as OnInitialize<u64>>::on_initialize(3);
|
<Treasury as OnInitialize<u64>>::on_initialize(6);
|
||||||
|
|
||||||
assert_ok!(Bounties::propose_curator(Origin::root(), bounty_index, user, fee));
|
assert_ok!(Bounties::propose_curator(Origin::root(), bounty_index, user, fee));
|
||||||
assert_ok!(Bounties::accept_curator(Origin::signed(user), bounty_index));
|
assert_ok!(Bounties::accept_curator(Origin::signed(user), bounty_index));
|
||||||
|
|||||||
@@ -221,7 +221,7 @@ benchmarks! {
|
|||||||
unassign_curator {
|
unassign_curator {
|
||||||
setup_pot_account::<T>();
|
setup_pot_account::<T>();
|
||||||
let bounty_setup = activate_child_bounty::<T>(0, T::MaximumReasonLength::get())?;
|
let bounty_setup = activate_child_bounty::<T>(0, T::MaximumReasonLength::get())?;
|
||||||
Bounties::<T>::on_initialize(T::BlockNumber::zero());
|
Treasury::<T>::on_initialize(T::BlockNumber::zero());
|
||||||
frame_system::Pallet::<T>::set_block_number(T::BountyUpdatePeriod::get() + 1u32.into());
|
frame_system::Pallet::<T>::set_block_number(T::BountyUpdatePeriod::get() + 1u32.into());
|
||||||
let caller = whitelisted_caller();
|
let caller = whitelisted_caller();
|
||||||
}: _(RawOrigin::Signed(caller), bounty_setup.bounty_id,
|
}: _(RawOrigin::Signed(caller), bounty_setup.bounty_id,
|
||||||
@@ -295,7 +295,7 @@ benchmarks! {
|
|||||||
close_child_bounty_active {
|
close_child_bounty_active {
|
||||||
setup_pot_account::<T>();
|
setup_pot_account::<T>();
|
||||||
let bounty_setup = activate_child_bounty::<T>(0, T::MaximumReasonLength::get())?;
|
let bounty_setup = activate_child_bounty::<T>(0, T::MaximumReasonLength::get())?;
|
||||||
Bounties::<T>::on_initialize(T::BlockNumber::zero());
|
Treasury::<T>::on_initialize(T::BlockNumber::zero());
|
||||||
}: close_child_bounty(RawOrigin::Root, bounty_setup.bounty_id, bounty_setup.child_bounty_id)
|
}: close_child_bounty(RawOrigin::Root, bounty_setup.bounty_id, bounty_setup.child_bounty_id)
|
||||||
verify {
|
verify {
|
||||||
assert_last_event::<T>(Event::Canceled {
|
assert_last_event::<T>(Event::Canceled {
|
||||||
|
|||||||
Reference in New Issue
Block a user