Skip to content
Snippets Groups Projects
Commit 3283b0fa authored by Cédric Moreau's avatar Cédric Moreau
Browse files

feat(smith-members): check IsWoTMember

parent cb9631d1
No related branches found
No related tags found
No related merge requests found
Pipeline #34951 passed
......@@ -33,6 +33,7 @@ use frame_support::{ensure, RuntimeDebug};
use frame_system::ensure_signed;
use frame_system::pallet_prelude::OriginFor;
use sp_runtime::traits::AtLeast32BitUnsigned;
use sp_runtime::traits::IsMember;
use sp_std::fmt::Debug;
use sp_std::prelude::*;
......@@ -235,6 +236,8 @@ pub mod pallet {
InvitationAlreadyAccepted,
/// Invitation of an already known smith is forbidden except if it has been excluded
InvitationOfNonExcluded,
/// Invitation of a non-member (of the WoT) is forbidden
InvitationOfNonMember,
/// Certification cannot be made on someone who has not accepted an invitation
CertificationMustBeAgreed,
/// Certification cannot be made on excluded
......@@ -310,6 +313,10 @@ impl<T: Config> Pallet<T> {
Error::<T>::InvitationOfNonExcluded
);
}
ensure!(
T::IsWoTMember::is_member(&receiver),
Error::<T>::InvitationOfNonMember
);
Ok(().into())
}
......
......@@ -80,7 +80,7 @@ impl frame_system::Config for Runtime {
pub struct EveryoneExceptIdZero;
impl IsMember<u64> for EveryoneExceptIdZero {
fn is_member(member_id: &u64) -> bool {
member_id != &0
member_id != &0 && member_id != &10
}
}
......
......@@ -464,3 +464,25 @@ fn certifying_on_different_status() {
);
});
}
#[test]
fn invitation_on_non_wot_member() {
new_test_ext(GenesisConfig {
certs_by_receiver: btreemap![
1 => vec![2, 3, 4],
2 => vec![3, 4],
3 => vec![1, 2],
4 => vec![],
],
})
.execute_with(|| {
// State before
assert_eq!(Smiths::<Runtime>::get(10), None);
// After invitation
assert_err!(
Pallet::<Runtime>::invite_smith(RuntimeOrigin::signed(1), 10),
Error::<Runtime>::InvitationOfNonMember
);
});
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment