Skip to content

Commit 942fe51

Browse files
committed
fix
1 parent 27bfc47 commit 942fe51

File tree

4 files changed

+158
-116
lines changed

4 files changed

+158
-116
lines changed

asset-registry/src/mock/para.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,9 @@ use frame_support::{
1010
PalletId,
1111
};
1212
use frame_system::{EnsureRoot, EnsureSignedBy};
13-
use orml_traits::{
14-
location::{AbsoluteReserveProvider, RelativeReserveProvider},
15-
parameter_type_with_key, FixedConversionRateProvider, MultiCurrency,
16-
};
13+
use orml_traits::{parameter_type_with_key, FixedConversionRateProvider, MultiCurrency};
1714
use orml_xcm_support::{IsNativeConcrete, MultiCurrencyAdapter, MultiNativeAsset};
15+
use orml_xtokens::{AbsoluteReserveProviderMigrationPhase, RelativeReserveProviderMigrationPhase};
1816
use pallet_xcm::XcmPassthrough;
1917
use parity_scale_codec::{Decode, DecodeWithMemTracking, Encode, MaxEncodedLen};
2018
use polkadot_parachain_primitives::primitives::Sibling;
@@ -212,7 +210,7 @@ impl Config for XcmConfig {
212210
type XcmSender = XcmRouter;
213211
type AssetTransactor = LocalAssetTransactor;
214212
type OriginConverter = XcmOriginToCallOrigin;
215-
type IsReserve = MultiNativeAsset<AbsoluteReserveProvider>;
213+
type IsReserve = MultiNativeAsset<AbsoluteReserveProviderMigrationPhase<Runtime>>;
216214
type IsTeleporter = ();
217215
type UniversalLocation = UniversalLocation;
218216
type Barrier = Barrier;
@@ -329,9 +327,10 @@ impl orml_xtokens::Config for Runtime {
329327
type BaseXcmWeight = BaseXcmWeight;
330328
type UniversalLocation = UniversalLocation;
331329
type MaxAssetsForTransfer = MaxAssetsForTransfer;
332-
type ReserveProvider = RelativeReserveProvider;
330+
type ReserveProvider = RelativeReserveProviderMigrationPhase<Runtime>;
333331
type RateLimiter = ();
334332
type RateLimiterId = ();
333+
type MigrationPhaseUpdateOrigin = EnsureRoot<AccountId>;
335334
}
336335

337336
impl orml_xcm::Config for Runtime {

traits/src/location.rs

Lines changed: 0 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -17,93 +17,3 @@ impl RelativeLocations for Location {
1717
Location::new(1, [Parachain(para_id), general_key.as_bounded_slice().into()])
1818
}
1919
}
20-
21-
#[cfg(test)]
22-
mod tests {
23-
use super::*;
24-
25-
const PARACHAIN: Junction = Parachain(1);
26-
const GENERAL_INDEX: Junction = GeneralIndex(1);
27-
28-
fn concrete_fungible(id: Location) -> Asset {
29-
(id, 1).into()
30-
}
31-
32-
#[test]
33-
fn parent_as_reserve_chain() {
34-
assert_eq!(
35-
AbsoluteReserveProvider::reserve(&concrete_fungible(Location::new(1, [GENERAL_INDEX]))),
36-
Some(Location::parent())
37-
);
38-
assert_eq!(
39-
RelativeReserveProvider::reserve(&concrete_fungible(Location::new(1, [GENERAL_INDEX]))),
40-
Some(Location::parent())
41-
);
42-
}
43-
44-
#[test]
45-
fn sibling_parachain_as_reserve_chain() {
46-
assert_eq!(
47-
AbsoluteReserveProvider::reserve(&concrete_fungible(Location::new(1, [PARACHAIN, GENERAL_INDEX]))),
48-
Some(Location::new(1, [PARACHAIN]))
49-
);
50-
assert_eq!(
51-
RelativeReserveProvider::reserve(&concrete_fungible(Location::new(1, [PARACHAIN, GENERAL_INDEX]))),
52-
Some(Location::new(1, [PARACHAIN]))
53-
);
54-
}
55-
56-
#[test]
57-
fn child_parachain_as_reserve_chain() {
58-
assert_eq!(
59-
AbsoluteReserveProvider::reserve(&concrete_fungible(Location::new(0, [PARACHAIN, GENERAL_INDEX]))),
60-
Some(PARACHAIN.into())
61-
);
62-
assert_eq!(
63-
RelativeReserveProvider::reserve(&concrete_fungible(Location::new(0, [PARACHAIN, GENERAL_INDEX]))),
64-
Some(PARACHAIN.into())
65-
);
66-
}
67-
68-
#[test]
69-
fn no_reserve_chain_for_absolute_self_for_relative() {
70-
assert_eq!(
71-
AbsoluteReserveProvider::reserve(&concrete_fungible(Location::new(
72-
0,
73-
[Junction::from(BoundedVec::try_from(b"DOT".to_vec()).unwrap())]
74-
))),
75-
None
76-
);
77-
assert_eq!(
78-
RelativeReserveProvider::reserve(&concrete_fungible(Location::new(
79-
0,
80-
[Junction::from(BoundedVec::try_from(b"DOT".to_vec()).unwrap())]
81-
))),
82-
Some(Location::here())
83-
);
84-
}
85-
86-
#[test]
87-
fn non_chain_part_works() {
88-
assert_eq!(Location::parent().non_chain_part(), None);
89-
assert_eq!(Location::new(1, [PARACHAIN]).non_chain_part(), None);
90-
assert_eq!(Location::new(0, [PARACHAIN]).non_chain_part(), None);
91-
92-
assert_eq!(
93-
Location::new(1, [GENERAL_INDEX]).non_chain_part(),
94-
Some(GENERAL_INDEX.into())
95-
);
96-
assert_eq!(
97-
Location::new(1, [GENERAL_INDEX, GENERAL_INDEX]).non_chain_part(),
98-
Some((GENERAL_INDEX, GENERAL_INDEX).into())
99-
);
100-
assert_eq!(
101-
Location::new(1, [PARACHAIN, GENERAL_INDEX]).non_chain_part(),
102-
Some(GENERAL_INDEX.into())
103-
);
104-
assert_eq!(
105-
Location::new(0, [PARACHAIN, GENERAL_INDEX]).non_chain_part(),
106-
Some(GENERAL_INDEX.into())
107-
);
108-
}
109-
}

xcm-support/src/tests.rs

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use super::*;
66

7-
use orml_traits::{location::AbsoluteReserveProvider, location::RelativeLocations, ConcreteFungibleAsset};
7+
use orml_traits::{location::RelativeLocations, ConcreteFungibleAsset};
88

99
#[derive(Debug, PartialEq, Eq)]
1010
pub enum TestCurrencyId {
@@ -88,22 +88,3 @@ fn is_native_concrete_does_not_matches_non_native_currencies() {
8888
})
8989
.is_none());
9090
}
91-
92-
#[test]
93-
fn multi_native_asset() {
94-
assert!(MultiNativeAsset::<AbsoluteReserveProvider>::contains(
95-
&Asset {
96-
fun: Fungible(10),
97-
id: AssetId(Location::parent())
98-
},
99-
&Parent.into()
100-
));
101-
assert!(MultiNativeAsset::<AbsoluteReserveProvider>::contains(
102-
&Asset::sibling_parachain_asset(1, b"TokenA".to_vec().try_into().unwrap(), 100),
103-
&Location::new(1, [Parachain(1)]),
104-
));
105-
assert!(!MultiNativeAsset::<AbsoluteReserveProvider>::contains(
106-
&Asset::sibling_parachain_asset(1, b"TokenA".to_vec().try_into().unwrap(), 100),
107-
&Location::parent(),
108-
));
109-
}

xtokens/src/tests.rs

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22

33
use super::*;
44
use cumulus_primitives_core::ParaId;
5+
use frame_support::traits::ContainsPair;
56
use frame_support::{assert_err, assert_noop, assert_ok, traits::Currency};
67
use mock::*;
78
use orml_traits::{ConcreteFungibleAsset, MultiCurrency};
9+
use orml_xcm_support::MultiNativeAsset;
810
use parity_scale_codec::Encode;
911
use polkadot_parachain_primitives::primitives::Sibling;
1012
use sp_runtime::{traits::AccountIdConversion, AccountId32};
@@ -1957,3 +1959,153 @@ fn set_migration_phase_should_work() {
19571959
assert_eq!(MigrationPhase::Completed, MigrationStatus::<para::Runtime>::get());
19581960
});
19591961
}
1962+
1963+
// AbsoluteReserveProviderMigrationPhase and
1964+
// RelativeReserveProviderMigrationPhase
1965+
const PARACHAIN: Junction = Parachain(1);
1966+
const GENERAL_INDEX: Junction = GeneralIndex(1);
1967+
1968+
fn concrete_fungible(id: Location) -> Asset {
1969+
(id, 1).into()
1970+
}
1971+
1972+
#[test]
1973+
fn parent_as_reserve_chain() {
1974+
TestNet::reset();
1975+
1976+
ParaA::execute_with(|| {
1977+
assert_eq!(
1978+
AbsoluteReserveProviderMigrationPhase::<para::Runtime>::reserve(&concrete_fungible(Location::new(
1979+
1,
1980+
[GENERAL_INDEX]
1981+
))),
1982+
Some(Location::parent())
1983+
);
1984+
assert_eq!(
1985+
RelativeReserveProviderMigrationPhase::<para::Runtime>::reserve(&concrete_fungible(Location::new(
1986+
1,
1987+
[GENERAL_INDEX]
1988+
))),
1989+
Some(Location::parent())
1990+
);
1991+
});
1992+
}
1993+
1994+
#[test]
1995+
fn sibling_parachain_as_reserve_chain() {
1996+
TestNet::reset();
1997+
1998+
ParaA::execute_with(|| {
1999+
assert_eq!(
2000+
AbsoluteReserveProviderMigrationPhase::<para::Runtime>::reserve(&concrete_fungible(Location::new(
2001+
1,
2002+
[PARACHAIN, GENERAL_INDEX]
2003+
))),
2004+
Some(Location::new(1, [PARACHAIN]))
2005+
);
2006+
assert_eq!(
2007+
RelativeReserveProviderMigrationPhase::<para::Runtime>::reserve(&concrete_fungible(Location::new(
2008+
1,
2009+
[PARACHAIN, GENERAL_INDEX]
2010+
))),
2011+
Some(Location::new(1, [PARACHAIN]))
2012+
);
2013+
});
2014+
}
2015+
2016+
#[test]
2017+
fn child_parachain_as_reserve_chain() {
2018+
TestNet::reset();
2019+
2020+
ParaA::execute_with(|| {
2021+
assert_eq!(
2022+
AbsoluteReserveProviderMigrationPhase::<para::Runtime>::reserve(&concrete_fungible(Location::new(
2023+
0,
2024+
[PARACHAIN, GENERAL_INDEX]
2025+
))),
2026+
Some(PARACHAIN.into())
2027+
);
2028+
assert_eq!(
2029+
RelativeReserveProviderMigrationPhase::<para::Runtime>::reserve(&concrete_fungible(Location::new(
2030+
0,
2031+
[PARACHAIN, GENERAL_INDEX]
2032+
))),
2033+
Some(PARACHAIN.into())
2034+
);
2035+
});
2036+
}
2037+
2038+
#[test]
2039+
fn no_reserve_chain_for_absolute_self_for_relative() {
2040+
TestNet::reset();
2041+
2042+
ParaA::execute_with(|| {
2043+
assert_eq!(
2044+
AbsoluteReserveProviderMigrationPhase::<para::Runtime>::reserve(&concrete_fungible(Location::new(
2045+
0,
2046+
[Junction::from(BoundedVec::try_from(b"DOT".to_vec()).unwrap())]
2047+
))),
2048+
None
2049+
);
2050+
assert_eq!(
2051+
RelativeReserveProviderMigrationPhase::<para::Runtime>::reserve(&concrete_fungible(Location::new(
2052+
0,
2053+
[Junction::from(BoundedVec::try_from(b"DOT".to_vec()).unwrap())]
2054+
))),
2055+
Some(Location::here())
2056+
);
2057+
});
2058+
}
2059+
2060+
#[test]
2061+
fn non_chain_part_works() {
2062+
assert_eq!(ParaXTokens::non_chain_part(&Location::parent()), None);
2063+
assert_eq!(ParaXTokens::non_chain_part(&Location::new(1, [PARACHAIN])), None);
2064+
assert_eq!(ParaXTokens::non_chain_part(&Location::new(0, [PARACHAIN])), None);
2065+
2066+
assert_eq!(
2067+
ParaXTokens::non_chain_part(&Location::new(1, [GENERAL_INDEX])),
2068+
Some(GENERAL_INDEX.into())
2069+
);
2070+
assert_eq!(
2071+
ParaXTokens::non_chain_part(&Location::new(1, [GENERAL_INDEX, GENERAL_INDEX])),
2072+
Some((GENERAL_INDEX, GENERAL_INDEX).into())
2073+
);
2074+
assert_eq!(
2075+
ParaXTokens::non_chain_part(&Location::new(1, [PARACHAIN, GENERAL_INDEX])),
2076+
Some(GENERAL_INDEX.into())
2077+
);
2078+
assert_eq!(
2079+
ParaXTokens::non_chain_part(&Location::new(0, [PARACHAIN, GENERAL_INDEX])),
2080+
Some(GENERAL_INDEX.into())
2081+
);
2082+
}
2083+
2084+
#[test]
2085+
fn multi_native_asset() {
2086+
TestNet::reset();
2087+
2088+
ParaA::execute_with(|| {
2089+
assert!(
2090+
MultiNativeAsset::<AbsoluteReserveProviderMigrationPhase<para::Runtime>>::contains(
2091+
&Asset {
2092+
fun: Fungible(10),
2093+
id: AssetId(Location::parent())
2094+
},
2095+
&Parent.into()
2096+
)
2097+
);
2098+
assert!(
2099+
MultiNativeAsset::<AbsoluteReserveProviderMigrationPhase<para::Runtime>>::contains(
2100+
&Asset::sibling_parachain_asset(1, b"TokenA".to_vec().try_into().unwrap(), 100),
2101+
&Location::new(1, [Parachain(1)]),
2102+
)
2103+
);
2104+
assert!(
2105+
!MultiNativeAsset::<AbsoluteReserveProviderMigrationPhase<para::Runtime>>::contains(
2106+
&Asset::sibling_parachain_asset(1, b"TokenA".to_vec().try_into().unwrap(), 100),
2107+
&Location::parent(),
2108+
)
2109+
);
2110+
});
2111+
}

0 commit comments

Comments
 (0)