mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-19 04:11:09 +00:00
[pallet_collective] Enforce prime is a valid member of collective in set_members extrinsic (#14354)
* Updated set_members extrinsic to enforce prime is valid member of collective * Added additional tests for set_members extrinsic * applied the code review suggestions
This commit is contained in:
@@ -346,6 +346,8 @@ pub mod pallet {
|
||||
WrongProposalWeight,
|
||||
/// The given length bound for the proposal was too low.
|
||||
WrongProposalLength,
|
||||
/// Prime account is not a member
|
||||
PrimeAccountNotMember,
|
||||
}
|
||||
|
||||
#[pallet::hooks]
|
||||
@@ -417,6 +419,9 @@ pub mod pallet {
|
||||
old.len(),
|
||||
);
|
||||
}
|
||||
if let Some(p) = &prime {
|
||||
ensure!(new_members.contains(p), Error::<T, I>::PrimeAccountNotMember);
|
||||
}
|
||||
let mut new_members = new_members;
|
||||
new_members.sort();
|
||||
<Self as ChangeMembers<T::AccountId>>::set_members_sorted(&new_members, &old);
|
||||
|
||||
@@ -236,6 +236,25 @@ fn initialize_members_sorts_members() {
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn set_members_with_prime_works() {
|
||||
ExtBuilder::default().build_and_execute(|| {
|
||||
let members = vec![1, 2, 3];
|
||||
assert_ok!(Collective::set_members(
|
||||
RuntimeOrigin::root(),
|
||||
members.clone(),
|
||||
Some(3),
|
||||
MaxMembers::get()
|
||||
));
|
||||
assert_eq!(Collective::members(), members.clone());
|
||||
assert_eq!(Collective::prime(), Some(3));
|
||||
assert_noop!(
|
||||
Collective::set_members(RuntimeOrigin::root(), members, Some(4), MaxMembers::get()),
|
||||
Error::<Test, Instance1>::PrimeAccountNotMember
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn proposal_weight_limit_works() {
|
||||
ExtBuilder::default().build_and_execute(|| {
|
||||
|
||||
Reference in New Issue
Block a user