difftreelog
Use executeExtrinsic
in: master
3 files changed
tests/src/burnItem.test.tsdiffbeforeafterboth--- a/tests/src/burnItem.test.ts
+++ b/tests/src/burnItem.test.ts
@@ -182,17 +182,16 @@
});
itSub('Zero burn NFT', async ({helper}) => {
- const api = helper.getApi();
const collection = await helper.nft.mintCollection(alice, {name: 'Coll', description: 'Desc', tokenPrefix: 'T'});
const tokenAlice = await collection.mintToken(alice, {Substrate: alice.address});
const tokenBob = await collection.mintToken(alice, {Substrate: bob.address});
// 1. Zero burn of own tokens allowed:
- await helper.signTransaction(alice, api.tx.unique.burnItem(collection.collectionId, tokenAlice.tokenId, 0));
+ await helper.executeExtrinsic(alice, 'api.tx.unique.burnItem', [collection.collectionId, tokenAlice.tokenId, 0]);
// 2. Zero burn of non-owned tokens not allowed:
- await expect(helper.signTransaction(alice, api.tx.unique.burnItem(collection.collectionId, tokenBob.tokenId, 0))).to.be.rejectedWith('common.NoPermission');
+ await expect(helper.executeExtrinsic(alice, 'api.tx.unique.burnItem', [collection.collectionId, tokenBob.tokenId, 0])).to.be.rejectedWith('common.NoPermission');
// 3. Zero burn of non-existing tokens not allowed:
- await expect(helper.signTransaction(alice, api.tx.unique.burnItem(collection.collectionId, 9999, 0))).to.be.rejectedWith('common.TokenNotFound');
+ await expect(helper.executeExtrinsic(alice, 'api.tx.unique.burnItem', [collection.collectionId, 9999, 0])).to.be.rejectedWith('common.TokenNotFound');
expect(await tokenAlice.doesExist()).to.be.true;
expect(await tokenAlice.getOwner()).to.deep.eq({Substrate: alice.address});
expect(await tokenBob.getOwner()).to.deep.eq({Substrate: bob.address});
@@ -211,11 +210,11 @@
await approvedNft.approve(bob, {Substrate: alice.address});
// 1. Zero burnFrom of non-existing tokens not allowed:
- await expect(helper.signTransaction(alice, api.tx.unique.burnFrom(collection.collectionId, {Substrate: bob.address}, 9999, 0))).to.be.rejectedWith('common.ApprovedValueTooLow');
+ await expect(helper.executeExtrinsic(alice, 'api.tx.unique.burnFrom', [collection.collectionId, {Substrate: bob.address}, 9999, 0])).to.be.rejectedWith('common.ApprovedValueTooLow');
// 2. Zero burnFrom of not approved tokens not allowed:
- await expect(helper.signTransaction(alice, api.tx.unique.burnFrom(collection.collectionId, {Substrate: bob.address}, notApprovedNft.tokenId, 0))).to.be.rejectedWith('common.NoPermission');
+ await expect(helper.executeExtrinsic(alice, 'api.tx.unique.burnFrom', [collection.collectionId, {Substrate: bob.address}, notApprovedNft.tokenId, 0])).to.be.rejectedWith('common.NoPermission');
// 3. Zero burnFrom of approved tokens allowed:
- await helper.signTransaction(alice, api.tx.unique.burnFrom(collection.collectionId, {Substrate: bob.address}, approvedNft.tokenId, 0));
+ await helper.executeExtrinsic(alice, 'api.tx.unique.burnFrom', [collection.collectionId, {Substrate: bob.address}, approvedNft.tokenId, 0]);
// 4.1 approvedNft still approved:
expect(await approvedNft.isApproved({Substrate: alice.address})).to.be.true;
tests/src/transfer.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 {itEth, usingEthPlaygrounds} from './eth/util';19import {itSub, Pallets, usingPlaygrounds, expect} from './util';2021describe('Integration Test Transfer(recipient, collection_id, item_id, value)', () => {22 let donor: IKeyringPair;23 let alice: IKeyringPair;24 let bob: IKeyringPair;2526 before(async () => {27 await usingPlaygrounds(async (helper, privateKey) => {28 donor = await privateKey({filename: __filename});29 [alice, bob] = await helper.arrange.createAccounts([50n, 10n], donor);30 });31 });32 33 itSub('Balance transfers and check balance', async ({helper}) => {34 const alicesBalanceBefore = await helper.balance.getSubstrate(alice.address);35 const bobsBalanceBefore = await helper.balance.getSubstrate(bob.address);3637 expect(await helper.balance.transferToSubstrate(alice, bob.address, 1n)).to.be.true;3839 const alicesBalanceAfter = await helper.balance.getSubstrate(alice.address);40 const bobsBalanceAfter = await helper.balance.getSubstrate(bob.address);4142 expect(alicesBalanceAfter < alicesBalanceBefore).to.be.true;43 expect(bobsBalanceAfter > bobsBalanceBefore).to.be.true;44 });4546 itSub('Inability to pay fees error message is correct', async ({helper}) => {47 const [zero] = await helper.arrange.createAccounts([0n], donor);4849 // console.error = () => {};50 // The following operation throws an error into the console and the logs. Pay it no heed as long as the test succeeds.51 await expect(helper.balance.transferToSubstrate(zero, donor.address, 1n))52 .to.be.rejectedWith('Inability to pay some fees , e.g. account balance too low');53 });5455 itSub('[nft] User can transfer owned token', async ({helper}) => {56 const collection = await helper.nft.mintCollection(alice, {name: 'Transfer-1-NFT', description: '', tokenPrefix: 'T'});57 const nft = await collection.mintToken(alice);5859 await nft.transfer(alice, {Substrate: bob.address});60 expect(await nft.getOwner()).to.be.deep.equal({Substrate: bob.address});61 });6263 itSub('[fungible] User can transfer owned token', async ({helper}) => {64 const collection = await helper.ft.mintCollection(alice, {name: 'Transfer-1-FT', description: '', tokenPrefix: 'T'});65 await collection.mint(alice, 10n);6667 await collection.transfer(alice, {Substrate: bob.address}, 9n);68 expect(await collection.getBalance({Substrate: bob.address})).to.be.equal(9n);69 expect(await collection.getBalance({Substrate: alice.address})).to.be.equal(1n);70 });7172 itSub.ifWithPallets('[refungible] User can transfer owned token', [Pallets.ReFungible], async ({helper}) => {73 const collection = await helper.rft.mintCollection(alice, {name: 'Transfer-1-RFT', description: '', tokenPrefix: 'T'});74 const rft = await collection.mintToken(alice, 10n);7576 await rft.transfer(alice, {Substrate: bob.address}, 9n);77 expect(await rft.getBalance({Substrate: bob.address})).to.be.equal(9n);78 expect(await rft.getBalance({Substrate: alice.address})).to.be.equal(1n);79 });8081 itSub('[nft] Collection admin can transfer owned token', async ({helper}) => {82 const collection = await helper.nft.mintCollection(alice, {name: 'Transfer-2-NFT', description: '', tokenPrefix: 'T'});83 await collection.addAdmin(alice, {Substrate: bob.address});8485 const nft = await collection.mintToken(bob, {Substrate: bob.address});86 await nft.transfer(bob, {Substrate: alice.address});8788 expect(await nft.getOwner()).to.be.deep.equal({Substrate: alice.address});89 });9091 itSub('[fungible] Collection admin can transfer owned token', async ({helper}) => {92 const collection = await helper.ft.mintCollection(alice, {name: 'Transfer-2-FT', description: '', tokenPrefix: 'T'});93 await collection.addAdmin(alice, {Substrate: bob.address});9495 await collection.mint(bob, 10n, {Substrate: bob.address});96 await collection.transfer(bob, {Substrate: alice.address}, 1n);9798 expect(await collection.getBalance({Substrate: bob.address})).to.be.equal(9n);99 expect(await collection.getBalance({Substrate: alice.address})).to.be.equal(1n);100 });101102 itSub.ifWithPallets('[refungible] Collection admin can transfer owned token', [Pallets.ReFungible], async ({helper}) => {103 const collection = await helper.rft.mintCollection(alice, {name: 'Transfer-2-RFT', description: '', tokenPrefix: 'T'});104 await collection.addAdmin(alice, {Substrate: bob.address});105106 const rft = await collection.mintToken(bob, 10n, {Substrate: bob.address});107 await rft.transfer(bob, {Substrate: alice.address}, 1n);108109 expect(await rft.getBalance({Substrate: bob.address})).to.be.equal(9n);110 expect(await rft.getBalance({Substrate: alice.address})).to.be.equal(1n);111 });112});113114describe('Negative Integration Test Transfer(recipient, collection_id, item_id, value)', () => {115 let alice: IKeyringPair;116 let bob: IKeyringPair;117118 before(async () => {119 await usingPlaygrounds(async (helper, privateKey) => {120 const donor = await privateKey({filename: __filename});121 [alice, bob] = await helper.arrange.createAccounts([50n, 10n], donor);122 });123 });124125126 itSub('[nft] Transfer with not existed collection_id', async ({helper}) => {127 const collectionId = (1 << 32) - 1;128 await expect(helper.nft.transferToken(alice, collectionId, 1, {Substrate: bob.address}))129 .to.be.rejectedWith(/common\.CollectionNotFound/);130 });131132 itSub('[fungible] Transfer with not existed collection_id', async ({helper}) => {133 const collectionId = (1 << 32) - 1;134 await expect(helper.ft.transfer(alice, collectionId, {Substrate: bob.address}))135 .to.be.rejectedWith(/common\.CollectionNotFound/);136 });137138 itSub.ifWithPallets('[refungible] Transfer with not existed collection_id', [Pallets.ReFungible], async ({helper}) => {139 const collectionId = (1 << 32) - 1;140 await expect(helper.rft.transferToken(alice, collectionId, 1, {Substrate: bob.address}))141 .to.be.rejectedWith(/common\.CollectionNotFound/);142 });143144 itSub('[nft] Transfer with deleted collection_id', async ({helper}) => {145 const collection = await helper.nft.mintCollection(alice, {name: 'Transfer-Neg-1-NFT', description: '', tokenPrefix: 'T'});146 const nft = await collection.mintToken(alice);147148 await nft.burn(alice);149 await collection.burn(alice);150151 await expect(nft.transfer(alice, {Substrate: bob.address}))152 .to.be.rejectedWith(/common\.CollectionNotFound/);153 });154155 itSub('[fungible] Transfer with deleted collection_id', async ({helper}) => {156 const collection = await helper.ft.mintCollection(alice, {name: 'Transfer-Neg-1-FT', description: '', tokenPrefix: 'T'});157 await collection.mint(alice, 10n);158159 await collection.burnTokens(alice, 10n);160 await collection.burn(alice);161162 await expect(collection.transfer(alice, {Substrate: bob.address}))163 .to.be.rejectedWith(/common\.CollectionNotFound/);164 });165 166 itSub.ifWithPallets('[refungible] Transfer with deleted collection_id', [Pallets.ReFungible], async ({helper}) => {167 const collection = await helper.rft.mintCollection(alice, {name: 'Transfer-Neg-1-RFT', description: '', tokenPrefix: 'T'});168 const rft = await collection.mintToken(alice, 10n);169170 await rft.burn(alice, 10n);171 await collection.burn(alice);172173 await expect(rft.transfer(alice, {Substrate: bob.address}))174 .to.be.rejectedWith(/common\.CollectionNotFound/);175 });176177 itSub('[nft] Transfer with not existed item_id', async ({helper}) => {178 const collection = await helper.nft.mintCollection(alice, {name: 'Transfer-Neg-2-NFT', description: '', tokenPrefix: 'T'});179 await expect(collection.transferToken(alice, 1, {Substrate: bob.address}))180 .to.be.rejectedWith(/common\.TokenNotFound/);181 });182183 itSub('[fungible] Transfer with not existed item_id', async ({helper}) => {184 const collection = await helper.ft.mintCollection(alice, {name: 'Transfer-Neg-2-FT', description: '', tokenPrefix: 'T'});185 await expect(collection.transfer(alice, {Substrate: bob.address}))186 .to.be.rejectedWith(/common\.TokenValueTooLow/);187 });188189 itSub.ifWithPallets('[refungible] Transfer with not existed item_id', [Pallets.ReFungible], async ({helper}) => {190 const collection = await helper.rft.mintCollection(alice, {name: 'Transfer-Neg-2-RFT', description: '', tokenPrefix: 'T'});191 await expect(collection.transferToken(alice, 1, {Substrate: bob.address}))192 .to.be.rejectedWith(/common\.TokenValueTooLow/);193 });194195 itSub('Zero transfer NFT', async ({helper}) => {196 const api = helper.getApi();197 const collection = await helper.nft.mintCollection(alice, {name: 'Transfer-Neg-3-NFT', description: '', tokenPrefix: 'T'});198 const tokenAlice = await collection.mintToken(alice, {Substrate: alice.address});199 const tokenBob = await collection.mintToken(alice, {Substrate: bob.address});200 // 1. Zero transfer of own tokens allowed:201 await helper.signTransaction(alice, api.tx.unique.transfer({Substrate: bob.address}, collection.collectionId, tokenAlice.tokenId, 0));202 // 2. Zero transfer of non-owned tokens not allowed:203 await expect(helper.signTransaction(alice, api.tx.unique.transfer({Substrate: alice.address}, collection.collectionId, tokenBob.tokenId, 0))).to.be.rejectedWith('common.NoPermission');204 // 3. Zero transfer of non-existing tokens not allowed:205 await expect(helper.signTransaction(alice, api.tx.unique.transfer({Substrate: alice.address}, collection.collectionId, 10, 0))).to.be.rejectedWith('common.TokenNotFound');206 expect(await tokenAlice.getOwner()).to.deep.eq({Substrate: alice.address});207 expect(await tokenBob.getOwner()).to.deep.eq({Substrate: bob.address});208 // 4. Storage is not corrupted:209 await tokenAlice.transfer(alice, {Substrate: bob.address});210 await tokenBob.transfer(alice, {Substrate: alice.address});211 expect(await tokenAlice.getOwner()).to.deep.eq({Substrate: bob.address});212 expect(await tokenBob.getOwner()).to.deep.eq({Substrate: alice.address});213 });214215 itSub('[nft] Transfer with deleted item_id', async ({helper}) => {216 const collection = await helper.nft.mintCollection(alice, {name: 'Transfer-Neg-3-NFT', description: '', tokenPrefix: 'T'});217 const nft = await collection.mintToken(alice);218219 await nft.burn(alice);220221 await expect(nft.transfer(alice, {Substrate: bob.address}))222 .to.be.rejectedWith(/common\.TokenNotFound/);223 });224225 itSub('[fungible] Transfer with deleted item_id', async ({helper}) => {226 const collection = await helper.ft.mintCollection(alice, {name: 'Transfer-Neg-3-FT', description: '', tokenPrefix: 'T'});227 await collection.mint(alice, 10n);228229 await collection.burnTokens(alice, 10n);230231 await expect(collection.transfer(alice, {Substrate: bob.address}))232 .to.be.rejectedWith(/common\.TokenValueTooLow/);233 });234235 itSub.ifWithPallets('[refungible] Transfer with deleted item_id', [Pallets.ReFungible], async ({helper}) => {236 const collection = await helper.rft.mintCollection(alice, {name: 'Transfer-Neg-3-RFT', description: '', tokenPrefix: 'T'});237 const rft = await collection.mintToken(alice, 10n);238239 await rft.burn(alice, 10n);240241 await expect(rft.transfer(alice, {Substrate: bob.address}))242 .to.be.rejectedWith(/common\.TokenValueTooLow/);243 });244245 itSub('[nft] Transfer with recipient that is not owner', async ({helper}) => {246 const collection = await helper.nft.mintCollection(alice, {name: 'Transfer-Neg-4-NFT', description: '', tokenPrefix: 'T'});247 const nft = await collection.mintToken(alice);248249 await expect(nft.transfer(bob, {Substrate: bob.address}))250 .to.be.rejectedWith(/common\.NoPermission/);251 expect(await nft.getOwner()).to.be.deep.equal({Substrate: alice.address});252 });253254 itSub('[fungible] Transfer with recipient that is not owner', async ({helper}) => {255 const collection = await helper.ft.mintCollection(alice, {name: 'Transfer-Neg-4-FT', description: '', tokenPrefix: 'T'});256 await collection.mint(alice, 10n);257258 await expect(collection.transfer(bob, {Substrate: bob.address}, 9n))259 .to.be.rejectedWith(/common\.TokenValueTooLow/);260 expect(await collection.getBalance({Substrate: bob.address})).to.be.equal(0n);261 expect(await collection.getBalance({Substrate: alice.address})).to.be.equal(10n);262 });263264 itSub.ifWithPallets('[refungible] Transfer with recipient that is not owner', [Pallets.ReFungible], async ({helper}) => {265 const collection = await helper.rft.mintCollection(alice, {name: 'Transfer-1-RFT', description: '', tokenPrefix: 'T'});266 const rft = await collection.mintToken(alice, 10n);267268 await expect(rft.transfer(bob, {Substrate: bob.address}, 9n))269 .to.be.rejectedWith(/common\.TokenValueTooLow/);270 expect(await rft.getBalance({Substrate: bob.address})).to.be.equal(0n);271 expect(await rft.getBalance({Substrate: alice.address})).to.be.equal(10n);272 });273});274275describe('Transfers to self (potentially over substrate-evm boundary)', () => {276 let donor: IKeyringPair;277278 before(async function() {279 await usingEthPlaygrounds(async (_, privateKey) => {280 donor = await privateKey({filename: __filename});281 });282 });283 284 itEth('Transfers to self. In case of same frontend', async ({helper}) => {285 const [owner] = await helper.arrange.createAccounts([10n], donor);286 const collection = await helper.ft.mintCollection(owner, {});287 await collection.mint(owner, 100n);288289 const ownerProxy = helper.address.substrateToEth(owner.address);290291 // transfer to own proxy292 await collection.transfer(owner, {Ethereum: ownerProxy}, 10n);293 expect(await collection.getBalance({Substrate: owner.address})).to.be.equal(90n);294 expect(await collection.getBalance({Ethereum: ownerProxy})).to.be.equal(10n);295296 // transfer-from own proxy to own proxy again297 await collection.transferFrom(owner, {Ethereum: ownerProxy}, {Ethereum: ownerProxy}, 5n);298 expect(await collection.getBalance({Substrate: owner.address})).to.be.equal(90n);299 expect(await collection.getBalance({Ethereum: ownerProxy})).to.be.equal(10n);300 });301302 itEth('Transfers to self. In case of substrate-evm boundary', async ({helper}) => {303 const [owner] = await helper.arrange.createAccounts([10n], donor);304 const collection = await helper.ft.mintCollection(owner, {});305 await collection.mint(owner, 100n);306307 const ownerProxy = helper.address.substrateToEth(owner.address);308309 // transfer to own proxy310 await collection.transfer(owner, {Ethereum: ownerProxy}, 10n);311 expect(await collection.getBalance({Substrate: owner.address})).to.be.equal(90n);312 expect(await collection.getBalance({Ethereum: ownerProxy})).to.be.equal(10n);313314 // transfer-from own proxy to self315 await collection.transferFrom(owner, {Ethereum: ownerProxy}, {Substrate: owner.address}, 5n);316 expect(await collection.getBalance({Substrate: owner.address})).to.be.equal(95n);317 expect(await collection.getBalance({Ethereum: ownerProxy})).to.be.equal(5n);318 });319320 itEth('Transfers to self. In case of inside substrate-evm', async ({helper}) => {321 const [owner] = await helper.arrange.createAccounts([10n], donor);322 const collection = await helper.ft.mintCollection(owner, {});323 await collection.mint(owner, 100n);324325 // transfer to self again326 await collection.transfer(owner, {Substrate: owner.address}, 10n);327 expect(await collection.getBalance({Substrate: owner.address})).to.be.equal(100n);328329 // transfer-from self to self again330 await collection.transferFrom(owner, {Substrate: owner.address}, {Substrate: owner.address}, 5n);331 expect(await collection.getBalance({Substrate: owner.address})).to.be.equal(100n);332 });333334 itEth('Transfers to self. In case of inside substrate-evm when not enought "Fungibles"', async ({helper}) => {335 const [owner] = await helper.arrange.createAccounts([10n], donor);336 const collection = await helper.ft.mintCollection(owner, {});337 await collection.mint(owner, 10n);338339 // transfer to self again340 await expect(collection.transfer(owner, {Substrate: owner.address}, 11n))341 .to.be.rejectedWith(/common\.TokenValueTooLow/);342343 // transfer-from self to self again344 await expect(collection.transferFrom(owner, {Substrate: owner.address}, {Substrate: owner.address}, 12n))345 .to.be.rejectedWith(/common\.TokenValueTooLow/);346 expect(await collection.getBalance({Substrate: owner.address})).to.be.equal(10n);347 });348});tests/src/transferFrom.test.tsdiffbeforeafterboth--- a/tests/src/transferFrom.test.ts
+++ b/tests/src/transferFrom.test.ts
@@ -351,18 +351,17 @@
});
itSub('zero transfer NFT', async ({helper}) => {
- const api = helper.getApi();
const collection = await helper.nft.mintCollection(alice, {name: 'Zero', description: 'Zero transfer', tokenPrefix: 'TF'});
const notApprovedNft = await collection.mintToken(alice, {Substrate: bob.address});
const approvedNft = await collection.mintToken(alice, {Substrate: bob.address});
await approvedNft.approve(bob, {Substrate: alice.address});
// 1. Cannot zero transferFrom (non-existing token)
- await expect(helper.signTransaction(alice, api.tx.unique.transferFrom({Substrate: bob.address}, {Substrate: alice.address}, collection.collectionId, 9999, 0))).to.be.rejectedWith('common.ApprovedValueTooLow');
+ await expect(helper.executeExtrinsic(alice, 'api.tx.unique.transferFrom', [{Substrate: bob.address}, {Substrate: alice.address}, collection.collectionId, 9999, 0])).to.be.rejectedWith('common.ApprovedValueTooLow');
// 2. Cannot zero transferFrom (not approved token)
- await expect(helper.signTransaction(alice, api.tx.unique.transferFrom({Substrate: bob.address}, {Substrate: alice.address}, collection.collectionId, notApprovedNft.tokenId, 0))).to.be.rejectedWith('common.NoPermission');
+ await expect(helper.executeExtrinsic(alice, 'api.tx.unique.transferFrom', [{Substrate: bob.address}, {Substrate: alice.address}, collection.collectionId, notApprovedNft.tokenId, 0])).to.be.rejectedWith('common.NoPermission');
// 3. Can zero transferFrom (approved token):
- await helper.signTransaction(alice, api.tx.unique.transferFrom({Substrate: bob.address}, {Substrate: alice.address}, collection.collectionId, approvedNft.tokenId, 0));
+ await helper.executeExtrinsic(alice, 'api.tx.unique.transferFrom', [{Substrate: bob.address}, {Substrate: alice.address}, collection.collectionId, approvedNft.tokenId, 0]);
// 4.1 approvedNft still approved:
expect(await approvedNft.isApproved({Substrate: alice.address})).to.be.true;