Skip to content

Commit

Permalink
[tests] make emulated setup closer to ecosystem reality (#5301)
Browse files Browse the repository at this point in the history
In the real world, not all assets are sufficient. This aligns our
emulated networks to that reality. Only DOT and USDT are sufficient "by
default".
  • Loading branch information
acatangiu authored Aug 9, 2024
1 parent b49509b commit 32b8760
Show file tree
Hide file tree
Showing 9 changed files with 50 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ pub fn genesis() -> Storage {
},
assets: asset_hub_rococo_runtime::AssetsConfig {
assets: vec![
(RESERVABLE_ASSET_ID, AssetHubRococoAssetOwner::get(), true, ED),
(RESERVABLE_ASSET_ID, AssetHubRococoAssetOwner::get(), false, ED),
(USDT_ID, AssetHubRococoAssetOwner::get(), true, ED),
],
..Default::default()
Expand All @@ -81,7 +81,7 @@ pub fn genesis() -> Storage {
(
PenpalTeleportableAssetLocation::get(),
PenpalSiblingSovereignAccount::get(),
true,
false,
ED,
),
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ use sp_core::{sr25519, storage::Storage};
use emulated_integration_tests_common::{
accounts, build_genesis_storage, collators, get_account_id_from_seed,
PenpalSiblingSovereignAccount, PenpalTeleportableAssetLocation, RESERVABLE_ASSET_ID,
SAFE_XCM_VERSION,
SAFE_XCM_VERSION, USDT_ID,
};
use parachains_common::{AccountId, Balance};

Expand Down Expand Up @@ -65,7 +65,10 @@ pub fn genesis() -> Storage {
..Default::default()
},
assets: asset_hub_westend_runtime::AssetsConfig {
assets: vec![(RESERVABLE_ASSET_ID, AssetHubWestendAssetOwner::get(), true, ED)],
assets: vec![
(RESERVABLE_ASSET_ID, AssetHubWestendAssetOwner::get(), false, ED),
(USDT_ID, AssetHubWestendAssetOwner::get(), true, ED),
],
..Default::default()
},
foreign_assets: asset_hub_westend_runtime::ForeignAssetsConfig {
Expand All @@ -74,7 +77,7 @@ pub fn genesis() -> Storage {
(
PenpalTeleportableAssetLocation::get(),
PenpalSiblingSovereignAccount::get(),
true,
false,
ED,
),
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ use emulated_integration_tests_common::{
accounts, build_genesis_storage, collators, get_account_id_from_seed, SAFE_XCM_VERSION,
};
use parachains_common::{AccountId, Balance};
use penpal_runtime::xcm_config::{LocalReservableFromAssetHub, RelayLocation};
use penpal_runtime::xcm_config::{LocalReservableFromAssetHub, RelayLocation, UsdtFromAssetHub};
// Penpal
pub const PARA_ID_A: u32 = 2000;
pub const PARA_ID_B: u32 = 2001;
Expand Down Expand Up @@ -81,6 +81,8 @@ pub fn genesis(para_id: u32) -> Storage {
(RelayLocation::get(), PenpalAssetOwner::get(), true, ED),
// Sufficient AssetHub asset representation
(LocalReservableFromAssetHub::get(), PenpalAssetOwner::get(), true, ED),
// USDT from Asset Hub
(UsdtFromAssetHub::get(), PenpalAssetOwner::get(), true, ED),
],
..Default::default()
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -939,7 +939,7 @@ fn reserve_transfer_assets_from_system_para_to_para() {
);
}

/// Reserve Transfers of a foreign asset and native asset from Parachain to System Para should
/// Reserve Transfers of a random asset and native asset from Parachain to System Para should
/// work
#[test]
fn reserve_transfer_assets_from_para_to_system_para() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@
// limitations under the License.

use crate::imports::*;
use emulated_integration_tests_common::accounts::{ALICE, BOB};
use emulated_integration_tests_common::{
accounts::{ALICE, BOB},
USDT_ID,
};
use frame_support::{
dispatch::RawOrigin,
sp_runtime::traits::Dispatchable,
Expand Down Expand Up @@ -161,7 +164,6 @@ fn spend_roc_on_asset_hub() {

#[test]
fn create_and_claim_treasury_spend_in_usdt() {
const ASSET_ID: u32 = 1984;
const SPEND_AMOUNT: u128 = 10_000_000;
// treasury location from a sibling parachain.
let treasury_location: Location = Location::new(1, PalletInstance(18));
Expand All @@ -175,7 +177,7 @@ fn create_and_claim_treasury_spend_in_usdt() {
let asset_kind = VersionedLocatableAsset::V3 {
location: asset_hub_location,
asset_id: v3::AssetId::Concrete(
(v3::Junction::PalletInstance(50), v3::Junction::GeneralIndex(ASSET_ID.into())).into(),
(v3::Junction::PalletInstance(50), v3::Junction::GeneralIndex(USDT_ID.into())).into(),
),
};
// treasury spend beneficiary.
Expand All @@ -187,9 +189,9 @@ fn create_and_claim_treasury_spend_in_usdt() {
type Assets = <AssetHubRococo as AssetHubRococoPallet>::Assets;

// USDT created at genesis, mint some assets to the treasury account.
assert_ok!(<Assets as Mutate<_>>::mint_into(ASSET_ID, &treasury_account, SPEND_AMOUNT * 4));
assert_ok!(<Assets as Mutate<_>>::mint_into(USDT_ID, &treasury_account, SPEND_AMOUNT * 4));
// beneficiary has zero balance.
assert_eq!(<Assets as FungiblesInspect<_>>::balance(ASSET_ID, &alice,), 0u128,);
assert_eq!(<Assets as FungiblesInspect<_>>::balance(USDT_ID, &alice,), 0u128,);
});

Rococo::execute_with(|| {
Expand Down Expand Up @@ -231,7 +233,7 @@ fn create_and_claim_treasury_spend_in_usdt() {
AssetHubRococo,
vec![
RuntimeEvent::Assets(pallet_assets::Event::Transferred { asset_id: id, from, to, amount }) => {
id: id == &ASSET_ID,
id: id == &USDT_ID,
from: from == &treasury_account,
to: to == &alice,
amount: amount == &SPEND_AMOUNT,
Expand All @@ -241,7 +243,7 @@ fn create_and_claim_treasury_spend_in_usdt() {
]
);
// beneficiary received the assets from the treasury.
assert_eq!(<Assets as FungiblesInspect<_>>::balance(ASSET_ID, &alice,), SPEND_AMOUNT,);
assert_eq!(<Assets as FungiblesInspect<_>>::balance(USDT_ID, &alice,), SPEND_AMOUNT,);
});

Rococo::execute_with(|| {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,17 @@
// limitations under the License.

use crate::imports::*;
use emulated_integration_tests_common::accounts::{ALICE, BOB};
use frame_support::traits::fungibles::{Create, Inspect, Mutate};
use emulated_integration_tests_common::{
accounts::{ALICE, BOB},
USDT_ID,
};
use frame_support::traits::fungibles::{Inspect, Mutate};
use polkadot_runtime_common::impls::VersionedLocatableAsset;
use xcm_executor::traits::ConvertLocation;

#[test]
fn create_and_claim_treasury_spend() {
const ASSET_ID: u32 = 1984;
const SPEND_AMOUNT: u128 = 1_000_000;
const SPEND_AMOUNT: u128 = 1_000_000_000;
// treasury location from a sibling parachain.
let treasury_location: Location =
Location::new(1, [Parachain(CollectivesWestend::para_id().into()), PalletInstance(65)]);
Expand All @@ -34,7 +36,7 @@ fn create_and_claim_treasury_spend() {
// asset kind to be spent from the treasury.
let asset_kind = VersionedLocatableAsset::V4 {
location: asset_hub_location,
asset_id: AssetId((PalletInstance(50), GeneralIndex(ASSET_ID.into())).into()),
asset_id: AssetId((PalletInstance(50), GeneralIndex(USDT_ID.into())).into()),
};
// treasury spend beneficiary.
let alice: AccountId = Westend::account_id_of(ALICE);
Expand All @@ -44,16 +46,10 @@ fn create_and_claim_treasury_spend() {
AssetHubWestend::execute_with(|| {
type Assets = <AssetHubWestend as AssetHubWestendPallet>::Assets;

// create an asset class and mint some assets to the treasury account.
assert_ok!(<Assets as Create<_>>::create(
ASSET_ID,
treasury_account.clone(),
true,
SPEND_AMOUNT / 2
));
assert_ok!(<Assets as Mutate<_>>::mint_into(ASSET_ID, &treasury_account, SPEND_AMOUNT * 4));
// USDT created at genesis, mint some assets to the fellowship treasury account.
assert_ok!(<Assets as Mutate<_>>::mint_into(USDT_ID, &treasury_account, SPEND_AMOUNT * 4));
// beneficiary has zero balance.
assert_eq!(<Assets as Inspect<_>>::balance(ASSET_ID, &alice,), 0u128,);
assert_eq!(<Assets as Inspect<_>>::balance(USDT_ID, &alice,), 0u128,);
});

CollectivesWestend::execute_with(|| {
Expand Down Expand Up @@ -96,7 +92,7 @@ fn create_and_claim_treasury_spend() {
AssetHubWestend,
vec![
RuntimeEvent::Assets(pallet_assets::Event::Transferred { asset_id: id, from, to, amount }) => {
id: id == &ASSET_ID,
id: id == &USDT_ID,
from: from == &treasury_account,
to: to == &alice,
amount: amount == &SPEND_AMOUNT,
Expand All @@ -106,7 +102,7 @@ fn create_and_claim_treasury_spend() {
]
);
// beneficiary received the assets from the treasury.
assert_eq!(<Assets as Inspect<_>>::balance(ASSET_ID, &alice,), SPEND_AMOUNT,);
assert_eq!(<Assets as Inspect<_>>::balance(USDT_ID, &alice,), SPEND_AMOUNT,);
});

CollectivesWestend::execute_with(|| {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -940,7 +940,7 @@ fn reserve_transfer_assets_from_system_para_to_para() {
);
}

/// Reserve Transfers of a foreign asset and native asset from Parachain to System Para should
/// Reserve Transfers of a random asset and native asset from Parachain to System Para should
/// work
#[test]
fn reserve_transfer_assets_from_para_to_system_para() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,17 @@
// limitations under the License.

use crate::imports::*;
use emulated_integration_tests_common::accounts::{ALICE, BOB};
use frame_support::traits::fungibles::{Create, Inspect, Mutate};
use emulated_integration_tests_common::{
accounts::{ALICE, BOB},
USDT_ID,
};
use frame_support::traits::fungibles::{Inspect, Mutate};
use polkadot_runtime_common::impls::VersionedLocatableAsset;
use xcm_executor::traits::ConvertLocation;

#[test]
fn create_and_claim_treasury_spend() {
const ASSET_ID: u32 = 1984;
const SPEND_AMOUNT: u128 = 1_000_000;
const SPEND_AMOUNT: u128 = 1_000_000_000;
// treasury location from a sibling parachain.
let treasury_location: Location = Location::new(1, PalletInstance(37));
// treasury account on a sibling parachain.
Expand All @@ -33,7 +35,7 @@ fn create_and_claim_treasury_spend() {
// asset kind to be spend from the treasury.
let asset_kind = VersionedLocatableAsset::V4 {
location: asset_hub_location,
asset_id: AssetId([PalletInstance(50), GeneralIndex(ASSET_ID.into())].into()),
asset_id: AssetId([PalletInstance(50), GeneralIndex(USDT_ID.into())].into()),
};
// treasury spend beneficiary.
let alice: AccountId = Westend::account_id_of(ALICE);
Expand All @@ -43,16 +45,10 @@ fn create_and_claim_treasury_spend() {
AssetHubWestend::execute_with(|| {
type Assets = <AssetHubWestend as AssetHubWestendPallet>::Assets;

// create an asset class and mint some assets to the treasury account.
assert_ok!(<Assets as Create<_>>::create(
ASSET_ID,
treasury_account.clone(),
true,
SPEND_AMOUNT / 2
));
assert_ok!(<Assets as Mutate<_>>::mint_into(ASSET_ID, &treasury_account, SPEND_AMOUNT * 4));
// USDT created at genesis, mint some assets to the treasury account.
assert_ok!(<Assets as Mutate<_>>::mint_into(USDT_ID, &treasury_account, SPEND_AMOUNT * 4));
// beneficiary has zero balance.
assert_eq!(<Assets as Inspect<_>>::balance(ASSET_ID, &alice,), 0u128,);
assert_eq!(<Assets as Inspect<_>>::balance(USDT_ID, &alice,), 0u128,);
});

Westend::execute_with(|| {
Expand Down Expand Up @@ -94,7 +90,7 @@ fn create_and_claim_treasury_spend() {
AssetHubWestend,
vec![
RuntimeEvent::Assets(pallet_assets::Event::Transferred { asset_id: id, from, to, amount }) => {
id: id == &ASSET_ID,
id: id == &USDT_ID,
from: from == &treasury_account,
to: to == &alice,
amount: amount == &SPEND_AMOUNT,
Expand All @@ -104,7 +100,7 @@ fn create_and_claim_treasury_spend() {
]
);
// beneficiary received the assets from the treasury.
assert_eq!(<Assets as Inspect<_>>::balance(ASSET_ID, &alice,), SPEND_AMOUNT,);
assert_eq!(<Assets as Inspect<_>>::balance(USDT_ID, &alice,), SPEND_AMOUNT,);
});

Westend::execute_with(|| {
Expand Down
4 changes: 4 additions & 0 deletions cumulus/parachains/runtimes/testing/penpal/src/xcm_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,10 @@ parameter_types! {
1,
[Parachain(ASSET_HUB_ID), PalletInstance(ASSETS_PALLET_ID), GeneralIndex(RESERVABLE_ASSET_ID.into())]
);
pub UsdtFromAssetHub: Location = Location::new(
1,
[Parachain(ASSET_HUB_ID), PalletInstance(ASSETS_PALLET_ID), GeneralIndex(1984)]
);

/// The Penpal runtime is utilized for testing with various environment setups.
/// This storage item provides the opportunity to customize testing scenarios
Expand Down

0 comments on commit 32b8760

Please sign in to comment.