difftreelog
fix bigint usage at limits tests
in: master
1 file changed
tests/src/limits.test.tsdiffbeforeafterboth1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//56import { IKeyringPair } from '@polkadot/types/types';7import privateKey from './substrate/privateKey';8import usingApi from './substrate/substrate-api';9import {10 createCollectionExpectSuccess,11 destroyCollectionExpectSuccess,12 setCollectionLimitsExpectSuccess,13 setCollectionSponsorExpectSuccess,14 confirmSponsorshipExpectSuccess,15 createItemExpectSuccess,16 createItemExpectFailure,17 transferExpectSuccess,18 getFreeBalance,19 waitNewBlocks,20} from './util/helpers';21import { expect } from 'chai';2223describe('Number of tokens per address (NFT)', () => {24 let Alice: IKeyringPair;2526 before(async () => {27 await usingApi(async () => {28 Alice = privateKey('//Alice');29 });30 });3132 it.skip('Collection limits allow greater number than chain limits, chain limits are enforced', async () => {3334 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });35 await setCollectionLimitsExpectSuccess(Alice, collectionId, { accountTokenOwnershipLimit: 20 });36 for(let i = 0; i < 10; i++){37 await createItemExpectSuccess(Alice, collectionId, 'NFT');38 }39 await createItemExpectFailure(Alice, collectionId, 'NFT');40 await destroyCollectionExpectSuccess(collectionId);41 });4243 it('Collection limits allow lower number than chain limits, collection limits are enforced', async () => {4445 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });46 await setCollectionLimitsExpectSuccess(Alice, collectionId, { accountTokenOwnershipLimit: 1 });47 await createItemExpectSuccess(Alice, collectionId, 'NFT');48 await createItemExpectFailure(Alice, collectionId, 'NFT');49 await destroyCollectionExpectSuccess(collectionId);50 });51});5253describe('Number of tokens per address (ReFungible)', () => {54 let Alice: IKeyringPair;5556 before(async () => {57 await usingApi(async () => {58 Alice = privateKey('//Alice');59 });60 });6162 it.skip('Collection limits allow greater number than chain limits, chain limits are enforced', async () => {63 const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible' }});64 await setCollectionLimitsExpectSuccess(Alice, collectionId, { accountTokenOwnershipLimit: 20 });65 for(let i = 0; i < 10; i++){66 await createItemExpectSuccess(Alice, collectionId, 'ReFungible');67 }68 await createItemExpectFailure(Alice, collectionId, 'ReFungible');69 await destroyCollectionExpectSuccess(collectionId);70 });7172 it('Collection limits allow lower number than chain limits, collection limits are enforced', async () => {73 const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible' }});74 await setCollectionLimitsExpectSuccess(Alice, collectionId, { accountTokenOwnershipLimit: 1 });75 await createItemExpectSuccess(Alice, collectionId, 'ReFungible');76 await createItemExpectFailure(Alice, collectionId, 'ReFungible');77 await destroyCollectionExpectSuccess(collectionId);78 });79});8081describe('Sponsor timeout (NFT)', () => {82 let Alice: IKeyringPair;83 let Bob: IKeyringPair;84 let Charlie: IKeyringPair;8586 before(async () => {87 await usingApi(async () => {88 Alice = privateKey('//Alice');89 Bob = privateKey('//Bob');90 Charlie = privateKey('//Charlie');91 });92 });9394 it('Collection limits have greater timeout value than chain limits, collection limits are enforced', async () => {95 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });96 await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 7 });97 const tokenId = await createItemExpectSuccess(Alice, collectionId, 'NFT');98 await setCollectionSponsorExpectSuccess(collectionId, Alice.address);99 await confirmSponsorshipExpectSuccess(collectionId, '//Alice');100 await transferExpectSuccess(collectionId, tokenId, Alice, Bob);101 const aliceBalanceBefore = await getFreeBalance(Alice);102103 // check setting SponsorTimeout = 5, fail104 await waitNewBlocks(5);105 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie);106 const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(Alice);107 expect(aliceBalanceAfterUnsponsoredTransaction).to.be.equals(aliceBalanceBefore);108109 // check setting SponsorTimeout = 7, success110 await waitNewBlocks(2); // 5 + 2111 await transferExpectSuccess(collectionId, tokenId, Charlie, Bob);112 const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(Alice);113 expect(aliceBalanceAfterSponsoredTransaction).to.be.lessThan(aliceBalanceBefore);114 await destroyCollectionExpectSuccess(collectionId);115 });116117 it('Collection limits have lower timeout value than chain limits, chain limits are enforced', async () => {118119 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });120 await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 1 });121 const tokenId = await createItemExpectSuccess(Alice, collectionId, 'NFT');122 await setCollectionSponsorExpectSuccess(collectionId, Alice.address);123 await confirmSponsorshipExpectSuccess(collectionId, '//Alice');124 await transferExpectSuccess(collectionId, tokenId, Alice, Bob);125 const aliceBalanceBefore = await getFreeBalance(Alice);126127 // check setting SponsorTimeout = 1, fail128 await waitNewBlocks(1);129 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie);130 const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(Alice);131 expect(aliceBalanceAfterUnsponsoredTransaction).to.be.equals(aliceBalanceBefore);132133 // check setting SponsorTimeout = 5, success134 await waitNewBlocks(4);135 await transferExpectSuccess(collectionId, tokenId, Charlie, Bob);136 const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(Alice);137 expect(aliceBalanceAfterSponsoredTransaction).to.be.lessThan(aliceBalanceBefore);138 await destroyCollectionExpectSuccess(collectionId);139 });140});141142describe('Sponsor timeout (Fungible)', () => {143 let Alice: IKeyringPair;144 let Bob: IKeyringPair;145 let Charlie: IKeyringPair;146147 before(async () => {148 await usingApi(async () => {149 Alice = privateKey('//Alice');150 Bob = privateKey('//Bob');151 Charlie = privateKey('//Charlie');152 });153 });154155 it('Collection limits have greater timeout value than chain limits, collection limits are enforced', async () => {156 const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});157 await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 7 });158 const tokenId = await createItemExpectSuccess(Alice, collectionId, 'Fungible');159 await setCollectionSponsorExpectSuccess(collectionId, Alice.address);160 await confirmSponsorshipExpectSuccess(collectionId, '//Alice');161 await transferExpectSuccess(collectionId, tokenId, Alice, Bob, 10, 'Fungible');162 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');163 const aliceBalanceBefore = await getFreeBalance(Alice);164165 // check setting SponsorTimeout = 5, fail166 await waitNewBlocks(5);167 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');168 const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(Alice);169 expect(aliceBalanceAfterUnsponsoredTransaction).to.be.equals(aliceBalanceBefore);170171 // check setting SponsorTimeout = 7, success172 await waitNewBlocks(2); // 5 + 2173 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');174 const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(Alice);175 expect(aliceBalanceAfterSponsoredTransaction).to.be.lessThan(aliceBalanceBefore);176177 await destroyCollectionExpectSuccess(collectionId);178 });179180 it('Collection limits have lower timeout value than chain limits, chain limits are enforced', async () => {181182 const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});183 await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 1 });184 const tokenId = await createItemExpectSuccess(Alice, collectionId, 'Fungible');185 await setCollectionSponsorExpectSuccess(collectionId, Alice.address);186 await confirmSponsorshipExpectSuccess(collectionId, '//Alice');187 await transferExpectSuccess(collectionId, tokenId, Alice, Bob, 10, 'Fungible');188 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');189 const aliceBalanceBefore = await getFreeBalance(Alice);190191 // check setting SponsorTimeout = 1, fail192 await waitNewBlocks(1);193 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');194 const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(Alice);195 expect(aliceBalanceAfterUnsponsoredTransaction).to.be.equals(aliceBalanceBefore);196197 // check setting SponsorTimeout = 5, success198 await waitNewBlocks(4);199 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');200 const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(Alice);201 expect(aliceBalanceAfterSponsoredTransaction).to.be.lessThan(aliceBalanceBefore);202203 await destroyCollectionExpectSuccess(collectionId);204 });205});206207describe('Sponsor timeout (ReFungible)', () => {208 let Alice: IKeyringPair;209 let Bob: IKeyringPair;210 let Charlie: IKeyringPair;211212 before(async () => {213 await usingApi(async () => {214 Alice = privateKey('//Alice');215 Bob = privateKey('//Bob');216 Charlie = privateKey('//Charlie');217 });218 });219220 it('Collection limits have greater timeout value than chain limits, collection limits are enforced', async () => {221 const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible' }});222 await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 7 });223 const tokenId = await createItemExpectSuccess(Alice, collectionId, 'ReFungible');224 await setCollectionSponsorExpectSuccess(collectionId, Alice.address);225 await confirmSponsorshipExpectSuccess(collectionId, '//Alice');226 await transferExpectSuccess(collectionId, tokenId, Alice, Bob, 100, 'ReFungible');227 const aliceBalanceBefore = await getFreeBalance(Alice);228229 // check setting SponsorTimeout = 5, fail230 await waitNewBlocks(5);231 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 20, 'ReFungible');232 const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(Alice);233 expect(aliceBalanceAfterUnsponsoredTransaction).to.be.equals(aliceBalanceBefore);234235 // check setting SponsorTimeout = 7, success236 await waitNewBlocks(2); // 5 + 2237 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 20, 'ReFungible');238 const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(Alice);239 expect(aliceBalanceAfterSponsoredTransaction).to.be.lessThan(aliceBalanceBefore);240 await destroyCollectionExpectSuccess(collectionId);241 });242243 it('Collection limits have lower timeout value than chain limits, chain limits are enforced', async () => {244245 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });246 await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 1 });247 const tokenId = await createItemExpectSuccess(Alice, collectionId, 'NFT');248 await setCollectionSponsorExpectSuccess(collectionId, Alice.address);249 await confirmSponsorshipExpectSuccess(collectionId, '//Alice');250 await transferExpectSuccess(collectionId, tokenId, Alice, Bob);251 const aliceBalanceBefore = await getFreeBalance(Alice);252253 // check setting SponsorTimeout = 1, fail254 await waitNewBlocks(1);255 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie);256 const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(Alice);257 expect(aliceBalanceAfterUnsponsoredTransaction).to.be.equals(aliceBalanceBefore);258259 // check setting SponsorTimeout = 5, success260 await waitNewBlocks(4);261 await transferExpectSuccess(collectionId, tokenId, Charlie, Bob);262 const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(Alice);263 expect(aliceBalanceAfterSponsoredTransaction).to.be.lessThan(aliceBalanceBefore);264 await destroyCollectionExpectSuccess(collectionId);265 });266});267268describe('Collection zero limits (NFT)', () => {269 let Alice: IKeyringPair;270 let Bob: IKeyringPair;271 let Charlie: IKeyringPair;272273 before(async () => {274 await usingApi(async () => {275 Alice = privateKey('//Alice');276 Bob = privateKey('//Bob');277 Charlie = privateKey('//Charlie');278 });279 });280281 it.skip('Limits have 0 in tokens per address field, the chain limits are applied', async () => {282 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });283 await setCollectionLimitsExpectSuccess(Alice, collectionId, { accountTokenOwnershipLimit: 0 });284 for(let i = 0; i < 10; i++){285 await createItemExpectSuccess(Alice, collectionId, 'NFT');286 }287 await createItemExpectFailure(Alice, collectionId, 'NFT');288 });289290 it('Limits have 0 in sponsor timeout, no limits are applied', async () => {291292 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });293 await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 0 });294 const tokenId = await createItemExpectSuccess(Alice, collectionId, 'NFT');295 await setCollectionSponsorExpectSuccess(collectionId, Alice.address);296 await confirmSponsorshipExpectSuccess(collectionId, '//Alice');297 await transferExpectSuccess(collectionId, tokenId, Alice, Bob);298 const aliceBalanceBefore = await getFreeBalance(Alice);299300 // check setting SponsorTimeout = 0, success with next block301 await waitNewBlocks(1);302 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie);303 const aliceBalanceAfterSponsoredTransaction1 = await getFreeBalance(Alice);304 expect(aliceBalanceAfterSponsoredTransaction1).to.be.lessThan(aliceBalanceBefore);305 });306});307308describe('Collection zero limits (Fungible)', () => {309 let Alice: IKeyringPair;310 let Bob: IKeyringPair;311 let Charlie: IKeyringPair;312313 before(async () => {314 await usingApi(async () => {315 Alice = privateKey('//Alice');316 Bob = privateKey('//Bob');317 Charlie = privateKey('//Charlie');318 });319 });320321 it('Limits have 0 in sponsor timeout, no limits are applied', async () => {322 const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});323 await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 0 });324 const tokenId = await createItemExpectSuccess(Alice, collectionId, 'Fungible');325 await setCollectionSponsorExpectSuccess(collectionId, Alice.address);326 await confirmSponsorshipExpectSuccess(collectionId, '//Alice');327 await transferExpectSuccess(collectionId, tokenId, Alice, Bob, 10, 'Fungible');328 const aliceBalanceBefore = await getFreeBalance(Alice);329 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');330331 // check setting SponsorTimeout = 0, success with next block332 await waitNewBlocks(1);333 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');334 const aliceBalanceAfterSponsoredTransaction1 = await getFreeBalance(Alice);335 expect(aliceBalanceAfterSponsoredTransaction1).to.be.lessThan(aliceBalanceBefore);336 });337});338339describe('Collection zero limits (ReFungible)', () => {340 let Alice: IKeyringPair;341 let Bob: IKeyringPair;342 let Charlie: IKeyringPair;343344 before(async () => {345 await usingApi(async () => {346 Alice = privateKey('//Alice');347 Bob = privateKey('//Bob');348 Charlie = privateKey('//Charlie');349 });350 });351352 it.skip('Limits have 0 in tokens per address field, the chain limits are applied', async () => {353 const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible' }});354 await setCollectionLimitsExpectSuccess(Alice, collectionId, { accountTokenOwnershipLimit: 0 });355 for(let i = 0; i < 10; i++){356 await createItemExpectSuccess(Alice, collectionId, 'ReFungible');357 }358 await createItemExpectFailure(Alice, collectionId, 'ReFungible');359 });360361 it('Limits have 0 in sponsor timeout, no limits are applied', async () => {362363 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });364 await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 0 });365 const tokenId = await createItemExpectSuccess(Alice, collectionId, 'ReFungible');366 await setCollectionSponsorExpectSuccess(collectionId, Alice.address);367 await confirmSponsorshipExpectSuccess(collectionId, '//Alice');368 await transferExpectSuccess(collectionId, tokenId, Alice, Bob, 100, 'ReFungible');369 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 20, 'ReFungible');370 const aliceBalanceBefore = await getFreeBalance(Alice);371372 // check setting SponsorTimeout = 0, success with next block373 await waitNewBlocks(1);374 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 20, 'ReFungible');375 const aliceBalanceAfterSponsoredTransaction1 = await getFreeBalance(Alice);376 expect(aliceBalanceAfterSponsoredTransaction1).to.be.lessThan(aliceBalanceBefore);377 });378});1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//56import { IKeyringPair } from '@polkadot/types/types';7import privateKey from './substrate/privateKey';8import usingApi from './substrate/substrate-api';9import {10 createCollectionExpectSuccess,11 destroyCollectionExpectSuccess,12 setCollectionLimitsExpectSuccess,13 setCollectionSponsorExpectSuccess,14 confirmSponsorshipExpectSuccess,15 createItemExpectSuccess,16 createItemExpectFailure,17 transferExpectSuccess,18 getFreeBalance,19 waitNewBlocks,20} from './util/helpers';21import { expect } from 'chai';2223describe('Number of tokens per address (NFT)', () => {24 let Alice: IKeyringPair;2526 before(async () => {27 await usingApi(async () => {28 Alice = privateKey('//Alice');29 });30 });3132 it.skip('Collection limits allow greater number than chain limits, chain limits are enforced', async () => {3334 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });35 await setCollectionLimitsExpectSuccess(Alice, collectionId, { accountTokenOwnershipLimit: 20 });36 for(let i = 0; i < 10; i++){37 await createItemExpectSuccess(Alice, collectionId, 'NFT');38 }39 await createItemExpectFailure(Alice, collectionId, 'NFT');40 await destroyCollectionExpectSuccess(collectionId);41 });4243 it('Collection limits allow lower number than chain limits, collection limits are enforced', async () => {4445 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });46 await setCollectionLimitsExpectSuccess(Alice, collectionId, { accountTokenOwnershipLimit: 1 });47 await createItemExpectSuccess(Alice, collectionId, 'NFT');48 await createItemExpectFailure(Alice, collectionId, 'NFT');49 await destroyCollectionExpectSuccess(collectionId);50 });51});5253describe('Number of tokens per address (ReFungible)', () => {54 let Alice: IKeyringPair;5556 before(async () => {57 await usingApi(async () => {58 Alice = privateKey('//Alice');59 });60 });6162 it.skip('Collection limits allow greater number than chain limits, chain limits are enforced', async () => {63 const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible' }});64 await setCollectionLimitsExpectSuccess(Alice, collectionId, { accountTokenOwnershipLimit: 20 });65 for(let i = 0; i < 10; i++){66 await createItemExpectSuccess(Alice, collectionId, 'ReFungible');67 }68 await createItemExpectFailure(Alice, collectionId, 'ReFungible');69 await destroyCollectionExpectSuccess(collectionId);70 });7172 it('Collection limits allow lower number than chain limits, collection limits are enforced', async () => {73 const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible' }});74 await setCollectionLimitsExpectSuccess(Alice, collectionId, { accountTokenOwnershipLimit: 1 });75 await createItemExpectSuccess(Alice, collectionId, 'ReFungible');76 await createItemExpectFailure(Alice, collectionId, 'ReFungible');77 await destroyCollectionExpectSuccess(collectionId);78 });79});8081describe('Sponsor timeout (NFT)', () => {82 let Alice: IKeyringPair;83 let Bob: IKeyringPair;84 let Charlie: IKeyringPair;8586 before(async () => {87 await usingApi(async () => {88 Alice = privateKey('//Alice');89 Bob = privateKey('//Bob');90 Charlie = privateKey('//Charlie');91 });92 });9394 it('Collection limits have greater timeout value than chain limits, collection limits are enforced', async () => {95 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });96 await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 7 });97 const tokenId = await createItemExpectSuccess(Alice, collectionId, 'NFT');98 await setCollectionSponsorExpectSuccess(collectionId, Alice.address);99 await confirmSponsorshipExpectSuccess(collectionId, '//Alice');100 await transferExpectSuccess(collectionId, tokenId, Alice, Bob);101 const aliceBalanceBefore = await getFreeBalance(Alice);102103 // check setting SponsorTimeout = 5, fail104 await waitNewBlocks(5);105 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie);106 const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(Alice);107 expect(aliceBalanceAfterUnsponsoredTransaction).to.be.equals(aliceBalanceBefore);108109 // check setting SponsorTimeout = 7, success110 await waitNewBlocks(2); // 5 + 2111 await transferExpectSuccess(collectionId, tokenId, Charlie, Bob);112 const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(Alice);113 expect(aliceBalanceAfterSponsoredTransaction < aliceBalanceBefore).to.be.true;114 //expect(aliceBalanceAfterSponsoredTransaction).to.be.lessThan(aliceBalanceBefore);115 await destroyCollectionExpectSuccess(collectionId);116 });117118 it('Collection limits have lower timeout value than chain limits, chain limits are enforced', async () => {119120 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });121 await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 1 });122 const tokenId = await createItemExpectSuccess(Alice, collectionId, 'NFT');123 await setCollectionSponsorExpectSuccess(collectionId, Alice.address);124 await confirmSponsorshipExpectSuccess(collectionId, '//Alice');125 await transferExpectSuccess(collectionId, tokenId, Alice, Bob);126 const aliceBalanceBefore = await getFreeBalance(Alice);127128 // check setting SponsorTimeout = 1, fail129 await waitNewBlocks(1);130 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie);131 const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(Alice);132 expect(aliceBalanceAfterUnsponsoredTransaction).to.be.equals(aliceBalanceBefore);133134 // check setting SponsorTimeout = 5, success135 await waitNewBlocks(4);136 await transferExpectSuccess(collectionId, tokenId, Charlie, Bob);137 const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(Alice);138 expect(aliceBalanceAfterSponsoredTransaction < aliceBalanceBefore).to.be.true;139 //expect(aliceBalanceAfterSponsoredTransaction).to.be.lessThan(aliceBalanceBefore);140 await destroyCollectionExpectSuccess(collectionId);141 });142});143144describe('Sponsor timeout (Fungible)', () => {145 let Alice: IKeyringPair;146 let Bob: IKeyringPair;147 let Charlie: IKeyringPair;148149 before(async () => {150 await usingApi(async () => {151 Alice = privateKey('//Alice');152 Bob = privateKey('//Bob');153 Charlie = privateKey('//Charlie');154 });155 });156157 it('Collection limits have greater timeout value than chain limits, collection limits are enforced', async () => {158 const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});159 await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 7 });160 const tokenId = await createItemExpectSuccess(Alice, collectionId, 'Fungible');161 await setCollectionSponsorExpectSuccess(collectionId, Alice.address);162 await confirmSponsorshipExpectSuccess(collectionId, '//Alice');163 await transferExpectSuccess(collectionId, tokenId, Alice, Bob, 10, 'Fungible');164 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');165 const aliceBalanceBefore = await getFreeBalance(Alice);166167 // check setting SponsorTimeout = 5, fail168 await waitNewBlocks(5);169 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');170 const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(Alice);171 expect(aliceBalanceAfterUnsponsoredTransaction).to.be.equals(aliceBalanceBefore);172173 // check setting SponsorTimeout = 7, success174 await waitNewBlocks(2); // 5 + 2175 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');176 const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(Alice);177 expect(aliceBalanceAfterSponsoredTransaction < aliceBalanceBefore).to.be.true;178 //expect(aliceBalanceAfterSponsoredTransaction).to.be.lessThan(aliceBalanceBefore);179180 await destroyCollectionExpectSuccess(collectionId);181 });182183 it('Collection limits have lower timeout value than chain limits, chain limits are enforced', async () => {184185 const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});186 await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 1 });187 const tokenId = await createItemExpectSuccess(Alice, collectionId, 'Fungible');188 await setCollectionSponsorExpectSuccess(collectionId, Alice.address);189 await confirmSponsorshipExpectSuccess(collectionId, '//Alice');190 await transferExpectSuccess(collectionId, tokenId, Alice, Bob, 10, 'Fungible');191 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');192 const aliceBalanceBefore = await getFreeBalance(Alice);193194 // check setting SponsorTimeout = 1, fail195 await waitNewBlocks(1);196 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');197 const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(Alice);198 expect(aliceBalanceAfterUnsponsoredTransaction).to.be.equals(aliceBalanceBefore);199200 // check setting SponsorTimeout = 5, success201 await waitNewBlocks(4);202 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');203 const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(Alice);204 expect(aliceBalanceAfterSponsoredTransaction < aliceBalanceBefore).to.be.true;205 //expect(aliceBalanceAfterSponsoredTransaction).to.be.lessThan(aliceBalanceBefore);206207 await destroyCollectionExpectSuccess(collectionId);208 });209});210211describe('Sponsor timeout (ReFungible)', () => {212 let Alice: IKeyringPair;213 let Bob: IKeyringPair;214 let Charlie: IKeyringPair;215216 before(async () => {217 await usingApi(async () => {218 Alice = privateKey('//Alice');219 Bob = privateKey('//Bob');220 Charlie = privateKey('//Charlie');221 });222 });223224 it('Collection limits have greater timeout value than chain limits, collection limits are enforced', async () => {225 const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible' }});226 await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 7 });227 const tokenId = await createItemExpectSuccess(Alice, collectionId, 'ReFungible');228 await setCollectionSponsorExpectSuccess(collectionId, Alice.address);229 await confirmSponsorshipExpectSuccess(collectionId, '//Alice');230 await transferExpectSuccess(collectionId, tokenId, Alice, Bob, 100, 'ReFungible');231 const aliceBalanceBefore = await getFreeBalance(Alice);232233 // check setting SponsorTimeout = 5, fail234 await waitNewBlocks(5);235 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 20, 'ReFungible');236 const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(Alice);237 expect(aliceBalanceAfterUnsponsoredTransaction).to.be.equals(aliceBalanceBefore);238239 // check setting SponsorTimeout = 7, success240 await waitNewBlocks(2); // 5 + 2241 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 20, 'ReFungible');242 const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(Alice);243 expect(aliceBalanceAfterSponsoredTransaction < aliceBalanceBefore).to.be.true;244 //expect(aliceBalanceAfterSponsoredTransaction).to.be.lessThan(aliceBalanceBefore);245 await destroyCollectionExpectSuccess(collectionId);246 });247248 it('Collection limits have lower timeout value than chain limits, chain limits are enforced', async () => {249250 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });251 await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 1 });252 const tokenId = await createItemExpectSuccess(Alice, collectionId, 'NFT');253 await setCollectionSponsorExpectSuccess(collectionId, Alice.address);254 await confirmSponsorshipExpectSuccess(collectionId, '//Alice');255 await transferExpectSuccess(collectionId, tokenId, Alice, Bob);256 const aliceBalanceBefore = await getFreeBalance(Alice);257258 // check setting SponsorTimeout = 1, fail259 await waitNewBlocks(1);260 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie);261 const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(Alice);262 expect(aliceBalanceAfterUnsponsoredTransaction).to.be.equals(aliceBalanceBefore);263264 // check setting SponsorTimeout = 5, success265 await waitNewBlocks(4);266 await transferExpectSuccess(collectionId, tokenId, Charlie, Bob);267 const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(Alice);268 expect(aliceBalanceAfterSponsoredTransaction < aliceBalanceBefore).to.be.true;269 //expect(aliceBalanceAfterSponsoredTransaction).to.be.lessThan(aliceBalanceBefore);270 await destroyCollectionExpectSuccess(collectionId);271 });272});273274describe('Collection zero limits (NFT)', () => {275 let Alice: IKeyringPair;276 let Bob: IKeyringPair;277 let Charlie: IKeyringPair;278279 before(async () => {280 await usingApi(async () => {281 Alice = privateKey('//Alice');282 Bob = privateKey('//Bob');283 Charlie = privateKey('//Charlie');284 });285 });286287 it.skip('Limits have 0 in tokens per address field, the chain limits are applied', async () => {288 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });289 await setCollectionLimitsExpectSuccess(Alice, collectionId, { accountTokenOwnershipLimit: 0 });290 for(let i = 0; i < 10; i++){291 await createItemExpectSuccess(Alice, collectionId, 'NFT');292 }293 await createItemExpectFailure(Alice, collectionId, 'NFT');294 });295296 it('Limits have 0 in sponsor timeout, no limits are applied', async () => {297298 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });299 await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 0 });300 const tokenId = await createItemExpectSuccess(Alice, collectionId, 'NFT');301 await setCollectionSponsorExpectSuccess(collectionId, Alice.address);302 await confirmSponsorshipExpectSuccess(collectionId, '//Alice');303 await transferExpectSuccess(collectionId, tokenId, Alice, Bob);304 const aliceBalanceBefore = await getFreeBalance(Alice);305306 // check setting SponsorTimeout = 0, success with next block307 await waitNewBlocks(1);308 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie);309 const aliceBalanceAfterSponsoredTransaction1 = await getFreeBalance(Alice);310 expect(aliceBalanceAfterSponsoredTransaction1 < aliceBalanceBefore).to.be.true;311 //expect(aliceBalanceAfterSponsoredTransaction1).to.be.lessThan(aliceBalanceBefore);312 });313});314315describe('Collection zero limits (Fungible)', () => {316 let Alice: IKeyringPair;317 let Bob: IKeyringPair;318 let Charlie: IKeyringPair;319320 before(async () => {321 await usingApi(async () => {322 Alice = privateKey('//Alice');323 Bob = privateKey('//Bob');324 Charlie = privateKey('//Charlie');325 });326 });327328 it('Limits have 0 in sponsor timeout, no limits are applied', async () => {329 const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});330 await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 0 });331 const tokenId = await createItemExpectSuccess(Alice, collectionId, 'Fungible');332 await setCollectionSponsorExpectSuccess(collectionId, Alice.address);333 await confirmSponsorshipExpectSuccess(collectionId, '//Alice');334 await transferExpectSuccess(collectionId, tokenId, Alice, Bob, 10, 'Fungible');335 const aliceBalanceBefore = await getFreeBalance(Alice);336 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');337338 // check setting SponsorTimeout = 0, success with next block339 await waitNewBlocks(1);340 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');341 const aliceBalanceAfterSponsoredTransaction1 = await getFreeBalance(Alice);342 expect(aliceBalanceAfterSponsoredTransaction1 < aliceBalanceBefore).to.be.true;343 //expect(aliceBalanceAfterSponsoredTransaction1).to.be.lessThan(aliceBalanceBefore);344 });345});346347describe('Collection zero limits (ReFungible)', () => {348 let Alice: IKeyringPair;349 let Bob: IKeyringPair;350 let Charlie: IKeyringPair;351352 before(async () => {353 await usingApi(async () => {354 Alice = privateKey('//Alice');355 Bob = privateKey('//Bob');356 Charlie = privateKey('//Charlie');357 });358 });359360 it.skip('Limits have 0 in tokens per address field, the chain limits are applied', async () => {361 const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible' }});362 await setCollectionLimitsExpectSuccess(Alice, collectionId, { accountTokenOwnershipLimit: 0 });363 for(let i = 0; i < 10; i++){364 await createItemExpectSuccess(Alice, collectionId, 'ReFungible');365 }366 await createItemExpectFailure(Alice, collectionId, 'ReFungible');367 });368369 it('Limits have 0 in sponsor timeout, no limits are applied', async () => {370371 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });372 await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 0 });373 const tokenId = await createItemExpectSuccess(Alice, collectionId, 'ReFungible');374 await setCollectionSponsorExpectSuccess(collectionId, Alice.address);375 await confirmSponsorshipExpectSuccess(collectionId, '//Alice');376 await transferExpectSuccess(collectionId, tokenId, Alice, Bob, 100, 'ReFungible');377 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 20, 'ReFungible');378 const aliceBalanceBefore = await getFreeBalance(Alice);379380 // check setting SponsorTimeout = 0, success with next block381 await waitNewBlocks(1);382 await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 20, 'ReFungible');383 const aliceBalanceAfterSponsoredTransaction1 = await getFreeBalance(Alice);384 expect(aliceBalanceAfterSponsoredTransaction1 < aliceBalanceBefore).to.be.true;385 //expect(aliceBalanceAfterSponsoredTransaction1).to.be.lessThan(aliceBalanceBefore);386 });387});