difftreelog
tests: adminTransferAndBurn migrated
in: master
2 files changed
tests/package.jsondiffbeforeafterboth--- a/tests/package.json
+++ b/tests/package.json
@@ -48,6 +48,7 @@
"testRemoveCollectionAdmin": "mocha --timeout 9999999 -r ts-node/register ./**/removeCollectionAdmin.test.ts",
"testRemoveCollectionSponsor": "mocha --timeout 9999999 -r ts-node/register ./**/removeCollectionSponsor.test.ts",
"testRemoveFromAllowList": "mocha --timeout 9999999 -r ts-node/register ./**/removeFromAllowList.test.ts",
+ "testAllowLists": "mocha --timeout 9999999 -r ts-node/register ./**/allowLists.test.ts",
"testConnection": "mocha --timeout 9999999 -r ts-node/register ./**/connection.test.ts",
"testContracts": "mocha --timeout 9999999 -r ts-node/register ./**/contracts.test.ts",
"testCreateItem": "mocha --timeout 9999999 -r ts-node/register ./**/createItem.test.ts",
tests/src/adminTransferAndBurn.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 {IKeyringPair} from '@polkadot/types/types';18import chai from 'chai';19import chaiAsPromised from 'chai-as-promised';20import {default as usingApi} from './substrate/substrate-api';21import {22 createCollectionExpectSuccess,23 createItemExpectSuccess,24 transferExpectFailure,25 transferFromExpectSuccess,26 burnItemExpectFailure,27 burnFromExpectSuccess,28 setCollectionLimitsExpectSuccess,29} from './util/helpers';3031chai.use(chaiAsPromised);32const expect = chai.expect;3334describe('Integration Test: ownerCanTransfer allows admins to use only transferFrom/burnFrom:', () => {35 let alice: IKeyringPair;36 let bob: IKeyringPair;37 let charlie: IKeyringPair;3839 before(async () => {40 await usingApi(async (api, privateKeyWrapper) => {41 alice = privateKeyWrapper('//Alice');42 bob = privateKeyWrapper('//Bob');43 charlie = privateKeyWrapper('//Charlie');44 });45 });4647 it('admin transfers other user\'s token', async () => {48 await usingApi(async () => {49 const collectionId = await createCollectionExpectSuccess();50 await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});5152 const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT', {Substrate: bob.address});5354 await transferExpectFailure(collectionId, tokenId, alice, charlie);5556 await transferFromExpectSuccess(collectionId, tokenId, alice, bob, charlie, 1);57 });58 });5960 it('admin burns other user\'s token', async () => {61 await usingApi(async () => {62 const collectionId = await createCollectionExpectSuccess();63 await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});6465 const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT', {Substrate: bob.address});6667 await burnItemExpectFailure(alice, collectionId, tokenId);6869 await burnFromExpectSuccess(alice, bob, collectionId, tokenId);70 });71 });72});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 {IKeyringPair} from '@polkadot/types/types';18import chai from 'chai';19import chaiAsPromised from 'chai-as-promised';20import {default as usingApi} from './substrate/substrate-api';21import {22 createCollectionExpectSuccess,23 createItemExpectSuccess,24 transferExpectFailure,25 transferFromExpectSuccess,26 burnItemExpectFailure,27 burnFromExpectSuccess,28 setCollectionLimitsExpectSuccess,29} from './util/helpers';30import { usingPlaygrounds } from './util/playgrounds';3132chai.use(chaiAsPromised);33const expect = chai.expect;3435let donor: IKeyringPair;3637before(async () => {38 await usingPlaygrounds(async (_, privateKeyWrapper) => {39 donor = privateKeyWrapper('//Alice');40 });41});4243describe('Integration Test: ownerCanTransfer allows admins to use only transferFrom/burnFrom:', () => {44 let alice: IKeyringPair;45 let bob: IKeyringPair;46 let charlie: IKeyringPair;4748 before(async () => {49 await usingPlaygrounds(async (helper) => {50 [alice, bob, charlie] = await helper.arrange.createAccounts([10n, 10n, 10n], donor);51 });52 });5354 it('admin transfers other user\'s token', async () => {55 await usingPlaygrounds(async (helper) => {56 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'COL'});57 const setLimitsResult = await helper.collection.setLimits(alice, collectionId, {ownerCanTransfer: true});58 const limits = await helper.collection.getEffectiveLimits(collectionId);59 expect(limits.ownerCanTransfer).to.be.true;6061 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: bob.address});62 const transferResult = async () => helper.nft.transferToken(alice, collectionId, tokenId, {Substrate: charlie.address});63 await expect(transferResult()).to.be.rejected;6465 const res = await helper.nft.transferTokenFrom(alice, collectionId, tokenId, {Substrate: bob.address}, {Substrate: charlie.address});66 const newTokenOwner = await helper.nft.getTokenOwner(collectionId, tokenId);67 expect(newTokenOwner.Substrate).to.be.equal(charlie.address);68 });69 });7071 it('admin burns other user\'s token', async () => {72 await usingPlaygrounds(async (helper) => {73 const {collectionId} = await helper.nft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'COL'});7475 const setLimitsResult = await helper.collection.setLimits(alice, collectionId, {ownerCanTransfer: true});76 const limits = await helper.collection.getEffectiveLimits(collectionId);77 expect(limits.ownerCanTransfer).to.be.true;7879 const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: bob.address});80 const burnTxFailed = async () => helper.nft.burnToken(alice, collectionId, tokenId);8182 await expect(burnTxFailed()).to.be.rejected;8384 const burnResult = await helper.nft.burnToken(bob, collectionId, tokenId);85 const token = await helper.nft.getToken(collectionId, tokenId);86 expect(token).to.be.null;87 });88 });89});