mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-12 00:41:08 +00:00
Check for duplicate members in genesis of pallet-membership & pallet-collective (#9325)
* Ensure no duplicate members in collective and membership genesis * Test build panics * Massage comments * Use btreeset
This commit is contained in:
@@ -211,7 +211,13 @@ decl_storage! {
|
||||
add_extra_genesis {
|
||||
config(phantom): sp_std::marker::PhantomData<I>;
|
||||
config(members): Vec<T::AccountId>;
|
||||
build(|config| Module::<T, I>::initialize_members(&config.members))
|
||||
build(|config| {
|
||||
use sp_std::collections::btree_set::BTreeSet;
|
||||
let members_set: BTreeSet<_> = config.members.iter().collect();
|
||||
assert!(members_set.len() == config.members.len(), "Members cannot contain duplicate accounts.");
|
||||
|
||||
Module::<T, I>::initialize_members(&config.members)
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1837,4 +1843,13 @@ mod tests {
|
||||
]);
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic(expected = "Members cannot contain duplicate accounts.")]
|
||||
fn genesis_build_panics_with_duplicate_members() {
|
||||
collective::GenesisConfig::<Test> {
|
||||
members: vec![1, 2, 3, 1],
|
||||
phantom: Default::default(),
|
||||
}.build_storage().unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,6 +84,11 @@ decl_storage! {
|
||||
config(phantom): sp_std::marker::PhantomData<I>;
|
||||
build(|config: &Self| {
|
||||
let mut members = config.members.clone();
|
||||
|
||||
use sp_std::collections::btree_set::BTreeSet;
|
||||
let members_set: BTreeSet<_> = config.members.iter().collect();
|
||||
assert!(members_set.len() == config.members.len(), "Members cannot contain duplicate accounts.");
|
||||
|
||||
members.sort();
|
||||
T::MembershipInitialized::initialize_members(&members);
|
||||
<Members<T, I>>::put(members);
|
||||
@@ -706,4 +711,13 @@ mod tests {
|
||||
assert_eq!(PRIME.with(|m| *m.borrow()), Membership::prime());
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic(expected = "Members cannot contain duplicate accounts.")]
|
||||
fn genesis_build_panics_with_duplicate_members() {
|
||||
pallet_membership::GenesisConfig::<Test> {
|
||||
members: vec![1, 2, 3, 1],
|
||||
phantom: Default::default(),
|
||||
}.build_storage().unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user