From 8b9e1d8de76d77ba0f77a7656ad953e26db1e2fd Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Fri, 05 Mar 2021 14:02:34 +0000 Subject: [PATCH] tests: fix collection info getting --- --- a/tests/package.json +++ b/tests/package.json @@ -44,7 +44,7 @@ "testSetContractSponsoringRateLimit": "mocha --timeout 9999999 -r ts-node/register ./**/setContractSponsoringRateLimit.test.ts", "testSetOffchainSchema": "mocha --timeout 9999999 -r ts-node/register ./**/setOffchainSchema.test.ts", "testOverflow": "mocha --timeout 9999999 -r ts-node/register ./**/overflow.test.ts", - "setVariableMetadataSponsoringRateLimit": "mocha --timeout 9999999 -r ts-node/register ./**/setVariableMetadataSponsoringRateLimit.test.ts" + "testSetVariableMetadataSponsoringRateLimit": "mocha --timeout 9999999 -r ts-node/register ./**/setVariableMetadataSponsoringRateLimit.test.ts" }, "author": "", "license": "SEE LICENSE IN ../LICENSE", --- a/tests/src/addCollectionAdmin.test.ts +++ b/tests/src/addCollectionAdmin.test.ts @@ -1,135 +1,135 @@ -// -// This file is subject to the terms and conditions defined in -// file 'LICENSE', which is part of this source code package. -// - -import { ApiPromise } from '@polkadot/api'; -import BN from 'bn.js'; -import chai from 'chai'; -import chaiAsPromised from 'chai-as-promised'; -import privateKey from './substrate/privateKey'; -import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api'; -import {createCollectionExpectSuccess, destroyCollectionExpectSuccess} from './util/helpers'; - -chai.use(chaiAsPromised); -const expect = chai.expect; - -describe('Integration Test addCollectionAdmin(collection_id, new_admin_id):', () => { - it('Add collection admin.', async () => { - await usingApi(async (api) => { - const collectionId = await createCollectionExpectSuccess(); - const alice = privateKey('//Alice'); - const bob = privateKey('//Bob'); - - const collection: any = (await api.query.nft.collection(collectionId)); - expect(collection.Owner.toString()).to.be.eq(alice.address); - - const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, bob.address); - await submitTransactionAsync(alice, changeAdminTx); - - const adminListAfterAddAdmin: any = (await api.query.nft.adminList(collectionId)); - expect(adminListAfterAddAdmin).to.be.contains(bob.address); - }); - }); - - it('Add admin using added collection admin.', async () => { - await usingApi(async (api) => { - const collectionId = await createCollectionExpectSuccess(); - const Alice = privateKey('//Alice'); - const Bob = privateKey('//Bob'); - const Charlie = privateKey('//CHARLIE'); - - const collection: any = (await api.query.nft.collection(collectionId)); - expect(collection.Owner.toString()).to.be.eq(Alice.address); - - const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, Bob.address); - await submitTransactionAsync(Alice, changeAdminTx); - - const adminListAfterAddAdmin: any = (await api.query.nft.adminList(collectionId)); - expect(adminListAfterAddAdmin).to.be.contains(Bob.address); - - const changeAdminTxCharlie = api.tx.nft.addCollectionAdmin(collectionId, Charlie.address); - await submitTransactionAsync(Bob, changeAdminTxCharlie); - const adminListAfterAddNewAdmin: any = (await api.query.nft.adminList(collectionId)); - expect(adminListAfterAddNewAdmin).to.be.contains(Bob.address); - expect(adminListAfterAddNewAdmin).to.be.contains(Charlie.address); - }); - }); -}); - -describe('Negative Integration Test addCollectionAdmin(collection_id, new_admin_id):', () => { - it("Not owner can't add collection admin.", async () => { - await usingApi(async (api) => { - const collectionId = await createCollectionExpectSuccess(); - const alice = privateKey('//Alice'); - const nonOwner = privateKey('//Bob_stash'); - - const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, alice.address); - await expect(submitTransactionExpectFailAsync(nonOwner, changeAdminTx)).to.be.rejected; - - const adminListAfterAddAdmin: any = (await api.query.nft.adminList(collectionId)); - expect(adminListAfterAddAdmin).not.to.be.contains(alice.address); - - // Verifying that nothing bad happened (network is live, new collections can be created, etc.) - await createCollectionExpectSuccess(); - }); - }); - it("Can't add collection admin of not existing collection.", async () => { - await usingApi(async (api) => { - // tslint:disable-next-line: no-bitwise - const collectionId = (1 << 32) - 1; - const alice = privateKey('//Alice'); - const bob = privateKey('//Bob'); - - const changeOwnerTx = api.tx.nft.addCollectionAdmin(collectionId, bob.address); - await expect(submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected; - - // Verifying that nothing bad happened (network is live, new collections can be created, etc.) - await createCollectionExpectSuccess(); - }); - }); - - it("Can't add an admin to a destroyed collection.", async () => { - await usingApi(async (api) => { - const collectionId = await createCollectionExpectSuccess(); - const Alice = privateKey('//Alice'); - const Bob = privateKey('//Bob'); - await destroyCollectionExpectSuccess(collectionId); - const changeOwnerTx = api.tx.nft.addCollectionAdmin(collectionId, Bob.address); - await expect(submitTransactionExpectFailAsync(Alice, changeOwnerTx)).to.be.rejected; - - // Verifying that nothing bad happened (network is live, new collections can be created, etc.) - await createCollectionExpectSuccess(); - }); - }); - - it('Add an admin to a collection that has reached the maximum number of admins limit', async () => { - await usingApi(async (api: ApiPromise) => { - const Alice = privateKey('//Alice'); - const accounts = [ - 'GsvVmjr1CBHwQHw84pPHMDxgNY3iBLz6Qn7qS3CH8qPhrHz', - 'FoQJpPyadYccjavVdTWxpxU7rUEaYhfLCPwXgkfD6Zat9QP', - 'JKspFU6ohf1Grg3Phdzj2pSgWvsYWzSfKghhfzMbdhNBWs5', - 'Fr4NzY1udSFFLzb2R3qxVQkwz9cZraWkyfH4h3mVVk7BK7P', - 'DfnTB4z7eUvYRqcGtTpFsLC69o6tvBSC1pEv8vWPZFtCkaK', - 'HnMAUz7r2G8G3hB27SYNyit5aJmh2a5P4eMdDtACtMFDbam', - 'DE14BzQ1bDXWPKeLoAqdLAm1GpyAWaWF1knF74cEZeomTBM', - ]; - const collectionId = await createCollectionExpectSuccess(); - - const chainLimit = await api.query.nft.chainLimit() as unknown as { CollectionAdminsLimit: BN }; - const chainAdminLimit = chainLimit.CollectionAdminsLimit.toNumber(); - expect(chainAdminLimit).to.be.equal(5); - - for (let i = 0; i < chainAdminLimit; i++) { - const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, accounts[i]); - await submitTransactionAsync(Alice, changeAdminTx); - const adminListAfterAddAdmin: any = (await api.query.nft.adminList(collectionId)); - expect(adminListAfterAddAdmin).to.be.contains(accounts[i]); - } - - const tx = api.tx.nft.addCollectionAdmin(collectionId, accounts[chainAdminLimit]); - await expect(submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected; - }); - }); -}); +// +// This file is subject to the terms and conditions defined in +// file 'LICENSE', which is part of this source code package. +// + +import { ApiPromise } from '@polkadot/api'; +import BN from 'bn.js'; +import chai from 'chai'; +import chaiAsPromised from 'chai-as-promised'; +import privateKey from './substrate/privateKey'; +import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api'; +import {createCollectionExpectSuccess, destroyCollectionExpectSuccess} from './util/helpers'; + +chai.use(chaiAsPromised); +const expect = chai.expect; + +describe('Integration Test addCollectionAdmin(collection_id, new_admin_id):', () => { + it('Add collection admin.', async () => { + await usingApi(async (api) => { + const collectionId = await createCollectionExpectSuccess(); + const alice = privateKey('//Alice'); + const bob = privateKey('//Bob'); + + const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON(); + expect(collection.Owner.toString()).to.be.eq(alice.address); + + const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, bob.address); + await submitTransactionAsync(alice, changeAdminTx); + + const adminListAfterAddAdmin: any = (await api.query.nft.adminList(collectionId)); + expect(adminListAfterAddAdmin).to.be.contains(bob.address); + }); + }); + + it('Add admin using added collection admin.', async () => { + await usingApi(async (api) => { + const collectionId = await createCollectionExpectSuccess(); + const Alice = privateKey('//Alice'); + const Bob = privateKey('//Bob'); + const Charlie = privateKey('//CHARLIE'); + + const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON(); + expect(collection.Owner.toString()).to.be.eq(Alice.address); + + const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, Bob.address); + await submitTransactionAsync(Alice, changeAdminTx); + + const adminListAfterAddAdmin: any = (await api.query.nft.adminList(collectionId)); + expect(adminListAfterAddAdmin).to.be.contains(Bob.address); + + const changeAdminTxCharlie = api.tx.nft.addCollectionAdmin(collectionId, Charlie.address); + await submitTransactionAsync(Bob, changeAdminTxCharlie); + const adminListAfterAddNewAdmin: any = (await api.query.nft.adminList(collectionId)); + expect(adminListAfterAddNewAdmin).to.be.contains(Bob.address); + expect(adminListAfterAddNewAdmin).to.be.contains(Charlie.address); + }); + }); +}); + +describe('Negative Integration Test addCollectionAdmin(collection_id, new_admin_id):', () => { + it("Not owner can't add collection admin.", async () => { + await usingApi(async (api) => { + const collectionId = await createCollectionExpectSuccess(); + const alice = privateKey('//Alice'); + const nonOwner = privateKey('//Bob_stash'); + + const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, alice.address); + await expect(submitTransactionExpectFailAsync(nonOwner, changeAdminTx)).to.be.rejected; + + const adminListAfterAddAdmin: any = (await api.query.nft.adminList(collectionId)); + expect(adminListAfterAddAdmin).not.to.be.contains(alice.address); + + // Verifying that nothing bad happened (network is live, new collections can be created, etc.) + await createCollectionExpectSuccess(); + }); + }); + it("Can't add collection admin of not existing collection.", async () => { + await usingApi(async (api) => { + // tslint:disable-next-line: no-bitwise + const collectionId = (1 << 32) - 1; + const alice = privateKey('//Alice'); + const bob = privateKey('//Bob'); + + const changeOwnerTx = api.tx.nft.addCollectionAdmin(collectionId, bob.address); + await expect(submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected; + + // Verifying that nothing bad happened (network is live, new collections can be created, etc.) + await createCollectionExpectSuccess(); + }); + }); + + it("Can't add an admin to a destroyed collection.", async () => { + await usingApi(async (api) => { + const collectionId = await createCollectionExpectSuccess(); + const Alice = privateKey('//Alice'); + const Bob = privateKey('//Bob'); + await destroyCollectionExpectSuccess(collectionId); + const changeOwnerTx = api.tx.nft.addCollectionAdmin(collectionId, Bob.address); + await expect(submitTransactionExpectFailAsync(Alice, changeOwnerTx)).to.be.rejected; + + // Verifying that nothing bad happened (network is live, new collections can be created, etc.) + await createCollectionExpectSuccess(); + }); + }); + + it('Add an admin to a collection that has reached the maximum number of admins limit', async () => { + await usingApi(async (api: ApiPromise) => { + const Alice = privateKey('//Alice'); + const accounts = [ + 'GsvVmjr1CBHwQHw84pPHMDxgNY3iBLz6Qn7qS3CH8qPhrHz', + 'FoQJpPyadYccjavVdTWxpxU7rUEaYhfLCPwXgkfD6Zat9QP', + 'JKspFU6ohf1Grg3Phdzj2pSgWvsYWzSfKghhfzMbdhNBWs5', + 'Fr4NzY1udSFFLzb2R3qxVQkwz9cZraWkyfH4h3mVVk7BK7P', + 'DfnTB4z7eUvYRqcGtTpFsLC69o6tvBSC1pEv8vWPZFtCkaK', + 'HnMAUz7r2G8G3hB27SYNyit5aJmh2a5P4eMdDtACtMFDbam', + 'DE14BzQ1bDXWPKeLoAqdLAm1GpyAWaWF1knF74cEZeomTBM', + ]; + const collectionId = await createCollectionExpectSuccess(); + + const chainLimit = await api.query.nft.chainLimit() as unknown as { CollectionAdminsLimit: BN }; + const chainAdminLimit = chainLimit.CollectionAdminsLimit.toNumber(); + expect(chainAdminLimit).to.be.equal(5); + + for (let i = 0; i < chainAdminLimit; i++) { + const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, accounts[i]); + await submitTransactionAsync(Alice, changeAdminTx); + const adminListAfterAddAdmin: any = (await api.query.nft.adminList(collectionId)); + expect(adminListAfterAddAdmin).to.be.contains(accounts[i]); + } + + const tx = api.tx.nft.addCollectionAdmin(collectionId, accounts[chainAdminLimit]); + await expect(submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected; + }); + }); +}); --- a/tests/src/change-collection-owner.test.ts +++ b/tests/src/change-collection-owner.test.ts @@ -19,13 +19,13 @@ const alice = privateKey('//Alice'); const bob = privateKey('//Bob'); - const collection: any = (await api.query.nft.collection(collectionId)); + const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON(); expect(collection.Owner.toString()).to.be.eq(alice.address); const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address); await submitTransactionAsync(alice, changeOwnerTx); - const collectionAfterOwnerChange: any = (await api.query.nft.collection(collectionId)); + const collectionAfterOwnerChange: any = (await api.query.nft.collectionById(collectionId)).toJSON(); expect(collectionAfterOwnerChange.Owner.toString()).to.be.eq(bob.address); }); }); @@ -41,7 +41,7 @@ const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address); await expect(submitTransactionExpectFailAsync(bob, changeOwnerTx)).to.be.rejected; - const collectionAfterOwnerChange: any = (await api.query.nft.collection(collectionId)); + const collectionAfterOwnerChange: any = (await api.query.nft.collectionById(collectionId)).toJSON(); expect(collectionAfterOwnerChange.Owner.toString()).to.be.eq(alice.address); // Verifying that nothing bad happened (network is live, new collections can be created, etc.) --- a/tests/src/removeCollectionAdmin.test.ts +++ b/tests/src/removeCollectionAdmin.test.ts @@ -19,7 +19,7 @@ const collectionId = await createCollectionExpectSuccess(); const Alice = privateKey('//Alice'); const Bob = privateKey('//Bob'); - const collection: any = (await api.query.nft.collection(collectionId)); + const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON(); expect(collection.Owner.toString()).to.be.eq(Alice.address); // first - add collection admin Bob const addAdminTx = api.tx.nft.addCollectionAdmin(collectionId, Bob.address); --- a/tests/src/setCollectionLimits.test.ts +++ b/tests/src/setCollectionLimits.test.ts @@ -61,12 +61,12 @@ // tslint:disable-next-line:no-unused-expression expect(result.success).to.be.true; - expect(collectionInfo.Limits.AccountTokenOwnershipLimit.toNumber()).to.be.equal(accountTokenOwnershipLimit); - expect(collectionInfo.Limits.SponsoredMintSize.toNumber()).to.be.equal(sponsoredDataSize); - expect(collectionInfo.Limits.TokenLimit.toNumber()).to.be.equal(tokenLimit); - expect(collectionInfo.Limits.SponsorTimeout.toNumber()).to.be.equal(sponsorTimeout); - expect(collectionInfo.Limits.OwnerCanTransfer.valueOf()).to.be.true; - expect(collectionInfo.Limits.OwnerCanDestroy.valueOf()).to.be.true; + expect(collectionInfo.Limits.AccountTokenOwnershipLimit).to.be.equal(accountTokenOwnershipLimit); + expect(collectionInfo.Limits.SponsoredDataSize).to.be.equal(sponsoredDataSize); + expect(collectionInfo.Limits.TokenLimit).to.be.equal(tokenLimit); + expect(collectionInfo.Limits.SponsorTimeout).to.be.equal(sponsorTimeout); + expect(collectionInfo.Limits.OwnerCanTransfer).to.be.true; + expect(collectionInfo.Limits.OwnerCanDestroy).to.be.true; }); }); }); --- a/tests/src/setConstOnChainSchema.test.ts +++ b/tests/src/setConstOnChainSchema.test.ts @@ -36,7 +36,7 @@ it('Run extrinsic with parameters of the collection id, set the scheme', async () => { await usingApi(async (api) => { const collectionId = await createCollectionExpectSuccess(); - const collection: any = (await api.query.nft.collection(collectionId)); + const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON(); expect(collection.Owner.toString()).to.be.eq(Alice.address); const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema); await submitTransactionAsync(Alice, setShema); @@ -48,7 +48,7 @@ const collectionId = await createCollectionExpectSuccess(); const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema); await submitTransactionAsync(Alice, setShema); - const collection: any = (await api.query.nft.collection(collectionId)); + const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON(); expect(collection.ConstOnChainSchema.toString()).to.be.eq(Shema); }); @@ -86,7 +86,7 @@ it('Execute method not on behalf of the collection owner', async () => { await usingApi(async (api) => { const collectionId = await createCollectionExpectSuccess(); - const collection: any = (await api.query.nft.collection(collectionId)); + const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON(); expect(collection.Owner.toString()).to.be.eq(Alice.address); const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema); await expect(submitTransactionExpectFailAsync(Bob, setShema)).to.be.rejected; --- a/tests/src/setOffchainSchema.test.ts +++ b/tests/src/setOffchainSchema.test.ts @@ -36,7 +36,7 @@ await setOffchainSchemaExpectSuccess(alice, collectionId, DATA); const collection = await queryCollectionExpectSuccess(collectionId); - expect(Array.from(collection.OffchainSchema)).to.be.deep.equal(DATA); + expect(collection.OffchainSchema).to.be.equal('0x' + Buffer.from(DATA).toString('hex')); }); }); --- a/tests/src/setVariableOnChainSchema.test.ts +++ b/tests/src/setVariableOnChainSchema.test.ts @@ -1,96 +1,96 @@ -// -// This file is subject to the terms and conditions defined in -// file 'LICENSE', which is part of this source code package. -// - -import { Keyring } from '@polkadot/api'; -import { IKeyringPair } from '@polkadot/types/types'; -import chai from 'chai'; -import chaiAsPromised from 'chai-as-promised'; -import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api'; -import { - createCollectionExpectSuccess, - destroyCollectionExpectSuccess, -} from './util/helpers'; - -chai.use(chaiAsPromised); -const expect = chai.expect; - -let Alice: IKeyringPair; -let Bob: IKeyringPair; -let Schema: any; -let largeSchema: any; - -before(async () => { - await usingApi(async (api) => { - const keyring = new Keyring({ type: 'sr25519' }); - Alice = keyring.addFromUri('//Alice'); - Bob = keyring.addFromUri('//Bob'); - Schema = '0x31'; - largeSchema = new Array(4097).fill(0xff); - - }); -}); -describe('Integration Test ext. setVariableOnChainSchema()', () => { - - it('Run extrinsic with parameters of the collection id, set the scheme', async () => { - await usingApi(async (api) => { - const collectionId = await createCollectionExpectSuccess(); - const collection: any = (await api.query.nft.collection(collectionId)); - expect(collection.Owner.toString()).to.be.eq(Alice.address); - const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema); - await submitTransactionAsync(Alice, setSchema); - }); - }); - - it('Checking collection data using the setVariableOnChainSchema parameter', async () => { - await usingApi(async (api) => { - const collectionId = await createCollectionExpectSuccess(); - const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema); - await submitTransactionAsync(Alice, setSchema); - const collection: any = (await api.query.nft.collection(collectionId)); - expect(collection.VariableOnChainSchema.toString()).to.be.eq(Schema); - - }); - }); -}); - -describe('Negative Integration Test ext. setVariableOnChainSchema()', () => { - - it('Set a non-existent collection', async () => { - await usingApi(async (api) => { - // tslint:disable-next-line: radix - const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1; - const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema); - await expect(submitTransactionExpectFailAsync(Alice, setSchema)).to.be.rejected; - }); - }); - - it('Set a previously deleted collection', async () => { - await usingApi(async (api) => { - const collectionId = await createCollectionExpectSuccess(); - await destroyCollectionExpectSuccess(collectionId); - const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema); - await expect(submitTransactionExpectFailAsync(Alice, setSchema)).to.be.rejected; - }); - }); - - it('Set invalid data in schema (size too large:> 1024b)', async () => { - await usingApi(async (api) => { - const collectionId = await createCollectionExpectSuccess(); - const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, largeSchema); - await expect(submitTransactionExpectFailAsync(Alice, setSchema)).to.be.rejected; - }); - }); - - it('Execute method not on behalf of the collection owner', async () => { - await usingApi(async (api) => { - const collectionId = await createCollectionExpectSuccess(); - const collection: any = (await api.query.nft.collection(collectionId)); - expect(collection.Owner.toString()).to.be.eq(Alice.address); - const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema); - await expect(submitTransactionExpectFailAsync(Bob, setSchema)).to.be.rejected; - }); - }); - -}); +// +// This file is subject to the terms and conditions defined in +// file 'LICENSE', which is part of this source code package. +// + +import { Keyring } from '@polkadot/api'; +import { IKeyringPair } from '@polkadot/types/types'; +import chai from 'chai'; +import chaiAsPromised from 'chai-as-promised'; +import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api'; +import { + createCollectionExpectSuccess, + destroyCollectionExpectSuccess, +} from './util/helpers'; + +chai.use(chaiAsPromised); +const expect = chai.expect; + +let Alice: IKeyringPair; +let Bob: IKeyringPair; +let Schema: any; +let largeSchema: any; + +before(async () => { + await usingApi(async (api) => { + const keyring = new Keyring({ type: 'sr25519' }); + Alice = keyring.addFromUri('//Alice'); + Bob = keyring.addFromUri('//Bob'); + Schema = '0x31'; + largeSchema = new Array(4097).fill(0xff); + + }); +}); +describe('Integration Test ext. setVariableOnChainSchema()', () => { + + it('Run extrinsic with parameters of the collection id, set the scheme', async () => { + await usingApi(async (api) => { + const collectionId = await createCollectionExpectSuccess(); + const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON(); + expect(collection.Owner.toString()).to.be.eq(Alice.address); + const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema); + await submitTransactionAsync(Alice, setSchema); + }); + }); + + it('Checking collection data using the setVariableOnChainSchema parameter', async () => { + await usingApi(async (api) => { + const collectionId = await createCollectionExpectSuccess(); + const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema); + await submitTransactionAsync(Alice, setSchema); + const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON(); + expect(collection.VariableOnChainSchema.toString()).to.be.eq(Schema); + + }); + }); +}); + +describe('Negative Integration Test ext. setVariableOnChainSchema()', () => { + + it('Set a non-existent collection', async () => { + await usingApi(async (api) => { + // tslint:disable-next-line: radix + const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1; + const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema); + await expect(submitTransactionExpectFailAsync(Alice, setSchema)).to.be.rejected; + }); + }); + + it('Set a previously deleted collection', async () => { + await usingApi(async (api) => { + const collectionId = await createCollectionExpectSuccess(); + await destroyCollectionExpectSuccess(collectionId); + const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema); + await expect(submitTransactionExpectFailAsync(Alice, setSchema)).to.be.rejected; + }); + }); + + it('Set invalid data in schema (size too large:> 1024b)', async () => { + await usingApi(async (api) => { + const collectionId = await createCollectionExpectSuccess(); + const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, largeSchema); + await expect(submitTransactionExpectFailAsync(Alice, setSchema)).to.be.rejected; + }); + }); + + it('Execute method not on behalf of the collection owner', async () => { + await usingApi(async (api) => { + const collectionId = await createCollectionExpectSuccess(); + const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON(); + expect(collection.Owner.toString()).to.be.eq(Alice.address); + const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema); + await expect(submitTransactionExpectFailAsync(Bob, setSchema)).to.be.rejected; + }); + }); + +}); --- a/tests/src/types.ts +++ b/tests/src/types.ts @@ -13,10 +13,11 @@ Description: [BN, BN]; // utf16 isReFungible: boolean; Limits: { - AccountTokenOwnershipLimit: BN; - SponsoredMintSize: BN; - TokenLimit: BN; - SponsorTimeout: BN; + AccountTokenOwnershipLimit: number; + SponsoredDataSize: number; + SponsoredDataRateLimit?: number, + TokenLimit: number; + SponsorTimeout: number; OwnerCanTransfer: boolean; OwnerCanDestroy: boolean; }; --- a/tests/src/util/helpers.ts +++ b/tests/src/util/helpers.ts @@ -212,7 +212,7 @@ const BcollectionCount = parseInt((await api.query.nft.createdCollectionCount()).toString(), 10); // Get the collection - const collection: any = (await api.query.nft.collection(result.collectionId)).toJSON(); + const collection: any = (await api.query.nft.collectionById(result.collectionId)).toJSON(); // What to expect // tslint:disable-next-line:no-unused-expression @@ -324,18 +324,17 @@ const result = getDestroyResult(events); // Get the collection - const collection: any = (await api.query.nft.collection(collectionId)).toJSON(); + const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON(); // What to expect expect(result).to.be.true; - expect(collection).to.be.not.null; - expect(collection.Owner).to.be.equal(nullPublicKey); + expect(collection).to.be.null; }); } export async function queryCollectionLimits(collectionId: number) { return await usingApi(async (api) => { - return ((await api.query.nft.collection(collectionId)).toJSON() as any).Limits; + return ((await api.query.nft.collectionById(collectionId)).toJSON() as any).Limits; }); } @@ -373,7 +372,7 @@ const result = getGenericResult(events); // Get the collection - const collection: any = (await api.query.nft.collection(collectionId)).toJSON(); + const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON(); // What to expect expect(result.success).to.be.true; @@ -392,7 +391,7 @@ const result = getGenericResult(events); // Get the collection - const collection: any = (await api.query.nft.collection(collectionId)).toJSON(); + const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON(); // What to expect expect(result.success).to.be.true; @@ -431,7 +430,7 @@ const result = getGenericResult(events); // Get the collection - const collection: any = (await api.query.nft.collection(collectionId)).toJSON(); + const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON(); // What to expect expect(result.success).to.be.true; @@ -838,7 +837,7 @@ const result = getGenericResult(events); // Get the collection - const collection: any = (await api.query.nft.collection(collectionId)).toJSON(); + const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON(); // What to expect // tslint:disable-next-line:no-unused-expression @@ -864,7 +863,7 @@ const result = getGenericResult(events); // Get the collection - const collection: any = (await api.query.nft.collection(collectionId)).toJSON(); + const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON(); // What to expect // tslint:disable-next-line:no-unused-expression @@ -946,7 +945,7 @@ export const getDetailedCollectionInfo = async (api: ApiPromise, collectionId: number) : Promise => { - return await api.query.nft.collection(collectionId) as unknown as ICollectionInterface; + return (await api.query.nft.collectionById(collectionId)).toJSON() as unknown as ICollectionInterface; }; export const getCreatedCollectionCount = async (api: ApiPromise): Promise => { @@ -956,6 +955,6 @@ export async function queryCollectionExpectSuccess(collectionId: number): Promise { return await usingApi(async (api) => { - return (await api.query.nft.collection(collectionId)) as unknown as ICollectionInterface; + return (await api.query.nft.collectionById(collectionId)).toJSON() as unknown as ICollectionInterface; }); } -- gitstuff