mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 17:31:05 +00:00
Deduplicate pallet call structs used for indirect runtime calls (#1744)
* Small changes * Define generic bridge pallets call structs * polkadot-core SignedExtension simplifications - we don't seem to need to pass the Call as a generic param - we can use codec(skip) instead of implementing Encode and Decode * Split BridgeHubRococo and BridgeHubWococo calls * code review fixes
This commit is contained in:
committed by
Bastian Köcher
parent
a21617082e
commit
63a538a9bb
@@ -612,6 +612,7 @@ mod tests {
|
||||
run_test, test_header, RuntimeOrigin, TestHeader, TestNumber, TestRuntime,
|
||||
MAX_BRIDGED_AUTHORITIES,
|
||||
};
|
||||
use bp_header_chain::BridgeGrandpaCall;
|
||||
use bp_runtime::BasicOperatingMode;
|
||||
use bp_test_utils::{
|
||||
authority_list, generate_owned_bridge_module_tests, make_default_justification,
|
||||
@@ -1160,5 +1161,33 @@ mod tests {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_bridge_grandpa_call_is_correctly_defined() {
|
||||
let header = test_header(0);
|
||||
let init_data = InitializationData {
|
||||
header: Box::new(header.clone()),
|
||||
authority_list: authority_list(),
|
||||
set_id: 1,
|
||||
operating_mode: BasicOperatingMode::Normal,
|
||||
};
|
||||
let justification = make_default_justification(&header);
|
||||
|
||||
let direct_initialize_call =
|
||||
Call::<TestRuntime>::initialize { init_data: init_data.clone() };
|
||||
let indirect_initialize_call = BridgeGrandpaCall::<TestHeader>::initialize(init_data);
|
||||
assert_eq!(direct_initialize_call.encode(), indirect_initialize_call.encode());
|
||||
|
||||
let direct_submit_finality_proof_call = Call::<TestRuntime>::submit_finality_proof {
|
||||
finality_target: Box::new(header.clone()),
|
||||
justification: justification.clone(),
|
||||
};
|
||||
let indirect_submit_finality_proof_call =
|
||||
BridgeGrandpaCall::<TestHeader>::submit_finality_proof(Box::new(header), justification);
|
||||
assert_eq!(
|
||||
direct_submit_finality_proof_call.encode(),
|
||||
indirect_submit_finality_proof_call.encode()
|
||||
);
|
||||
}
|
||||
|
||||
generate_owned_bridge_module_tests!(BasicOperatingMode::Normal, BasicOperatingMode::Halted);
|
||||
}
|
||||
|
||||
@@ -885,13 +885,13 @@ fn verify_and_decode_messages_proof<Chain: SourceHeaderChain, DispatchPayload: D
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::mock::{
|
||||
message, message_payload, run_test, unrewarded_relayer, DbWeight,
|
||||
message, message_payload, run_test, unrewarded_relayer, AccountId, DbWeight,
|
||||
RuntimeEvent as TestEvent, RuntimeOrigin, TestDeliveryConfirmationPayments,
|
||||
TestDeliveryPayments, TestMessagesDeliveryProof, TestMessagesProof, TestRuntime,
|
||||
MAX_OUTBOUND_PAYLOAD_SIZE, PAYLOAD_REJECTED_BY_TARGET_CHAIN, REGULAR_PAYLOAD, TEST_LANE_ID,
|
||||
TEST_LANE_ID_2, TEST_LANE_ID_3, TEST_RELAYER_A, TEST_RELAYER_B,
|
||||
};
|
||||
use bp_messages::{UnrewardedRelayer, UnrewardedRelayersState};
|
||||
use bp_messages::{BridgeMessagesCall, UnrewardedRelayer, UnrewardedRelayersState};
|
||||
use bp_test_utils::generate_owned_bridge_module_tests;
|
||||
use frame_support::{
|
||||
assert_noop, assert_ok,
|
||||
@@ -1891,6 +1891,69 @@ mod tests {
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_bridge_messages_call_is_correctly_defined() {
|
||||
let account_id = 1;
|
||||
let message_proof: TestMessagesProof = Ok(vec![message(1, REGULAR_PAYLOAD)]).into();
|
||||
let message_delivery_proof = TestMessagesDeliveryProof(Ok((
|
||||
TEST_LANE_ID,
|
||||
InboundLaneData {
|
||||
last_confirmed_nonce: 1,
|
||||
relayers: vec![UnrewardedRelayer {
|
||||
relayer: 0,
|
||||
messages: DeliveredMessages::new(1),
|
||||
}]
|
||||
.into_iter()
|
||||
.collect(),
|
||||
},
|
||||
)));
|
||||
let unrewarded_relayer_state = UnrewardedRelayersState {
|
||||
unrewarded_relayer_entries: 1,
|
||||
total_messages: 1,
|
||||
last_delivered_nonce: 1,
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
let direct_receive_messages_proof_call = Call::<TestRuntime>::receive_messages_proof {
|
||||
relayer_id_at_bridged_chain: account_id,
|
||||
proof: message_proof.clone(),
|
||||
messages_count: 1,
|
||||
dispatch_weight: REGULAR_PAYLOAD.declared_weight,
|
||||
};
|
||||
let indirect_receive_messages_proof_call = BridgeMessagesCall::<
|
||||
AccountId,
|
||||
TestMessagesProof,
|
||||
TestMessagesDeliveryProof,
|
||||
>::receive_messages_proof(
|
||||
account_id,
|
||||
message_proof,
|
||||
1,
|
||||
REGULAR_PAYLOAD.declared_weight,
|
||||
);
|
||||
assert_eq!(
|
||||
direct_receive_messages_proof_call.encode(),
|
||||
indirect_receive_messages_proof_call.encode()
|
||||
);
|
||||
|
||||
let direct_receive_messages_delivery_proof_call =
|
||||
Call::<TestRuntime>::receive_messages_delivery_proof {
|
||||
proof: message_delivery_proof.clone(),
|
||||
relayers_state: unrewarded_relayer_state.clone(),
|
||||
};
|
||||
let indirect_receive_messages_delivery_proof_call = BridgeMessagesCall::<
|
||||
AccountId,
|
||||
TestMessagesProof,
|
||||
TestMessagesDeliveryProof,
|
||||
>::receive_messages_delivery_proof(
|
||||
message_delivery_proof,
|
||||
unrewarded_relayer_state,
|
||||
);
|
||||
assert_eq!(
|
||||
direct_receive_messages_delivery_proof_call.encode(),
|
||||
indirect_receive_messages_delivery_proof_call.encode()
|
||||
);
|
||||
}
|
||||
|
||||
generate_owned_bridge_module_tests!(
|
||||
MessagesOperatingMode::Basic(BasicOperatingMode::Normal),
|
||||
MessagesOperatingMode::Basic(BasicOperatingMode::Halted)
|
||||
|
||||
@@ -661,7 +661,9 @@ mod tests {
|
||||
};
|
||||
use codec::Encode;
|
||||
|
||||
use bp_parachains::{BestParaHeadHash, ImportedParaHeadsKeyProvider, ParasInfoKeyProvider};
|
||||
use bp_parachains::{
|
||||
BestParaHeadHash, BridgeParachainCall, ImportedParaHeadsKeyProvider, ParasInfoKeyProvider,
|
||||
};
|
||||
use bp_runtime::{
|
||||
record_all_trie_keys, BasicOperatingMode, OwnedBridgeModuleError,
|
||||
StorageDoubleMapKeyProvider, StorageMapKeyProvider,
|
||||
@@ -1471,5 +1473,24 @@ mod tests {
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_bridge_parachain_call_is_correctly_defined() {
|
||||
let (state_root, proof, _) = prepare_parachain_heads_proof(vec![(1, head_data(1, 0))]);
|
||||
let parachains = vec![(ParaId(2), Default::default())];
|
||||
let relay_header_id = (0, test_relay_header(0, state_root).hash());
|
||||
|
||||
let direct_submit_parachain_heads_call = Call::<TestRuntime>::submit_parachain_heads {
|
||||
at_relay_block: relay_header_id,
|
||||
parachains: parachains.clone(),
|
||||
parachain_heads_proof: proof.clone(),
|
||||
};
|
||||
let indirect_submit_parachain_heads_call =
|
||||
BridgeParachainCall::submit_parachain_heads(relay_header_id, parachains, proof);
|
||||
assert_eq!(
|
||||
direct_submit_parachain_heads_call.encode(),
|
||||
indirect_submit_parachain_heads_call.encode()
|
||||
);
|
||||
}
|
||||
|
||||
generate_owned_bridge_module_tests!(BasicOperatingMode::Normal, BasicOperatingMode::Halted);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user