mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 22:11:02 +00:00
bab0348372
- updates snowbridge crates to `0.9.0` - updates Cargo.toml files in preparation for publishing to crates.io - adds Kusama and Polkadot Snowbridge runtime config crates - moves runtime tests from the Snowbridge subtree into the bridge hub tests dir --------- Co-authored-by: claravanstaden <Cats 4 life!> Co-authored-by: Ron <yrong1997@gmail.com>
110 lines
3.3 KiB
Rust
110 lines
3.3 KiB
Rust
// Copyright (C) Parity Technologies (UK) Ltd.
|
|
// This file is part of Cumulus.
|
|
|
|
// Cumulus is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
|
|
// Cumulus is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with Cumulus. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
#![cfg(test)]
|
|
|
|
use bridge_hub_rococo_runtime::{
|
|
xcm_config::XcmConfig, MessageQueueServiceWeight, Runtime, RuntimeEvent, SessionKeys,
|
|
};
|
|
use codec::Decode;
|
|
use cumulus_primitives_core::XcmError::{FailedToTransactAsset, NotHoldingFees};
|
|
use frame_support::parameter_types;
|
|
use parachains_common::{AccountId, AuraId, Balance};
|
|
use snowbridge_pallet_ethereum_client::WeightInfo;
|
|
use sp_core::H160;
|
|
use sp_keyring::AccountKeyring::Alice;
|
|
|
|
parameter_types! {
|
|
pub const DefaultBridgeHubEthereumBaseFee: Balance = 2_750_872_500_000;
|
|
}
|
|
|
|
fn collator_session_keys() -> bridge_hub_test_utils::CollatorSessionKeys<Runtime> {
|
|
bridge_hub_test_utils::CollatorSessionKeys::new(
|
|
AccountId::from(Alice),
|
|
AccountId::from(Alice),
|
|
SessionKeys { aura: AuraId::from(Alice.public()) },
|
|
)
|
|
}
|
|
|
|
#[test]
|
|
pub fn transfer_token_to_ethereum_works() {
|
|
snowbridge_runtime_test_common::send_transfer_token_message_success::<Runtime, XcmConfig>(
|
|
collator_session_keys(),
|
|
1013,
|
|
1000,
|
|
H160::random(),
|
|
H160::random(),
|
|
DefaultBridgeHubEthereumBaseFee::get(),
|
|
Box::new(|runtime_event_encoded: Vec<u8>| {
|
|
match RuntimeEvent::decode(&mut &runtime_event_encoded[..]) {
|
|
Ok(RuntimeEvent::EthereumOutboundQueue(event)) => Some(event),
|
|
_ => None,
|
|
}
|
|
}),
|
|
)
|
|
}
|
|
|
|
#[test]
|
|
pub fn unpaid_transfer_token_to_ethereum_fails_with_barrier() {
|
|
snowbridge_runtime_test_common::send_unpaid_transfer_token_message::<Runtime, XcmConfig>(
|
|
collator_session_keys(),
|
|
1013,
|
|
1000,
|
|
H160::random(),
|
|
H160::random(),
|
|
)
|
|
}
|
|
|
|
#[test]
|
|
pub fn transfer_token_to_ethereum_fee_not_enough() {
|
|
snowbridge_runtime_test_common::send_transfer_token_message_failure::<Runtime, XcmConfig>(
|
|
collator_session_keys(),
|
|
1013,
|
|
1000,
|
|
DefaultBridgeHubEthereumBaseFee::get() + 1_000_000_000,
|
|
H160::random(),
|
|
H160::random(),
|
|
// fee not enough
|
|
1_000_000_000,
|
|
NotHoldingFees,
|
|
)
|
|
}
|
|
|
|
#[test]
|
|
pub fn transfer_token_to_ethereum_insufficient_fund() {
|
|
snowbridge_runtime_test_common::send_transfer_token_message_failure::<Runtime, XcmConfig>(
|
|
collator_session_keys(),
|
|
1013,
|
|
1000,
|
|
1_000_000_000,
|
|
H160::random(),
|
|
H160::random(),
|
|
DefaultBridgeHubEthereumBaseFee::get(),
|
|
FailedToTransactAsset("InsufficientBalance"),
|
|
)
|
|
}
|
|
|
|
#[test]
|
|
fn max_message_queue_service_weight_is_more_than_beacon_extrinsic_weights() {
|
|
let max_message_queue_weight = MessageQueueServiceWeight::get();
|
|
let force_checkpoint =
|
|
<Runtime as snowbridge_pallet_ethereum_client::Config>::WeightInfo::force_checkpoint();
|
|
let submit_checkpoint =
|
|
<Runtime as snowbridge_pallet_ethereum_client::Config>::WeightInfo::submit();
|
|
max_message_queue_weight.all_gt(force_checkpoint);
|
|
max_message_queue_weight.all_gt(submit_checkpoint);
|
|
}
|