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

fix(#125): feat: inactive members must included in b#0 and expire at b#2

parent a0e02288
No related branches found
No related tags found
No related merge requests found
Pipeline #33715 failed
......@@ -365,10 +365,9 @@ fn genesis_data_to_gdev_genesis_conf(
next_creatable_identity_on: 0,
old_owner_key: old_owner_key.map(|address| (address, 0)),
owner_key,
removable_on: 0,
removable_on: if active { 0 } else { 2 },
status: IdtyStatus::Validated,
},
active,
},
)
.collect(),
......
......@@ -311,10 +311,9 @@ fn genesis_data_to_gtest_genesis_conf(
next_creatable_identity_on: 0,
old_owner_key: old_owner_key.clone().map(|address| (address, 0)),
owner_key,
removable_on: 0,
removable_on: if active { 0 } else { 2 },
status: IdtyStatus::Validated,
},
active,
},
)
.collect(),
......
......@@ -259,7 +259,6 @@ pub fn new_test_ext(
removable_on: 0,
status: pallet_identity::IdtyStatus::Validated,
},
active: true,
})
.collect(),
}
......
......@@ -125,7 +125,6 @@ pub mod pallet {
pub index: T::IdtyIndex,
pub name: IdtyName,
pub value: IdtyValue<T::BlockNumber, T::AccountId, T::IdtyData>,
pub active: bool,
}
#[pallet::genesis_config]
......@@ -152,7 +151,6 @@ pub mod pallet {
"Idty name {:?} is present twice",
&idty.name
);
assert!(idty.value.removable_on == T::BlockNumber::zero());
names.insert(idty.name.clone());
}
......@@ -171,12 +169,13 @@ pub mod pallet {
(idty_index, idty.value.status),
)
}
if idty.active {
<Identities<T>>::insert(idty_index, idty.value.clone());
IdentityIndexOf::<T>::insert(idty.value.owner_key, idty_index);
}
// Anyway, the pseudonym is kept reserved so we can map it with a user ID (idty_index)
<Identities<T>>::insert(idty_index, idty.value.clone());
IdentitiesNames::<T>::insert(idty.name.clone(), idty_index);
IdentityIndexOf::<T>::insert(&idty.value.owner_key, idty_index);
frame_system::Pallet::<T>::inc_sufficients(&idty.value.owner_key);
if let Some((old_owner_key, _last_change)) = idty.value.old_owner_key {
frame_system::Pallet::<T>::inc_sufficients(&old_owner_key);
}
}
}
}
......
......@@ -16,8 +16,8 @@
use crate::mock::*;
use crate::{
Error, GenesisIdty, IdtyName, IdtyValue, NewOwnerKeyPayload, RevocationPayload,
NEW_OWNER_KEY_PAYLOAD_PREFIX, REVOCATION_PAYLOAD_PREFIX,
pallet, Error, GenesisIdty, IdtyName, IdtyRemovalReason, IdtyValue, NewOwnerKeyPayload,
RevocationPayload, NEW_OWNER_KEY_PAYLOAD_PREFIX, REVOCATION_PAYLOAD_PREFIX,
};
use codec::Encode;
use frame_support::{assert_noop, assert_ok};
......@@ -59,7 +59,6 @@ fn alice() -> GenesisIdty<Test> {
removable_on: 0,
status: crate::IdtyStatus::Validated,
},
active: true,
}
}
......@@ -75,7 +74,21 @@ fn bob() -> GenesisIdty<Test> {
removable_on: 0,
status: crate::IdtyStatus::Validated,
},
active: true,
}
}
fn inactive_bob() -> GenesisIdty<Test> {
GenesisIdty {
index: 2,
name: IdtyName::from("Bob"),
value: IdtyVal {
data: (),
next_creatable_identity_on: 0,
old_owner_key: None,
owner_key: account(2).id,
removable_on: 2,
status: crate::IdtyStatus::Validated,
},
}
}
......@@ -532,3 +545,32 @@ fn test_idty_revocation() {
);
});
}
#[test]
fn test_inactive_genesis_members() {
new_test_ext(IdentityConfig {
identities: vec![alice(), inactive_bob()],
})
.execute_with(|| {
let alice = alice();
let bob = inactive_bob();
assert!(pallet::Identities::<Test>::get(alice.index).is_some());
assert!(pallet::Identities::<Test>::get(bob.index).is_some());
assert!(pallet::IdentityIndexOf::<Test>::get(&alice.value.owner_key).is_some());
assert!(pallet::IdentityIndexOf::<Test>::get(&bob.value.owner_key).is_some());
run_to_block(2);
// alice identity remains untouched
assert!(pallet::Identities::<Test>::get(alice.index).is_some());
assert!(pallet::IdentityIndexOf::<Test>::get(&alice.value.owner_key).is_some());
// but bob identity has been removed
assert!(pallet::Identities::<Test>::get(bob.index).is_none());
assert!(pallet::IdentityIndexOf::<Test>::get(&bob.value.owner_key).is_none());
System::assert_has_event(RuntimeEvent::Identity(crate::Event::IdtyRemoved {
idty_index: bob.index,
reason: IdtyRemovalReason::Expired,
}));
});
}
......@@ -212,7 +212,6 @@ impl ExtBuilder {
removable_on: 0,
status: IdtyStatus::Validated,
},
active: true,
})
.collect(),
}
......
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