diff --git a/runtime/gdev/tests/common/golden_testing/assert.rs b/runtime/gdev/tests/common/golden_testing/assert.rs index 837c956ad81b593825e56035ea7cd49695dce8a2..f6321be21510bff7a2395f7def5283fb2dab0269 100644 --- a/runtime/gdev/tests/common/golden_testing/assert.rs +++ b/runtime/gdev/tests/common/golden_testing/assert.rs @@ -22,7 +22,6 @@ pub fn compare_with_storage(tested: &Vec<Box<dyn StorageCheck>>) { // // Text comparison prefered // expect.push_str(t.to_golden_with_expected().0.as_str()); // } - let name = t.to_dotted_form(); if let Some(kvs) = t.expected_as_map_vector() { // Map comparison expect.push_str(format!("{} = [\n", t.to_dotted_form()).as_str()); diff --git a/runtime/gdev/tests/common/golden_testing/iterative.rs b/runtime/gdev/tests/common/golden_testing/iterative.rs index 93b650c489f7bf5ebc9ef478f13aec0c8c02f81d..d6ff6490f8c3d96c511ea0822f8e167bc863c5f3 100644 --- a/runtime/gdev/tests/common/golden_testing/iterative.rs +++ b/runtime/gdev/tests/common/golden_testing/iterative.rs @@ -424,7 +424,7 @@ fn expect_storage( if let StorageEntryType::Map { .. } = se.metadata.clone().ty { if let Ok(key) = Key::try_from(e.clone()) { // Specific - let mut c = key.to_check(); + let c = key.to_check(); tested.push(c); } else { // panic!("{}{} must implement TryFrom", se.pallet_name.as_str(), se.storage_name.as_str()); diff --git a/runtime/gdev/tests/common/golden_testing/key.rs b/runtime/gdev/tests/common/golden_testing/key.rs index f165f13499a82bec04b250a40e4deaeccba0a897..79c1e81ccb5b6c989582e50a819054ce9081791a 100644 --- a/runtime/gdev/tests/common/golden_testing/key.rs +++ b/runtime/gdev/tests/common/golden_testing/key.rs @@ -354,7 +354,7 @@ impl Key { Key::AccountPendingNewAccounts => eq(k, (), v_str, kv, ekv), Key::SchedulerAgenda => eq(k, (), v_str, kv, ekv), Key::SchedulerLookup(v) => eq(k, v, v_str, kv, ekv), - Key::BabeUnderConstruction(v) => eq(k, (), v_str, kv, ekv), + Key::BabeUnderConstruction(v) => eq(k, v, v_str, kv, ekv), Key::BalancesAccount => eq(k, (), v_str, kv, ekv), Key::BalancesLocks => eq(k, (), v_str, kv, ekv), Key::BalancesReserves => eq(k, (), v_str, kv, ekv), @@ -935,7 +935,6 @@ impl Key { .collect(), ) }), - Key::MultisigMultisigs => None, Key::ProvideRandomnessRequestsReadyAtEpoch => Some(|| { to_kv(pallet_provide_randomness::RequestsReadyAtEpoch::<Runtime>::iter().collect()) }), diff --git a/runtime/gdev/tests/integration_tests.rs b/runtime/gdev/tests/integration_tests.rs index 5be251ce9b44a29512092dbb438618e1810378b1..563c38c8edb43d9d8be85e212ce2bf57775a99a8 100644 --- a/runtime/gdev/tests/integration_tests.rs +++ b/runtime/gdev/tests/integration_tests.rs @@ -19,6 +19,10 @@ extern crate core; use frame_support::traits::{Get, PalletInfo, StorageInfo, StorageInfoTrait}; use frame_support::{assert_noop, assert_ok}; use frame_support::{StorageHasher, Twox128}; +use maplit::btreemap; +use pallet_identity::{IdtyStatus, IdtyValue}; +use pallet_universal_dividend::FirstEligibleUd; +use sp_core::sr25519; use sp_keyring::AccountKeyring; use sp_runtime::MultiAddress; @@ -26,6 +30,7 @@ use common::*; use gdev_runtime::*; use crate::common::golden_testing::iterative::StorageIterativeChecker; +use crate::common::golden_testing::key::Key; mod common; @@ -41,103 +46,135 @@ fn values_storage_with_run_to_block() { externalities.execute_with(|| { run_to_block(2); storage_checker.test_storage(128); - // run_to_block(3); - // storage_checker.change_expected(Box::new(|| Key::SystemNumber(3))); - // storage_checker.test_storage(128); - // - // // alice create identity for Eve - // assert_ok!(Identity::create_identity( - // frame_system::RawOrigin::Signed(AccountKeyring::Alice.to_account_id()).into(), - // AccountKeyring::Eve.to_account_id(), - // )); - // run_to_block(4); - // - // // Creating an identity changes the following fields - // storage_checker.change_expected(Box::new(|| Key::SystemNumber(4))); // +1 - // storage_checker.change_expected(Box::new(|| Key::IdentityCounterForIdentities(5))); // +1 - // storage_checker.change_expected(Box::new(|| Key::IdentityNextIdtyIndex(6))); // +1 - // storage_checker.change_expected(Box::new(|| { - // Key::IdentityIdentities(btreemap!( - // 1 => IdtyValue { - // data: IdtyData { - // first_eligible_ud: FirstEligibleUd::from(1), - // }, - // next_creatable_identity_on: 53, // Changed - // old_owner_key: None, - // owner_key: get_account_id_from_seed::<sr25519::Public>("Alice"), - // removable_on: 0, - // status: IdtyStatus::Validated, - // }, - // // New identity! - // 5 => IdtyValue { - // data: IdtyData { - // first_eligible_ud: FirstEligibleUd(None), - // }, - // next_creatable_identity_on: 0, - // old_owner_key: None, - // owner_key: get_account_id_from_seed::<sr25519::Public>("Eve"), - // removable_on: 43, // Removable because not validated - // status: IdtyStatus::Created, - // } - // )) - // })); - // // Adds e659a7a1628cdd93febc04a4e0646ea20e9f5f0ce097d9a05290d4a9e054df4e in System.Account - // storage_checker.change_expected(Box::new(|| Key::_ManualKey("System".to_string(), "Account".to_string(), "[ - // 306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20 (5DAAnrj7...) = AccountInfo { nonce: 0, consumers: 0, providers: 0, sufficients: 1, data: AccountData { random_id: Some(0x0303030303030303030303030303030303030303030303030303030303030303), free: 0, reserved: 0, fee_frozen: 0 } } - // 6d6f646c70792f74727372790000000000000000000000000000000000000000 (5EYCAe5i...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 0, data: AccountData { random_id: None, free: 200, reserved: 0, fee_frozen: 0 } } - // 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 1, data: AccountData { random_id: Some(0x0101010101010101010101010101010101010101010101010101010101010101), free: 0, reserved: 0, fee_frozen: 0 } } - // 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 1, data: AccountData { random_id: Some(0x0202020202020202020202020202020202020202020202020202020202020202), free: 0, reserved: 0, fee_frozen: 0 } } - // d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 1, data: AccountData { random_id: Some(0x0000000000000000000000000000000000000000000000000000000000000000), free: 0, reserved: 0, fee_frozen: 0 } } - // e659a7a1628cdd93febc04a4e0646ea20e9f5f0ce097d9a05290d4a9e054df4e (5HGjWAeF...) = AccountInfo { nonce: 0, consumers: 0, providers: 0, sufficients: 1, data: AccountData { random_id: None, free: 0, reserved: 0, fee_frozen: 0 } } - // ]".to_string()))); - // storage_checker.test_storage(128); - // - // // eve confirms her identity - // assert_ok!(Identity::confirm_identity( - // frame_system::RawOrigin::Signed(AccountKeyring::Eve.to_account_id()).into(), - // "Eeeeeveeeee".into(), - // )); - // - // run_to_block(5); - // - // // Creating an identity changes the following fields - // storage_checker.change_expected(Box::new(|| Key::SystemNumber(5))); // +1 - // storage_checker.change_expected(Box::new(|| Key::IdentityCounterForIdentities(5))); // +1 - // storage_checker.change_expected(Box::new(|| Key::IdentityNextIdtyIndex(6))); // +1 - // storage_checker.change_expected(Box::new(|| { - // Key::IdentityIdentitiesNames(btreemap!( - // "Alice".into() => (), - // "Bob".into() => (), - // "Charlie".into() => (), - // "Dave".into() => (), - // "Eeeeeveeeee".into() => () - // )) - // })); - // storage_checker.change_expected(Box::new(|| { - // Key::IdentityIdentities(btreemap!( - // 1 => IdtyValue { - // data: IdtyData { - // first_eligible_ud: FirstEligibleUd::from(1), - // }, - // next_creatable_identity_on: 53, - // old_owner_key: None, - // owner_key: get_account_id_from_seed::<sr25519::Public>("Alice"), - // removable_on: 0, - // status: IdtyStatus::Validated, - // }, - // 5 => IdtyValue { - // data: IdtyData { - // first_eligible_ud: FirstEligibleUd(None), - // }, - // next_creatable_identity_on: 0, - // old_owner_key: None, - // owner_key: get_account_id_from_seed::<sr25519::Public>("Eve"), - // removable_on: 43, - // status: IdtyStatus::ConfirmedByOwner, // <-- changed - // } - // )) - // })); - // storage_checker.test_storage(128); + run_to_block(3); + storage_checker.change_expected(Box::new(|| Key::SystemNumber(3))); + storage_checker.test_storage(128); + + // alice create identity for Eve + assert_ok!(Identity::create_identity( + frame_system::RawOrigin::Signed(AccountKeyring::Alice.to_account_id()).into(), + AccountKeyring::Eve.to_account_id(), + )); + run_to_block(4); + + // Creating an identity changes the following fields + storage_checker.change_expected(Box::new(|| Key::SystemNumber(4))); // +1 + storage_checker.change_expected(Box::new(|| Key::IdentityCounterForIdentities(5))); // +1 + storage_checker.change_expected(Box::new(|| Key::IdentityNextIdtyIndex(6))); // +1 + storage_checker.change_expected(Box::new(|| { + Key::IdentityIdentities(btreemap!( + 1 => IdtyValue { + data: IdtyData { + first_eligible_ud: FirstEligibleUd::from(1), + }, + next_creatable_identity_on: 53, // Changed + old_owner_key: None, + owner_key: get_account_id_from_seed::<sr25519::Public>("Alice"), + removable_on: 0, + status: IdtyStatus::Validated, + }, + // New identity! + 5 => IdtyValue { + data: IdtyData { + first_eligible_ud: FirstEligibleUd(None), + }, + next_creatable_identity_on: 0, + old_owner_key: None, + owner_key: get_account_id_from_seed::<sr25519::Public>("Eve"), + removable_on: 43, // Removable because not validated + status: IdtyStatus::Created, + } + )) + })); + // Adds e659a7a1628cdd93febc04a4e0646ea20e9f5f0ce097d9a05290d4a9e054df4e in System.Account + storage_checker.change_expected(Box::new(|| Key::_ManualKey("System".to_string(), "Account".to_string(), "[ + 306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20 (5DAAnrj7...) = AccountInfo { nonce: 0, consumers: 0, providers: 0, sufficients: 1, data: AccountData { random_id: Some(0x0303030303030303030303030303030303030303030303030303030303030303), free: 0, reserved: 0, fee_frozen: 0 } } + 6d6f646c70792f74727372790000000000000000000000000000000000000000 (5EYCAe5i...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 0, data: AccountData { random_id: None, free: 200, reserved: 0, fee_frozen: 0 } } + 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 1, data: AccountData { random_id: Some(0x0101010101010101010101010101010101010101010101010101010101010101), free: 0, reserved: 0, fee_frozen: 0 } } + 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 1, data: AccountData { random_id: Some(0x0202020202020202020202020202020202020202020202020202020202020202), free: 0, reserved: 0, fee_frozen: 0 } } + d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 1, data: AccountData { random_id: Some(0x0000000000000000000000000000000000000000000000000000000000000000), free: 0, reserved: 0, fee_frozen: 0 } } + e659a7a1628cdd93febc04a4e0646ea20e9f5f0ce097d9a05290d4a9e054df4e (5HGjWAeF...) = AccountInfo { nonce: 0, consumers: 0, providers: 0, sufficients: 1, data: AccountData { random_id: None, free: 0, reserved: 0, fee_frozen: 0 } } +]".to_string()))); + storage_checker.change_expected(Box::new(|| Key::_ManualKey("Cert".to_string(), "StorageIdtyCertMeta".to_string(), "[ + 1 = IdtyCertMeta { issued_count: 4, next_issuable_on: 18, received_count: 3 } + 2 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 } + 3 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 } + 4 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 } + 5 = IdtyCertMeta { issued_count: 0, next_issuable_on: 0, received_count: 1 } +]".to_string()))); + storage_checker.change_expected(Box::new(|| Key::_ManualKey("Cert".to_string(), "CertsByReceiver".to_string(), "[ + 1 = [(2, 10000), (3, 10000), (4, 10000)] + 2 = [(1, 10000), (3, 10000), (4, 10000)] + 3 = [(1, 10000), (2, 10000), (4, 10000)] + 4 = [(1, 10000), (2, 10000), (3, 10000)] + 5 = [(1, 10003)] +]".to_string()))); + storage_checker.change_expected(Box::new(|| Key::_ManualKey("Identity".to_string(), "IdentityIndexOf".to_string(), "[ + 306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20 (5DAAnrj7...) = 4 + 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...) = 2 + 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...) = 3 + d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...) = 1 + e659a7a1628cdd93febc04a4e0646ea20e9f5f0ce097d9a05290d4a9e054df4e (5HGjWAeF...) = 5 +]".to_string()))); + storage_checker.change_expected(Box::new(|| Key::_ManualKey("Cert".to_string(), "StorageCertsRemovableOn".to_string(), "[ + 10000 = [(2, 1), (3, 1), (4, 1), (1, 2), (3, 2), (4, 2), (1, 3), (2, 3), (4, 3), (1, 4), (2, 4), (3, 4)] + 10003 = [(1, 5)] +]".to_string()))); + storage_checker.change_expected(Box::new(|| Key::_ManualKey("Identity".to_string(), "IdentitiesRemovableOn".to_string(), "[ + 43 = [(5, IdtyStatus::Created)] +]".to_string()))); + storage_checker.test_storage(128); + + // eve confirms her identity + assert_ok!(Identity::confirm_identity( + frame_system::RawOrigin::Signed(AccountKeyring::Eve.to_account_id()).into(), + "Eeeeeveeeee".into(), + )); + + run_to_block(5); + + // Creating an identity changes the following fields + storage_checker.change_expected(Box::new(|| Key::SystemNumber(5))); // +1 + storage_checker.change_expected(Box::new(|| Key::IdentityCounterForIdentities(5))); // +1 + storage_checker.change_expected(Box::new(|| Key::IdentityNextIdtyIndex(6))); // +1 + storage_checker.change_expected(Box::new(|| { + Key::IdentityIdentities(btreemap!( + 1 => IdtyValue { + data: IdtyData { + first_eligible_ud: FirstEligibleUd::from(1), + }, + next_creatable_identity_on: 53, + old_owner_key: None, + owner_key: get_account_id_from_seed::<sr25519::Public>("Alice"), + removable_on: 0, + status: IdtyStatus::Validated, + }, + 5 => IdtyValue { + data: IdtyData { + first_eligible_ud: FirstEligibleUd(None), + }, + next_creatable_identity_on: 0, + old_owner_key: None, + owner_key: get_account_id_from_seed::<sr25519::Public>("Eve"), + removable_on: 43, + status: IdtyStatus::ConfirmedByOwner, // <-- changed + } + )) + })); + storage_checker.change_expected(Box::new(|| Key::_ManualKey("Membership".to_string(), "PendingMembershipsExpireOn".to_string(), "[ + 504 = [5] +]".to_string()))); + storage_checker.change_expected(Box::new(|| Key::_ManualKey("Membership".to_string(), "PendingMembership".to_string(), "[ + 5 = () +]".to_string()))); + storage_checker.change_expected(Box::new(|| Key::_ManualKey("Identity".to_string(), "IdentitiesNames".to_string(), "[ + \"Alice\" = () + \"Bob\" = () + \"Charlie\" = () + \"Dave\" = () + \"Eeeeeveeeee\" = () +]".to_string()))); + storage_checker.test_storage(128); }); storage_checker.test_well_known_keys(&mut externalities); }