git.delta.rocks / unique-network / refs/commits / d32fbd9e75f4

difftreelog

source

js-packages/tests/sub/appPromotion/appPromotion.seqtest.ts4.4 KiBsourcehistory
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 type {IKeyringPair} from '@polkadot/types/types';18import {itSub, usingPlaygrounds, Pallets, requirePalletsOrSkip} from '@unique/test-utils/util.js';19import {expect} from '@unique/test-utils/eth/util.js';2021let superuser: IKeyringPair;22let donor: IKeyringPair;23let palletAdmin: IKeyringPair;2425describe('App promotion', () => {26  before(async function () {27    await usingPlaygrounds(async (helper, privateKey) => {28      requirePalletsOrSkip(this, helper, [Pallets.AppPromotion]);29      superuser = await privateKey('//Alice');30      donor = await privateKey({url: import.meta.url});31      palletAdmin = await privateKey('//PromotionAdmin');32      const api = helper.getApi();33      await helper.signTransaction(superuser, api.tx.sudo.sudo(api.tx.appPromotion.setAdminAddress({Substrate: palletAdmin.address})));34    });35  });3637  after(async function () {38    await usingPlaygrounds(async (helper) => {39      if(helper.fetchMissingPalletNames([Pallets.AppPromotion]).length != 0) return;40      const api = helper.getApi();41      await helper.signTransaction(superuser, api.tx.sudo.sudo(api.tx.appPromotion.setAdminAddress({Substrate: palletAdmin.address})));42    });43  });4445  describe('admin adress', () => {46    itSub('can be set by sudo only', async ({helper}) => {47      const api = helper.getApi();48      const [nonAdmin] = await helper.arrange.createAccounts([10n], donor);49      // nonAdmin can not set admin not from himself nor as a sudo50      await expect(helper.signTransaction(nonAdmin, api.tx.appPromotion.setAdminAddress({Substrate: nonAdmin.address}))).to.be.rejected;51      await expect(helper.signTransaction(nonAdmin, api.tx.sudo.sudo(api.tx.appPromotion.setAdminAddress({Substrate: nonAdmin.address})))).to.be.rejected;52    });5354    itSub('can be any valid CrossAccountId', async ({helper}) => {55      // We are not going to set an eth address as a sponsor,56      // but we do want to check, it doesn't break anything;57      const api = helper.getApi();58      const [account] = await helper.arrange.createAccounts([10n], donor);59      const ethAccount = helper.address.substrateToEth(account.address);60      // Alice sets Ethereum address as a sudo. Then Substrate address back...61      await expect(helper.signTransaction(superuser, api.tx.sudo.sudo(api.tx.appPromotion.setAdminAddress({Ethereum: ethAccount})))).to.be.fulfilled;62      await expect(helper.signTransaction(superuser, api.tx.sudo.sudo(api.tx.appPromotion.setAdminAddress({Substrate: palletAdmin.address})))).to.be.fulfilled;6364      // ...It doesn't break anything;65      const collection = await helper.nft.mintCollection(account, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});66      await expect(helper.signTransaction(account, api.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.rejected;67    });6869    itSub('can be reassigned', async ({helper}) => {70      const api = helper.getApi();71      const [oldAdmin, newAdmin, collectionOwner] = await helper.arrange.createAccounts([10n, 10n, 10n], donor);72      const collection  = await helper.nft.mintCollection(collectionOwner, {name: 'New', description: 'New Collection', tokenPrefix: 'Promotion'});7374      await expect(helper.signTransaction(superuser, api.tx.sudo.sudo(api.tx.appPromotion.setAdminAddress({Substrate: oldAdmin.address})))).to.be.fulfilled;75      await expect(helper.signTransaction(superuser, api.tx.sudo.sudo(api.tx.appPromotion.setAdminAddress({Substrate: newAdmin.address})))).to.be.fulfilled;76      await expect(helper.signTransaction(oldAdmin, api.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.rejected;7778      await expect(helper.signTransaction(newAdmin, api.tx.appPromotion.sponsorCollection(collection.collectionId))).to.be.fulfilled;79    });80  });81});82