difftreelog
test add configuration to pallet-presence
in: master
1 file changed
tests/src/pallet-presence.test.tsdiffbeforeafterboth1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617import {ApiPromise} from '@polkadot/api';18import {expect} from 'chai';19import usingApi from './substrate/substrate-api';2021function getModuleNames(api: ApiPromise): string[] {22 return api.runtimeMetadata.asLatest.pallets.map(m => m.name.toString().toLowerCase());23}2425// Pallets that must always be present26const requiredPallets = [27 'balances',28 'common',29 'randomnesscollectiveflip',30 'timestamp',31 'transactionpayment',32 'treasury',33 'structure',34 'system',35 'vesting',36 'parachainsystem',37 'parachaininfo',38 'evm',39 'evmcodersubstrate',40 'evmcontracthelpers',41 'evmmigration',42 'evmtransactionpayment',43 'ethereum',44 'fungible',45 'xcmpqueue',46 'polkadotxcm',47 'cumulusxcm',48 'dmpqueue',49 'inflation',50 'unique',51 'nonfungible',52 'charging',53];5455// Pallets that depend on consensus and governance configuration56const consensusPallets = [57 'sudo',58 'aura',59 'auraext',60];6162describe('Pallet presence', () => {63 before(async () => {64 await usingApi(async api => {65 const chain = await api.rpc.system.chain();6667 const refungible = 'refungible';68 const scheduler = 'scheduler';69 const rmrkPallets = ['rmrkcore', 'rmrkequip'];7071 if (chain.eq('OPAL by UNIQUE')) {72 requiredPallets.push(refungible, scheduler, ...rmrkPallets);73 } else if (chain.eq('QUARTZ by UNIQUE')) {74 // Insert Quartz additional pallets here75 } else if (chain.eq('UNIQUE')) {76 // Insert Unique additional pallets here77 }78 });79 });8081 it('Required pallets are present', async () => {82 await usingApi(async api => {83 for (let i=0; i<requiredPallets.length; i++) {84 expect(getModuleNames(api)).to.include(requiredPallets[i]);85 }86 });87 });88 it('Governance and consensus pallets are present', async () => {89 await usingApi(async api => {90 for (let i=0; i<consensusPallets.length; i++) {91 expect(getModuleNames(api)).to.include(consensusPallets[i]);92 }93 });94 });95 it('No extra pallets are included', async () => {96 await usingApi(async api => {97 expect(getModuleNames(api).sort()).to.be.deep.equal([...requiredPallets, ...consensusPallets].sort());98 });99 });100});1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617import {ApiPromise} from '@polkadot/api';18import {expect} from 'chai';19import usingApi from './substrate/substrate-api';2021function getModuleNames(api: ApiPromise): string[] {22 return api.runtimeMetadata.asLatest.pallets.map(m => m.name.toString().toLowerCase());23}2425// Pallets that must always be present26const requiredPallets = [27 'balances',28 'common',29 'randomnesscollectiveflip',30 'timestamp',31 'transactionpayment',32 'treasury',33 'structure',34 'system',35 'vesting',36 'parachainsystem',37 'parachaininfo',38 'evm',39 'evmcodersubstrate',40 'evmcontracthelpers',41 'evmmigration',42 'evmtransactionpayment',43 'ethereum',44 'fungible',45 'xcmpqueue',46 'polkadotxcm',47 'cumulusxcm',48 'dmpqueue',49 'inflation',50 'unique',51 'nonfungible',52 'charging',53 'configuration',54];5556// Pallets that depend on consensus and governance configuration57const consensusPallets = [58 'sudo',59 'aura',60 'auraext',61];6263describe('Pallet presence', () => {64 before(async () => {65 await usingApi(async api => {66 const chain = await api.rpc.system.chain();6768 const refungible = 'refungible';69 const scheduler = 'scheduler';70 const rmrkPallets = ['rmrkcore', 'rmrkequip'];7172 if (chain.eq('OPAL by UNIQUE')) {73 requiredPallets.push(refungible, scheduler, ...rmrkPallets);74 } else if (chain.eq('QUARTZ by UNIQUE')) {75 // Insert Quartz additional pallets here76 } else if (chain.eq('UNIQUE')) {77 // Insert Unique additional pallets here78 }79 });80 });8182 it('Required pallets are present', async () => {83 await usingApi(async api => {84 for (let i=0; i<requiredPallets.length; i++) {85 expect(getModuleNames(api)).to.include(requiredPallets[i]);86 }87 });88 });89 it('Governance and consensus pallets are present', async () => {90 await usingApi(async api => {91 for (let i=0; i<consensusPallets.length; i++) {92 expect(getModuleNames(api)).to.include(consensusPallets[i]);93 }94 });95 });96 it('No extra pallets are included', async () => {97 await usingApi(async api => {98 expect(getModuleNames(api).sort()).to.be.deep.equal([...requiredPallets, ...consensusPallets].sort());99 });100 });101});