git.delta.rocks / unique-network / refs/commits / 0f16e4497b3b

difftreelog

source

tests/src/removeCollectionAdmin.test.ts6.2 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 chai from 'chai';18import chaiAsPromised from 'chai-as-promised';19import privateKey from './substrate/privateKey';20import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';21import {createCollectionExpectSuccess, destroyCollectionExpectSuccess, getAdminList, normalizeAccountId, queryCollectionExpectSuccess} from './util/helpers';2223chai.use(chaiAsPromised);24const expect = chai.expect;2526describe('Integration Test removeCollectionAdmin(collection_id, account_id):', () => {27  it('Remove collection admin.', async () => {28    await usingApi(async (api, privateKeyWrapper) => {29      const collectionId = await createCollectionExpectSuccess();30      const alice = privateKeyWrapper('//Alice');31      const bob = privateKeyWrapper('//Bob');32      const collection = await queryCollectionExpectSuccess(api, collectionId);33      expect(collection.owner.toString()).to.be.deep.eq(alice.address);34      // first - add collection admin Bob35      const addAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));36      await submitTransactionAsync(alice, addAdminTx);3738      const adminListAfterAddAdmin = await getAdminList(api, collectionId);39      expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));4041      // then remove bob from admins of collection42      const removeAdminTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));43      await submitTransactionAsync(alice, removeAdminTx);4445      const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);46      expect(adminListAfterRemoveAdmin).not.to.be.deep.contains(normalizeAccountId(bob.address));47    });48  });4950  it('Remove admin from collection that has no admins', async () => {51    await usingApi(async (api, privateKeyWrapper) => {52      const alice = privateKeyWrapper('//Alice');53      const collectionId = await createCollectionExpectSuccess();5455      const adminListBeforeAddAdmin = await getAdminList(api, collectionId);56      expect(adminListBeforeAddAdmin).to.have.lengthOf(0);5758      const tx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(alice.address));59      await submitTransactionAsync(alice, tx);60    });61  });62});6364describe('Negative Integration Test removeCollectionAdmin(collection_id, account_id):', () => {65  it('Can\'t remove collection admin from not existing collection', async () => {66    await usingApi(async (api, privateKeyWrapper) => {67      // tslint:disable-next-line: no-bitwise68      const collectionId = (1 << 32) - 1;69      const alice = privateKeyWrapper('//Alice');70      const bob = privateKeyWrapper('//Bob');7172      const changeOwnerTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));73      await expect(submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected;7475      // Verifying that nothing bad happened (network is live, new collections can be created, etc.)76      await createCollectionExpectSuccess();77    });78  });7980  it('Can\'t remove collection admin from deleted collection', async () => {81    await usingApi(async (api, privateKeyWrapper) => {82      // tslint:disable-next-line: no-bitwise83      const collectionId = await createCollectionExpectSuccess();84      const alice = privateKeyWrapper('//Alice');85      const bob = privateKeyWrapper('//Bob');8687      await destroyCollectionExpectSuccess(collectionId);8889      const changeOwnerTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));90      await expect(submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected;9192      // Verifying that nothing bad happened (network is live, new collections can be created, etc.)93      await createCollectionExpectSuccess();94    });95  });9697  it('Regular user can\'t remove collection admin', async () => {98    await usingApi(async (api) => {99      const collectionId = await createCollectionExpectSuccess();100      const alice = privateKey('//Alice');101      const bob = privateKey('//Bob');102      const charlie = privateKey('//Charlie');103104      const addAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));105      await submitTransactionAsync(alice, addAdminTx);106107      const changeOwnerTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));108      await expect(submitTransactionExpectFailAsync(charlie, changeOwnerTx)).to.be.rejected;109110      // Verifying that nothing bad happened (network is live, new collections can be created, etc.)111      await createCollectionExpectSuccess();112    });113  });114115  it('Admin can\'t remove collection admin.', async () => {116    await usingApi(async (api) => {117      const collectionId = await createCollectionExpectSuccess();118      const alice = privateKey('//Alice');119      const bob = privateKey('//Bob');120      const charlie = privateKey('//Charlie');121122      const adminListAfterAddAdmin = await getAdminList(api, collectionId);123      expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));124125      const removeAdminTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));126      await expect(submitTransactionAsync(charlie, removeAdminTx)).to.be.rejected;127128      const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);129      expect(adminListAfterRemoveAdmin).to.be.deep.contains(normalizeAccountId(bob.address));130      expect(adminListAfterRemoveAdmin).to.be.deep.contains(normalizeAccountId(charlie.address));131    });132  });133});