From 0881cebe447cb59cc0ecef215190cf9d844807ff Mon Sep 17 00:00:00 2001 From: Muharem Ismailov Date: Tue, 13 Dec 2022 15:09:42 +0100 Subject: [PATCH] Collectives integration tests (#1979) Co-authored-by: parity-processbot <> --- .../collectives/0_xcm/0_init.yml | 95 +++++++ .../collectives/0_xcm/1_teleport.yml | 126 +++++++++ .../collectives/0_xcm/2_reserve.yml | 84 ++++++ .../1_alliance/0_join_alliance_fails.yml | 34 +++ .../1_alliance/1_init_alliance.yml | 240 ++++++++++++++++++ .../1_alliance/2_join_alliance_fails.yml | 34 +++ .../collectives/1_alliance/3_kick_member.yml | 182 +++++++++++++ .../integration-tests/collectives/config.toml | 33 +++ 8 files changed, 828 insertions(+) create mode 100644 parachains/integration-tests/collectives/0_xcm/0_init.yml create mode 100644 parachains/integration-tests/collectives/0_xcm/1_teleport.yml create mode 100644 parachains/integration-tests/collectives/0_xcm/2_reserve.yml create mode 100644 parachains/integration-tests/collectives/1_alliance/0_join_alliance_fails.yml create mode 100644 parachains/integration-tests/collectives/1_alliance/1_init_alliance.yml create mode 100644 parachains/integration-tests/collectives/1_alliance/2_join_alliance_fails.yml create mode 100644 parachains/integration-tests/collectives/1_alliance/3_kick_member.yml create mode 100644 parachains/integration-tests/collectives/config.toml diff --git a/parachains/integration-tests/collectives/0_xcm/0_init.yml b/parachains/integration-tests/collectives/0_xcm/0_init.yml new file mode 100644 index 00000000000..8c03348025d --- /dev/null +++ b/parachains/integration-tests/collectives/0_xcm/0_init.yml @@ -0,0 +1,95 @@ +--- +settings: + chains: + relay_chain: &relay_chain + wsPort: 9700 + collectives_parachain: &collectives_parachain + wsPort: 9710 + paraId: &cp_id 1001 + variables: + xcm_version: &xcm_version '2' + chains: + accounts: + alice_signer: &alice_signer //Alice + decodedCalls: + ap_force_xcm_version: + chain: *collectives_parachain + pallet: polkadotXcm + call: forceXcmVersion + args: [ + { # location + parents: 1, + interior: Here + }, + *xcm_version + ] + +tests: + - name: Initialize Chains + its: + - name: XCM supported versions between chains + actions: + - extrinsics: # Relay Chain sets supported version for Collectives Parachain + - chain: *relay_chain + sudo: true + signer: *alice_signer + pallet: xcmPallet + call: forceXcmVersion + args: [ + { # location + parents: 0, + interior: { + X1: { + Parachain: *cp_id + } + } + }, + *xcm_version + ] + events: + - name: sudo.Sudid + attributes: + - type: Result + value: Ok + - name: xcmPallet.SupportedVersionChanged + attributes: + - type: u32 + value: *xcm_version + - extrinsics: # Collectives Parachain sets supported version for Relay Chain through it + - chain: *relay_chain + signer: *alice_signer + sudo: true + pallet: xcmPallet + call: send + args: [ + { v1: { 0, interior: { x1: { parachain: *cp_id }}}}, # destination + { + v2: [ # message + { + Transact: { + originType: Superuser, + requireWeightAtMost: 1000000000, # 1_000_000_000 + call: $ap_force_xcm_version + } + } + ] + } + ] + events: + - name: sudo.Sudid + attributes: + - type: Result + value: Ok + - name: xcmPallet.Sent + - name: polkadotXcm.SupportedVersionChanged + chain: *collectives_parachain + attributes: + - type: u32 + value: *xcm_version + - name: dmpQueue.ExecutedDownward + chain: *collectives_parachain + attributes: + - type: XcmV2TraitsOutcome + xcmOutcome: Complete + # the weight must be static + value: 2,000,000,000 diff --git a/parachains/integration-tests/collectives/0_xcm/1_teleport.yml b/parachains/integration-tests/collectives/0_xcm/1_teleport.yml new file mode 100644 index 00000000000..a12f8f4c3a6 --- /dev/null +++ b/parachains/integration-tests/collectives/0_xcm/1_teleport.yml @@ -0,0 +1,126 @@ +--- +settings: + chains: + relay_chain: &relay_chain + wsPort: 9700 + collectives_parachain: &collectives_parachain + wsPort: 9710 + paraId: &cp_id 1001 + variables: + xcm_version: &xcm_version '2' + weight_to_send_teleport: &weight_to_send_teleport 2,000,000,000 # must be same for both chains + weight_to_receive_teleport: &weight_to_receive_teleport 4,000,000,000 # must be same for both chains + chains: + accounts: + alice_signer: &alice_signer //Alice + alice_account32: &alice_acc32 '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d' + alice_ss58: &acc_alice_ss58 '15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5' + +tests: + - name: Teleport assets from Relay Chain to Collectives Parachain successful + its: + - name: Teleport assets from Relay Chain to Collectives Parachain + actions: + - extrinsics: + - chain: *relay_chain + signer: *alice_signer + pallet: xcmPallet + call: teleportAssets + args: [ + { v1: { 0, interior: { x1: { parachain: *cp_id }}}}, # destination + { v1: { parents: 0, interior: { x1: { accountId32: { network: { any: true }, id: *alice_acc32 }}}}}, # beneficiary + { + v1: [ + # { + # # TODO use a separate Assets to pay a fee, to receive an exact amount of assets on beneficiary account. + # # a call with two assets fails with an error right now. + # id: { concrete: { 0, interior: { here: true }}}, + # fun: { fungible: 1000000000000 } # 1_000_000_000_000 + # }, + { + id: { concrete: { 0, interior: { here: true }}}, + fun: { fungible: 20000000000000 } # 20_000_000_000_000 + } + ] + }, # assets + 0, # feeAssetItem + ] + events: + - name: xcmPallet.Attempted + chain: *relay_chain + attributes: + - type: XcmV2TraitsOutcome + xcmOutcome: Complete + # the weight must be static + value: *weight_to_send_teleport + - name: balances.Deposit + chain: *collectives_parachain + attributes: + - type: u128 + # TODO (P2) + # Flaky assert since sent assets used to pay a fee + # query and assert Alice balance before and after teleport (see example in kick_member test) + # drop this event assert + value: 19,999,953,648,988 # amount received + - name: dmpQueue.ExecutedDownward + chain: *collectives_parachain + attributes: + - type: XcmV2TraitsOutcome + xcmOutcome: Complete + # the weight must be static + value: *weight_to_receive_teleport + + - name: Teleport assets from Collectives Parachain to Relay Chain successful + actions: + - extrinsics: + - chain: *collectives_parachain + signer: *alice_signer + pallet: polkadotXcm + call: teleportAssets + args: [ + { v1: { parents: 1, interior: { here: true }}}, # destination + { v1: { parents: 0, interior: { x1: { accountId32: { network: { any: true }, id: *alice_acc32 }}}}}, # beneficiary + { + v1: [ + { + id: { concrete: { parents: 1, interior: { here: true }}}, + fun: { fungible: 10000000000000 } # 10_000_000_000_000 + } + ] + }, # assets + 0, # feeAssetItem + ] + events: + # TODO assert balance.Deposit event on relay chain + # not possible now / issue - https://github.com/paritytech/parachains-integration-tests/issues/58 + - name: balances.Withdraw + attributes: + - type: AccountId32 + key: who + value: *acc_alice_ss58 + - type: u128 + key: amount + value: 10000000000000 + - name: polkadotXcm.Attempted + attributes: + - type: XcmV2TraitsOutcome + xcmOutcome: Complete + # the weight must be static + value: *weight_to_send_teleport + - name: balances.Withdraw + chain: *relay_chain + attributes: + - type: u128 + key: amount + value: 10000000000000 # amount received and withdrawn from registry account + - name: ump.ExecutedUpward + chain: *relay_chain + attributes: + - type: XcmV2TraitsOutcome + xcmOutcome: Complete + # the weight must be static + value: *weight_to_receive_teleport + + # TODO (P2) assert Alice balance before and after teleport (see example in kick_member test) + + #TODO (P1) test: teleport of non relay chain assets fails \ No newline at end of file diff --git a/parachains/integration-tests/collectives/0_xcm/2_reserve.yml b/parachains/integration-tests/collectives/0_xcm/2_reserve.yml new file mode 100644 index 00000000000..0af20ba7daa --- /dev/null +++ b/parachains/integration-tests/collectives/0_xcm/2_reserve.yml @@ -0,0 +1,84 @@ +--- +settings: + chains: + relay_chain: &relay_chain + wsPort: 9700 + collectives_parachain: &collectives_parachain + wsPort: 9710 + paraId: &cp_id 1001 + variables: + xcm_version: &xcm_version '2' + weight_to_send_reserve: &weight_to_send_reserve 1,000,000,000 # must be same for both chains + chains: + accounts: + alice_signer: &alice_signer //Alice + alice_account32: &alice_acc32 '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d' + alice_ss58: &acc_alice_ss58 '15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5' + +tests: + - name: Reserve assets from Relay Chain to Collectives Parachain fails + its: + - name: Reserve assets from Relay Chain to Collectives Parachain + actions: + - extrinsics: + - chain: *relay_chain + signer: *alice_signer + pallet: xcmPallet + call: reserveTransferAssets + args: [ + { v1: { 0, interior: { x1: { parachain: *cp_id }}}}, # destination + { v1: { parents: 0, interior: { x1: { accountId32: { network: { any: true }, id: *alice_acc32 }}}}}, # beneficiary + { + v1: [ + { + id: { concrete: { 0, interior: { here: true }}}, + fun: { fungible: 20000000000000 } # 20_000_000_000_000 + } + ] + }, # assets + 0, # feeAssetItem + ] + events: + - name: xcmPallet.Attempted + chain: *relay_chain + attributes: + - type: XcmV2TraitsOutcome + xcmOutcome: Complete + # the weight must be static + value: *weight_to_send_reserve + - name: dmpQueue.ExecutedDownward + chain: *collectives_parachain + attributes: + - type: XcmV2TraitsOutcome + xcmOutcome: Incomplete + # the weight must be static + value: [1000000000, UntrustedReserveLocation] + + - name: Reserve assets from Collectives Parachain to Relay Chain fails + actions: + - extrinsics: + - chain: *collectives_parachain + signer: *alice_signer + pallet: polkadotXcm + call: reserveTransferAssets + args: [ + { v1: { parents: 1, interior: { here: true }}}, # destination + { v1: { parents: 0, interior: { x1: { accountId32: { network: { any: true }, id: *alice_acc32 }}}}}, # beneficiary + { + v1: [ + { + id: { concrete: { parents: 1, interior: { here: true }}}, + fun: { fungible: 10000000000000 } # 10_000_000_000_000 + } + ] + }, # assets + 0, # feeAssetItem + ] + events: + - name: system.ExtrinsicFailed + attributes: + - type: SpRuntimeDispatchError + key: dispatchError + # TODO assert variant + # issue - https://github.com/paritytech/parachains-integration-tests/issues/59 + value: {"Module":{"index":"31","error":"0x02000000"}} diff --git a/parachains/integration-tests/collectives/1_alliance/0_join_alliance_fails.yml b/parachains/integration-tests/collectives/1_alliance/0_join_alliance_fails.yml new file mode 100644 index 00000000000..11778830562 --- /dev/null +++ b/parachains/integration-tests/collectives/1_alliance/0_join_alliance_fails.yml @@ -0,0 +1,34 @@ +--- +settings: + chains: + relay_chain: &relay_chain + wsPort: 9700 + collectives_parachain: &collectives_parachain + wsPort: 9710 + paraId: &cp_id 1001 + variables: + accounts: + alice_signer: &alice_signer //Alice + alice_account32: &cp_alice_acc32 '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d' + +tests: + - name: Alice fails to join an the Alliance, since it is not initialized yet. + its: + - name: Alice joins alliance + actions: + - extrinsics: # Relay Chain sets supported version for Asset Parachain + - chain: *collectives_parachain + signer: *alice_signer + pallet: alliance + call: joinAlliance + args: [] + events: + - name: system.ExtrinsicFailed + attributes: + - type: SpRuntimeDispatchError + key: dispatchError + # TODO assert with Alliance Error variant - alliance.AllianceNotYetInitialized + # issue - https://github.com/paritytech/parachains-integration-tests/issues/59 + value: {"Module":{"index":"50","error":"0x00000000"}} + + diff --git a/parachains/integration-tests/collectives/1_alliance/1_init_alliance.yml b/parachains/integration-tests/collectives/1_alliance/1_init_alliance.yml new file mode 100644 index 00000000000..152cf0c9803 --- /dev/null +++ b/parachains/integration-tests/collectives/1_alliance/1_init_alliance.yml @@ -0,0 +1,240 @@ +--- +settings: + chains: + relay_chain: &relay_chain + wsPort: 9700 + collectives_parachain: &collectives_parachain + wsPort: 9710 + paraId: &coll_para_id 1001 + variables: + accounts: + alice_signer: &acc_alice_signer //Alice + alice_account32: &acc_alice_acc32 "0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d" + liam_signer: &acc_liam_signer //Liam + liam_account32: &acc_liam_acc32 "0x3614671a5de540d891eb8c4939c8153a4aa790602b347c18177b86d0fc546221" + olivia_signer: &acc_olivia_signer //Olivia + olivia_account32: &acc_olivia_acc32 "0x24ee8a659c6716fe9f7cb4e9e028602aa12867654ca02737da9171b7ff697d5c" + noah_signer: &acc_noah_signer //Noah + noah_account32: &acc_noah_acc32 "0x9c6ad3bc3aa2f1b2e837898e6da9980445f7ef8b3eee0b8c8e305f8cfae68517" + emma_signer: &acc_emma_signer //Emma + emma_account32: &acc_emma_acc32 "0x8ac272b333ba1127c8db57fa777ec820b24598a236efa648caf0d26d86f64572" + james_signer: &acc_james_signer //James + james_account32: &acc_james_acc32 "0x9a52805151a0b5effc084af9264011139872a21a3950cb9ae0b2955c4bf92c18" + ava_signer: &acc_ava_signer //Ava + ava_account32: &acc_ava_acc32 "0x348ef0b8776adbc09c862ddc29b1d193b9e24738e54eea3b0609c83856dc101c" + mia_signer: &acc_mia_signer //Mia + mia_account32: &acc_mia_acc32 "0xaebf15374cf7e758d10232514c569a7abf81cc1b8f1e81a73dbc608a0e335264" + decodedCalls: + init_alliance_members: + chain: *collectives_parachain + pallet: alliance + call: initMembers + args: [ + [ + *acc_liam_acc32, + *acc_olivia_acc32, + *acc_noah_acc32 + ], + [ + *acc_emma_acc32, + *acc_james_acc32, + *acc_ava_acc32 + ], + [ + *acc_mia_acc32 + ] + ] + init_alliance_voting_members: + chain: *collectives_parachain + pallet: alliance + call: initMembers + args: [ + [ + *acc_liam_acc32, + *acc_olivia_acc32, + *acc_noah_acc32, + *acc_emma_acc32, + *acc_james_acc32, + *acc_ava_acc32, + *acc_mia_acc32 + ], + [], + [] + ] + disband: + chain: *collectives_parachain + pallet: alliance + call: disband + args: [ + { + votingMembers: 6, + allyMembers: 1 + } + ] + +tests: + - name: Alliance initiated with the root call, second init call fails. Alliance disband and set again. + its: + - name: Alliance initiated, founders and fellows are set. + actions: + - extrinsics: + - chain: *relay_chain + signer: *acc_alice_signer + sudo: true + pallet: xcmPallet + call: send + args: [ + { v1: { parents: 0, interior: { x1: { parachain: *coll_para_id }}}}, # destination + { + v2: [ # message + { + Transact: { + originType: Superuser, + requireWeightAtMost: 1000000000, # 1_000_000_000 + call: $init_alliance_members + } + } + ] + } + ] + events: + - name: sudo.Sudid + attributes: + - type: Result + value: Ok + - name: xcmPallet.Sent + - name: alliance.MembersInitialized + chain: *collectives_parachain + - name: dmpQueue.ExecutedDownward + chain: *collectives_parachain + attributes: + - type: XcmV2TraitsOutcome + xcmOutcome: Complete + # we don't know how much weight will be spent for custom call within Transact operation + # value: skipping the assertion + + - name: Alliance init call fails. + actions: + - extrinsics: + - chain: *relay_chain + signer: *acc_alice_signer + sudo: true + pallet: xcmPallet + call: send + args: [ + { v1: { parents: 0, interior: { x1: { parachain: *coll_para_id }}}}, # destination + { + v2: [ # message + { + Transact: { + originType: Superuser, + requireWeightAtMost: 1000000000, # 1_000_000_000 + call: $init_alliance_voting_members + } + } + ] + } + ] + events: + # TODO can not currently assert variant AllianceAlreadyInitialized, XCM Transact fails silently + # issue - https://github.com/paritytech/polkadot/issues/4623 + # Next test with a disband call will fail, if this call does not fail, + # since a witness data from a disband call will be invalid. + - name: sudo.Sudid + attributes: + - type: Result + value: Ok + - name: xcmPallet.Sent + - name: dmpQueue.ExecutedDownward + chain: *collectives_parachain + attributes: + - type: XcmV2TraitsOutcome + xcmOutcome: Complete + # the call must fail, the weight spent is static + value: 2,000,000,000 + + - name: Alliance disbanded and initialized again. + actions: + - extrinsics: + - chain: *relay_chain + signer: *acc_alice_signer + sudo: true + pallet: xcmPallet + call: send + args: [ + { v1: { parents: 0, interior: { x1: { parachain: *coll_para_id }}}}, # destination + { + v2: [ # message + { + Transact: { + originType: Superuser, + requireWeightAtMost: 100000000000, # 100_000_000_000 + call: $disband + } + } + ] + } + ] + events: + - name: sudo.Sudid + attributes: + - type: Result + value: Ok + - name: xcmPallet.Sent + - name: alliance.AllianceDisbanded + chain: *collectives_parachain + attributes: + - type: u32 + key: votingMembers + value: 6 + - type: u32 + key: allyMembers + value: 1 + - type: u32 + key: unreserved + value: 0 + - name: dmpQueue.ExecutedDownward + chain: *collectives_parachain + attributes: + - type: XcmV2TraitsOutcome + xcmOutcome: Complete + # we don't know how much weight will be spent for custom call within Transact operation + # value: skipping the assertion + - name: Alliance initiated, founders and fellows are set. + actions: + - extrinsics: + - chain: *relay_chain + signer: *acc_alice_signer + sudo: true + pallet: xcmPallet + call: send + args: [ + { v1: { parents: 0, interior: { x1: { parachain: *coll_para_id }}}}, # destination + { + v2: [ # message + { + Transact: { + originType: Superuser, + requireWeightAtMost: 1000000000, # 1_000_000_000 + call: $init_alliance_members + } + } + ] + } + ] + events: + - name: sudo.Sudid + attributes: + - type: Result + value: Ok + - name: xcmPallet.Sent + - name: alliance.MembersInitialized + chain: *collectives_parachain + - name: dmpQueue.ExecutedDownward + chain: *collectives_parachain + attributes: + - type: XcmV2TraitsOutcome + xcmOutcome: Complete + # we don't know how much weight will be spent for custom call within Transact operation + # value: skipping the assertion + diff --git a/parachains/integration-tests/collectives/1_alliance/2_join_alliance_fails.yml b/parachains/integration-tests/collectives/1_alliance/2_join_alliance_fails.yml new file mode 100644 index 00000000000..574df004512 --- /dev/null +++ b/parachains/integration-tests/collectives/1_alliance/2_join_alliance_fails.yml @@ -0,0 +1,34 @@ +--- +settings: + chains: + relay_chain: &relay_chain + wsPort: 9700 + collectives_parachain: &collectives_parachain + wsPort: 9710 + paraId: &cp_id 1001 + variables: + accounts: + liam_signer: &acc_liam_signer //Liam + liam_account32: &acc_liam_acc32 "0x3614671a5de540d891eb8c4939c8153a4aa790602b347c18177b86d0fc546221" + +tests: + - name: Liam fails to join an the Alliance, Liam is already a member. + its: + - name: Alice joins alliance + actions: + - extrinsics: # Relay Chain sets supported version for Asset Parachain + - chain: *collectives_parachain + signer: *acc_liam_signer + pallet: alliance + call: joinAlliance + args: [] + events: + - name: system.ExtrinsicFailed + attributes: + - type: SpRuntimeDispatchError + key: dispatchError + # TODO assert with Alliance Error variant - alliance.AllianceNotYetInitialized + # issue - https://github.com/paritytech/parachains-integration-tests/issues/59 + value: {"Module":{"index":"50","error":"0x02000000"}} + + diff --git a/parachains/integration-tests/collectives/1_alliance/3_kick_member.yml b/parachains/integration-tests/collectives/1_alliance/3_kick_member.yml new file mode 100644 index 00000000000..2384aa55a2a --- /dev/null +++ b/parachains/integration-tests/collectives/1_alliance/3_kick_member.yml @@ -0,0 +1,182 @@ +--- +settings: + chains: + relay_chain: &relay_chain + wsPort: 9700 + collectives_parachain: &collectives_parachain + wsPort: 9710 + paraId: &cp_id 1001 + variables: + init_teleport_amount: &init_teleport_amount 20000000000000 # 20_000_000_000_000 + weight_to_send_teleport: &weight_to_send_teleport 2,000,000,000 # must be same for both chains + weight_to_receive_teleport: &weight_to_receive_teleport 4,000,000,000 # must be same for both chains + accounts: + alice_signer: &acc_alice_signer //Alice + treasury_account32: &acc_treasury_acc32 '0x6d6f646c70792f74727372790000000000000000000000000000000000000000' + alice_account32: &acc_alice_acc32 '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d' + alice_ss58: &acc_alice_ss58 '15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5' + decodedCalls: + alliance_kick_member: + chain: *collectives_parachain + pallet: alliance + call: kickMember + args: [ + {Id: *acc_alice_acc32} + ] + +tests: + - name: Member kicked out, deposited assets slashed and teleported to Relay Chain treasury. + before: + - name: DEPENDENCY | Do a 'limitedTeleportAssets' from the Relay Chain to the Collectives Parachain + actions: + - extrinsics: + - chain: *relay_chain + signer: *acc_alice_signer + pallet: xcmPallet + call: limitedTeleportAssets + args: [ + { v1: { 0, interior: { x1: { parachain: *cp_id }}}}, # destination + { v1: { parents: 0, interior: { x1: { accountId32: { network: { any: true }, id: *acc_alice_acc32 }}}}}, # beneficiary + { v1: [ { id: { concrete: { 0, interior: { here: true }}}, fun: { fungible: *init_teleport_amount }} ] }, # assets + 0, # feeAssetItem + { unlimited: true } # weightLimit + ] + events: + - name: xcmPallet.Attempted + attributes: + - type: XcmV2TraitsOutcome + xcmOutcome: Complete + value: *weight_to_send_teleport + - name: balances.Deposit + chain: *collectives_parachain + attributes: + - type: AccountId32 + key: who + value: *acc_alice_ss58 + - type: u128 + key: amount + value: 20,000,000,000,000 + - name: dmpQueue.ExecutedDownward + chain: *collectives_parachain + attributes: + - type: XcmV2TraitsOutcome + xcmOutcome: Complete + # must be static + value: *weight_to_receive_teleport + - name: Get the balances of the Relay Chain's treasury & Collectives parachain's future alliance member + actions: + - queries: + balance_rc_treasury_before: + chain: *relay_chain + pallet: system + call: account + args: [ *acc_treasury_acc32 ] + balance_cp_alice_before: + chain: *collectives_parachain + pallet: system + call: account + args: [ *acc_alice_acc32 ] + its: + - name: Alice joins alliance + actions: + - extrinsics: + - chain: *collectives_parachain + signer: *acc_alice_signer + pallet: alliance + call: joinAlliance + args: [] + events: + - name: balances.Reserved + chain: *collectives_parachain + attributes: + - type: AccountId32 + key: who + value: *acc_alice_ss58 + - type: u128 + key: amount + value: 10,000,000,000,000 + - name: alliance.NewAllyJoined + attributes: + - type: AccountId32 + key: ally + value: *acc_alice_ss58 + - queries: + balance_cp_alice_after: + chain: *collectives_parachain + pallet: system + call: account + args: [ *acc_alice_acc32 ] + - name: Alice deposit check, balance decreased + actions: + - asserts: + balanceDecreased: + args: [ + { + balances: { + before: $balance_cp_alice_before, + after: $balance_cp_alice_after, + } + # TODO (P3) set `amount` and `fee` for more strict assert + } + ] + - name: Kick Alice from alliance + actions: + - extrinsics: # Asset Parachain sets supported version for Relay Chain through it + - chain: *relay_chain + signer: *acc_alice_signer + sudo: true + pallet: xcmPallet + call: send + args: [ + { v1: { parents: 0, interior: { x1: { parachain: *cp_id }}}}, # destination + { + v2: [ #message + { + Transact: { + originType: Superuser, + requireWeightAtMost: 1000000000, + call: $alliance_kick_member + } + } + ] + } + ] + events: + - name: sudo.Sudid + attributes: + - type: Result + value: Ok + - name: xcmPallet.Sent + - name: alliance.MemberKicked + chain: *collectives_parachain + attributes: + - type: AccountId32 + key: member + value: *acc_alice_ss58 + - name: dmpQueue.ExecutedDownward + chain: *collectives_parachain + attributes: + - type: XcmV2TraitsOutcome + xcmOutcome: Complete + # must be static + value: *weight_to_send_teleport + + - queries: + balance_rc_treasury_after: + chain: *relay_chain + pallet: system + call: account + args: [ *acc_treasury_acc32 ] + - name: Slashed balance appears on the relay chain treasury account + actions: + - asserts: + balanceIncreased: + args: [ + { + balances: { + before: $balance_rc_treasury_before, + after: $balance_rc_treasury_after, + } + # TODO (P3) set `amount` and `fee` for more strict assert + } + ] diff --git a/parachains/integration-tests/collectives/config.toml b/parachains/integration-tests/collectives/config.toml new file mode 100644 index 00000000000..9d138be11ba --- /dev/null +++ b/parachains/integration-tests/collectives/config.toml @@ -0,0 +1,33 @@ +[relaychain] +default_command = "./bin/polkadot" +default_args = [ "-lparachain=trace", "-lxcm=trace" ] +chain = "polkadot-local" + + [[relaychain.nodes]] + name = "alice" + ws_port = 9700 + validator = true + + [[relaychain.nodes]] + name = "bob" + validator = true + + [[relaychain.nodes]] + name = "charlie" + validator = true + +[[parachains]] +id = 1001 +chain = "collectives-polkadot-local" +cumulus_based = true + + [[parachains.collators]] + name = "collator1" + ws_port = 9710 + command = "./bin/polkadot-parachain" + args = ["-lxcm=trace"] + + [[parachains.collators]] + name = "collator2" + command = "./bin/polkadot-parachain" + args = ["-lxcm=trace"]