diff --git a/runtime/gdev/tests/integration_tests.rs b/runtime/gdev/tests/integration_tests.rs index 34d3150dff821b7f137e74652c172a7d42c6bbee..82c1b846222c69c9496ae615e06b7ffa9113726d 100644 --- a/runtime/gdev/tests/integration_tests.rs +++ b/runtime/gdev/tests/integration_tests.rs @@ -1516,6 +1516,36 @@ fn test_link_account() { }) } +/// test change owner key +#[test] +fn test_change_owner_key_validator_keys_set() { + ExtBuilder::new(1, 3, 4).build().execute_with(|| { + let genesis_hash = System::block_hash(0); + let bob = AccountKeyring::Bob.to_account_id(); + let ferdie = AccountKeyring::Ferdie.to_account_id(); + let payload = (b"icok", genesis_hash, 2u32, bob.clone()).encode(); + let signature = AccountKeyring::Bob.sign(&payload); + + // Bob is not an online validator, but his identity/owner_key is already associated. + // He should not be able to change its owner_key. + assert_ok!(AuthorityMembers::set_session_keys( + RuntimeOrigin::signed(AccountKeyring::Bob.to_account_id()), + create_dummy_session_keys() + )); + assert!(!pallet_authority_members::OnlineAuthorities::<Runtime>::get().contains(&2)); + assert!(pallet_authority_members::Members::<Runtime>::get(2).is_some()); + + assert_noop!( + Identity::change_owner_key( + RuntimeOrigin::signed(bob.clone()), + ferdie.clone(), + signature.into() + ), + pallet_identity::Error::<gdev_runtime::Runtime>::OwnerKeyUsedAsValidator + ); + }) +} + /// test change owner key #[test] fn test_change_owner_key_validator_online() {