Skip to content
Snippets Groups Projects
Unverified Commit 9b96c3f2 authored by bgallois's avatar bgallois
Browse files

refactor acquisition and renewal pallet-membership

parent 5153f5c0
No related branches found
No related tags found
No related merge requests found
...@@ -337,7 +337,7 @@ where ...@@ -337,7 +337,7 @@ where
} }
sp_membership::Event::<IdtyIndex>::MembershipTerminated(_) => {} sp_membership::Event::<IdtyIndex>::MembershipTerminated(_) => {}
sp_membership::Event::<IdtyIndex>::MembershipRenewed(_) => {} sp_membership::Event::<IdtyIndex>::MembershipRenewed(_) => {}
sp_membership::Event::<IdtyIndex>::MembershipRequested(_) => {} sp_membership::Event::<IdtyIndex>::PendingMembershipAdded(_) => {}
sp_membership::Event::<IdtyIndex>::PendingMembershipExpired(idty_index) => { sp_membership::Event::<IdtyIndex>::PendingMembershipExpired(idty_index) => {
Self::dispatch_idty_call(pallet_identity::Call::force_remove_identity { Self::dispatch_idty_call(pallet_identity::Call::force_remove_identity {
idty_index: *idty_index, idty_index: *idty_index,
......
...@@ -84,7 +84,12 @@ fn test_join_smiths() { ...@@ -84,7 +84,12 @@ fn test_join_smiths() {
4 4
),)); ),));
System::assert_has_event(RuntimeEvent::SmithMembership( System::assert_has_event(RuntimeEvent::SmithMembership(
pallet_membership::Event::MembershipRequested { member: 4 }, pallet_membership::Event::PendingMembershipAdded {
member: 4,
expire_on: 2
+ <Test as pallet_membership::Config<Instance2>>::PendingMembershipPeriod::get(
),
},
)); ));
// Then, Alice should be able to send a smith cert to Dave // Then, Alice should be able to send a smith cert to Dave
...@@ -99,7 +104,11 @@ fn test_join_smiths() { ...@@ -99,7 +104,11 @@ fn test_join_smiths() {
run_to_block(4); run_to_block(4);
assert_ok!(SmithMembership::claim_membership(RuntimeOrigin::signed(4),)); assert_ok!(SmithMembership::claim_membership(RuntimeOrigin::signed(4),));
System::assert_has_event(RuntimeEvent::SmithMembership( System::assert_has_event(RuntimeEvent::SmithMembership(
pallet_membership::Event::MembershipAcquired { member: 4 }, pallet_membership::Event::MembershipAcquired {
member: 4,
expire_on: 4
+ <Test as pallet_membership::Config<Instance2>>::MembershipPeriod::get(),
},
)); ));
}); });
} }
...@@ -230,7 +239,11 @@ fn test_new_idty_validation() { ...@@ -230,7 +239,11 @@ fn test_new_idty_validation() {
run_to_block(5); run_to_block(5);
assert_ok!(Identity::validate_identity(RuntimeOrigin::signed(42), 6)); assert_ok!(Identity::validate_identity(RuntimeOrigin::signed(42), 6));
System::assert_has_event(RuntimeEvent::Membership( System::assert_has_event(RuntimeEvent::Membership(
pallet_membership::Event::MembershipAcquired { member: 6 }, pallet_membership::Event::MembershipAcquired {
member: 6,
expire_on: 5
+ <Test as pallet_membership::Config<Instance1>>::MembershipPeriod::get(),
},
)); ));
System::assert_has_event(RuntimeEvent::Identity( System::assert_has_event(RuntimeEvent::Identity(
pallet_identity::Event::IdtyValidated { idty_index: 6 }, pallet_identity::Event::IdtyValidated { idty_index: 6 },
...@@ -269,7 +282,12 @@ fn test_confirm_idty_ok() { ...@@ -269,7 +282,12 @@ fn test_confirm_idty_ok() {
IdtyName::from("Ferdie"), IdtyName::from("Ferdie"),
)); ));
System::assert_has_event(RuntimeEvent::Membership( System::assert_has_event(RuntimeEvent::Membership(
pallet_membership::Event::MembershipRequested { member: 6 }, pallet_membership::Event::PendingMembershipAdded {
member: 6,
expire_on: 3
+ <Test as pallet_membership::Config<Instance1>>::PendingMembershipPeriod::get(
),
},
)); ));
System::assert_has_event(RuntimeEvent::Identity( System::assert_has_event(RuntimeEvent::Identity(
pallet_identity::Event::IdtyConfirmed { pallet_identity::Event::IdtyConfirmed {
......
...@@ -22,7 +22,7 @@ use frame_benchmarking::benchmarks_instance_pallet; ...@@ -22,7 +22,7 @@ use frame_benchmarking::benchmarks_instance_pallet;
use frame_support::dispatch::UnfilteredDispatchable; use frame_support::dispatch::UnfilteredDispatchable;
use frame_system::pallet_prelude::BlockNumberFor; use frame_system::pallet_prelude::BlockNumberFor;
use frame_system::RawOrigin; use frame_system::RawOrigin;
use sp_runtime::traits::Convert; use sp_runtime::traits::{Convert, One};
#[cfg(test)] #[cfg(test)]
use maplit::btreemap; use maplit::btreemap;
...@@ -53,7 +53,7 @@ benchmarks_instance_pallet! { ...@@ -53,7 +53,7 @@ benchmarks_instance_pallet! {
} }
verify { verify {
if T::CheckMembershipCallAllowed::check_idty_allowed_to_request_membership(&idty).is_ok() { if T::CheckMembershipCallAllowed::check_idty_allowed_to_request_membership(&idty).is_ok() {
assert_has_event::<T, I>(Event::<T, I>::MembershipRequested{member: idty}.into()); assert_has_event::<T, I>(Event::<T, I>::PendingMembershipAdded{member: idty, expire_on: BlockNumberFor::<T>::one() + T::PendingMembershipPeriod::get()}.into());
} }
} }
claim_membership { claim_membership {
...@@ -65,7 +65,7 @@ benchmarks_instance_pallet! { ...@@ -65,7 +65,7 @@ benchmarks_instance_pallet! {
T::BenchmarkSetupHandler::force_status_ok(&idty, &caller); T::BenchmarkSetupHandler::force_status_ok(&idty, &caller);
}: _<T::RuntimeOrigin>(caller_origin) }: _<T::RuntimeOrigin>(caller_origin)
verify { verify {
assert_has_event::<T, I>(Event::<T, I>::MembershipAcquired{member: idty}.into()); assert_has_event::<T, I>(Event::<T, I>::MembershipAcquired{member: idty, expire_on: BlockNumberFor::<T>::one() + T::MembershipPeriod::get()}.into());
} }
renew_membership { renew_membership {
let idty: T::IdtyId = 3.into(); let idty: T::IdtyId = 3.into();
...@@ -74,7 +74,7 @@ benchmarks_instance_pallet! { ...@@ -74,7 +74,7 @@ benchmarks_instance_pallet! {
T::BenchmarkSetupHandler::force_status_ok(&idty, &caller); T::BenchmarkSetupHandler::force_status_ok(&idty, &caller);
}: _<T::RuntimeOrigin>(caller_origin) }: _<T::RuntimeOrigin>(caller_origin)
verify { verify {
assert_has_event::<T, I>(Event::<T, I>::MembershipRenewed{member: idty}.into()); assert_has_event::<T, I>(Event::<T, I>::MembershipAcquired{member: idty, expire_on: BlockNumberFor::<T>::one() + T::MembershipPeriod::get()}.into());
} }
revoke_membership { revoke_membership {
let idty: T::IdtyId = 3.into(); let idty: T::IdtyId = 3.into();
......
...@@ -162,16 +162,20 @@ pub mod pallet { ...@@ -162,16 +162,20 @@ pub mod pallet {
#[pallet::generate_deposit(pub(super) fn deposit_event)] #[pallet::generate_deposit(pub(super) fn deposit_event)]
pub enum Event<T: Config<I>, I: 'static = ()> { pub enum Event<T: Config<I>, I: 'static = ()> {
/// A membership was acquired. /// A membership was acquired.
MembershipAcquired { member: T::IdtyId }, MembershipAcquired {
member: T::IdtyId,
expire_on: BlockNumberFor<T>,
},
/// A membership was terminated. /// A membership was terminated.
MembershipTerminated { MembershipTerminated {
member: T::IdtyId, member: T::IdtyId,
reason: MembershipTerminationReason, reason: MembershipTerminationReason,
}, },
/// A membership was renewed. /// A pending membership was added.
MembershipRenewed { member: T::IdtyId }, PendingMembershipAdded {
/// A membership was requested. member: T::IdtyId,
MembershipRequested { member: T::IdtyId }, expire_on: BlockNumberFor<T>,
},
/// A pending membership request has expired. /// A pending membership request has expired.
PendingMembershipExpired { member: T::IdtyId }, PendingMembershipExpired { member: T::IdtyId },
} }
...@@ -255,7 +259,6 @@ pub mod pallet { ...@@ -255,7 +259,6 @@ pub mod pallet {
// apply phase // apply phase
Self::unschedule_membership_expiry(idty_id, membership_data.expire_on); Self::unschedule_membership_expiry(idty_id, membership_data.expire_on);
Self::insert_membership_and_schedule_expiry(idty_id); Self::insert_membership_and_schedule_expiry(idty_id);
Self::deposit_event(Event::MembershipRenewed { member: idty_id });
T::OnEvent::on_event(&sp_membership::Event::MembershipRenewed(idty_id)); T::OnEvent::on_event(&sp_membership::Event::MembershipRenewed(idty_id));
Ok(().into()) Ok(().into())
...@@ -322,6 +325,10 @@ pub mod pallet { ...@@ -322,6 +325,10 @@ pub mod pallet {
Membership::<T, I>::insert(idty_id, MembershipData { expire_on }); Membership::<T, I>::insert(idty_id, MembershipData { expire_on });
MembershipsExpireOn::<T, I>::append(expire_on, idty_id); MembershipsExpireOn::<T, I>::append(expire_on, idty_id);
Self::deposit_event(Event::MembershipAcquired {
member: idty_id,
expire_on,
});
} }
/// perform the membership request /// perform the membership request
...@@ -340,8 +347,11 @@ pub mod pallet { ...@@ -340,8 +347,11 @@ pub mod pallet {
// apply membership request // apply membership request
PendingMembership::<T, I>::insert(idty_id, ()); PendingMembership::<T, I>::insert(idty_id, ());
PendingMembershipsExpireOn::<T, I>::append(expire_on, idty_id); PendingMembershipsExpireOn::<T, I>::append(expire_on, idty_id);
Self::deposit_event(Event::MembershipRequested { member: idty_id }); Self::deposit_event(Event::PendingMembershipAdded {
T::OnEvent::on_event(&sp_membership::Event::MembershipRequested(idty_id)); member: idty_id,
expire_on,
});
T::OnEvent::on_event(&sp_membership::Event::PendingMembershipAdded(idty_id));
Ok(().into()) Ok(().into())
} }
...@@ -359,7 +369,6 @@ pub mod pallet { ...@@ -359,7 +369,6 @@ pub mod pallet {
fn do_claim_membership(idty_id: T::IdtyId) { fn do_claim_membership(idty_id: T::IdtyId) {
if PendingMembership::<T, I>::take(idty_id).is_some() { if PendingMembership::<T, I>::take(idty_id).is_some() {
Self::insert_membership_and_schedule_expiry(idty_id); Self::insert_membership_and_schedule_expiry(idty_id);
Self::deposit_event(Event::MembershipAcquired { member: idty_id });
T::OnEvent::on_event(&sp_membership::Event::MembershipAcquired(idty_id)); T::OnEvent::on_event(&sp_membership::Event::MembershipAcquired(idty_id));
} }
// else { unreachable if check_allowed_to_claim called before } // else { unreachable if check_allowed_to_claim called before }
......
...@@ -108,8 +108,9 @@ fn test_membership_renewal() { ...@@ -108,8 +108,9 @@ fn test_membership_renewal() {
assert_ok!(DefaultMembership::renew_membership(RuntimeOrigin::signed( assert_ok!(DefaultMembership::renew_membership(RuntimeOrigin::signed(
0 0
),)); ),));
System::assert_has_event(RtEvent::DefaultMembership(Event::MembershipRenewed { System::assert_has_event(RtEvent::DefaultMembership(Event::MembershipAcquired {
member: 0, member: 0,
expire_on: 2 + <Test as crate::Config>::MembershipPeriod::get(),
})); }));
// membership should not expire at block 3 to 6 because it has been renewed // membership should not expire at block 3 to 6 because it has been renewed
run_to_block(3); run_to_block(3);
...@@ -161,8 +162,9 @@ fn test_membership_revocation() { ...@@ -161,8 +162,9 @@ fn test_membership_revocation() {
assert_ok!(DefaultMembership::request_membership( assert_ok!(DefaultMembership::request_membership(
RuntimeOrigin::signed(0), RuntimeOrigin::signed(0),
)); ));
System::assert_has_event(RtEvent::DefaultMembership(Event::MembershipRequested { System::assert_has_event(RtEvent::DefaultMembership(Event::PendingMembershipAdded {
member: 0, member: 0,
expire_on: 5 + <Test as crate::Config>::PendingMembershipPeriod::get(),
})); }));
}); });
} }
...@@ -176,8 +178,9 @@ fn test_pending_membership_expiration() { ...@@ -176,8 +178,9 @@ fn test_pending_membership_expiration() {
assert_ok!(DefaultMembership::request_membership( assert_ok!(DefaultMembership::request_membership(
RuntimeOrigin::signed(0), RuntimeOrigin::signed(0),
)); ));
System::assert_has_event(RtEvent::DefaultMembership(Event::MembershipRequested { System::assert_has_event(RtEvent::DefaultMembership(Event::PendingMembershipAdded {
member: 0, member: 0,
expire_on: 1 + <Test as crate::Config>::PendingMembershipPeriod::get(),
})); }));
// Then, idty 0 shold still in pending memberships until PendingMembershipPeriod ended // Then, idty 0 shold still in pending memberships until PendingMembershipPeriod ended
...@@ -206,8 +209,9 @@ fn test_membership_workflow() { ...@@ -206,8 +209,9 @@ fn test_membership_workflow() {
assert_ok!(DefaultMembership::request_membership( assert_ok!(DefaultMembership::request_membership(
RuntimeOrigin::signed(0), RuntimeOrigin::signed(0),
)); ));
System::assert_has_event(RtEvent::DefaultMembership(Event::MembershipRequested { System::assert_has_event(RtEvent::DefaultMembership(Event::PendingMembershipAdded {
member: 0, member: 0,
expire_on: 1 + <Test as crate::Config>::PendingMembershipPeriod::get(),
})); }));
// - Then, idty 0 claim membership // - Then, idty 0 claim membership
...@@ -217,6 +221,7 @@ fn test_membership_workflow() { ...@@ -217,6 +221,7 @@ fn test_membership_workflow() {
),)); ),));
System::assert_has_event(RtEvent::DefaultMembership(Event::MembershipAcquired { System::assert_has_event(RtEvent::DefaultMembership(Event::MembershipAcquired {
member: 0, member: 0,
expire_on: 2 + <Test as crate::Config>::MembershipPeriod::get(),
})); }));
// - Then, idty 0 claim renewal, should success // - Then, idty 0 claim renewal, should success
......
...@@ -35,7 +35,7 @@ pub enum Event<IdtyId> { ...@@ -35,7 +35,7 @@ pub enum Event<IdtyId> {
/// A membership has renewed /// A membership has renewed
MembershipRenewed(IdtyId), MembershipRenewed(IdtyId),
/// An identity requested membership /// An identity requested membership
MembershipRequested(IdtyId), PendingMembershipAdded(IdtyId),
/// A pending membership request has expired /// A pending membership request has expired
PendingMembershipExpired(IdtyId), PendingMembershipExpired(IdtyId),
} }
......
...@@ -103,7 +103,7 @@ impl< ...@@ -103,7 +103,7 @@ impl<
} }
// in other case, ther is nothing to do // in other case, ther is nothing to do
sp_membership::Event::MembershipRenewed(_) sp_membership::Event::MembershipRenewed(_)
| sp_membership::Event::MembershipRequested(_) | sp_membership::Event::PendingMembershipAdded(_)
| sp_membership::Event::PendingMembershipExpired(_) => (), | sp_membership::Event::PendingMembershipExpired(_) => (),
}); });
Inner::on_event(membership_event) Inner::on_event(membership_event)
......
...@@ -370,7 +370,12 @@ fn test_validate_identity_when_claim() { ...@@ -370,7 +370,12 @@ fn test_validate_identity_when_claim() {
)); ));
System::assert_has_event(RuntimeEvent::Membership( System::assert_has_event(RuntimeEvent::Membership(
pallet_membership::Event::MembershipAcquired { member: 5 }, pallet_membership::Event::MembershipAcquired {
member: 5,
expire_on: 76
+ <Runtime as pallet_membership::Config<Instance1>>::MembershipPeriod::get(
),
},
)); ));
// ferdie can not validate eve identity because already validated // ferdie can not validate eve identity because already validated
...@@ -458,7 +463,12 @@ fn test_membership_renewal() { ...@@ -458,7 +463,12 @@ fn test_membership_renewal() {
frame_system::RawOrigin::Signed(AccountKeyring::Alice.to_account_id()).into(), frame_system::RawOrigin::Signed(AccountKeyring::Alice.to_account_id()).into(),
)); ));
System::assert_has_event(RuntimeEvent::Membership( System::assert_has_event(RuntimeEvent::Membership(
pallet_membership::Event::MembershipRenewed { member: 1 }, pallet_membership::Event::MembershipAcquired {
member: 1,
expire_on: 76
+ <Runtime as pallet_membership::Config<Instance1>>::MembershipPeriod::get(
),
},
)); ));
// renew at block 77 // renew at block 77
...@@ -467,7 +477,12 @@ fn test_membership_renewal() { ...@@ -467,7 +477,12 @@ fn test_membership_renewal() {
frame_system::RawOrigin::Signed(AccountKeyring::Alice.to_account_id()).into(), frame_system::RawOrigin::Signed(AccountKeyring::Alice.to_account_id()).into(),
)); ));
System::assert_has_event(RuntimeEvent::Membership( System::assert_has_event(RuntimeEvent::Membership(
pallet_membership::Event::MembershipRenewed { member: 1 }, pallet_membership::Event::MembershipAcquired {
member: 1,
expire_on: 77
+ <Runtime as pallet_membership::Config<Instance1>>::MembershipPeriod::get(
),
},
)); ));
// should expire at block 177 = 77+100 // should expire at block 177 = 77+100
...@@ -611,7 +626,11 @@ fn test_ud_claimed_membership_on_and_off() { ...@@ -611,7 +626,11 @@ fn test_ud_claimed_membership_on_and_off() {
frame_system::RawOrigin::Signed(AccountKeyring::Alice.to_account_id()).into() frame_system::RawOrigin::Signed(AccountKeyring::Alice.to_account_id()).into()
)); ));
System::assert_has_event(RuntimeEvent::Membership( System::assert_has_event(RuntimeEvent::Membership(
pallet_membership::Event::MembershipAcquired { member: 1 }, pallet_membership::Event::MembershipAcquired {
member: 1,
expire_on: 14
+ <Runtime as pallet_membership::Config<Instance1>>::MembershipPeriod::get(),
},
)); ));
// UD number 3 // UD number 3
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment