git.delta.rocks / unique-network / refs/commits / 5985fa11530c

difftreelog

source

tests/src/metadataUpdate.test.ts8.4 KiBsourcehistory
1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617import chai from 'chai';18import chaiAsPromised from 'chai-as-promised';19import privateKey from './substrate/privateKey';20import usingApi from './substrate/substrate-api';21import {22  createItemExpectSuccess,23  createCollectionExpectSuccess,24  enablePublicMintingExpectSuccess,25  enableAllowListExpectSuccess,26  setMetadataUpdatePermissionFlagExpectSuccess,27  setVariableMetaDataExpectSuccess,28  setMintPermissionExpectSuccess,29  addToAllowListExpectSuccess,30  addCollectionAdminExpectSuccess,31  setVariableMetaDataExpectFailure,32  setMetadataUpdatePermissionFlagExpectFailure,33} from './util/helpers';3435chai.use(chaiAsPromised);3637describe('Metadata update permissions with ItemOwner flag', () => {38  it('ItemOwner can set variable metadata with ItemOwner permission flag', async () => {39    await usingApi(async () => {40      const alice = privateKey('//Alice');4142      const data = [1, 2, 254, 255];4344      // nft45      const nftCollectionId = await createCollectionExpectSuccess();46      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');47      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'ItemOwner');4849      await setVariableMetaDataExpectSuccess(alice, nftCollectionId, newNftTokenId, data);50    });51  });5253  it('Admin can\'n set variable metadata with ItemOwner permission flag', async () => {54    await usingApi(async () => {55      const alice = privateKey('//Alice');56      const bob = privateKey('//Bob');5758      const data = [1, 2, 254, 255];5960      // nft61      const nftCollectionId = await createCollectionExpectSuccess();62      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');63      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'ItemOwner');6465      await setMintPermissionExpectSuccess(alice, nftCollectionId, true);66      await addToAllowListExpectSuccess(alice, nftCollectionId, bob.address);67      await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address);6869      await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);70    });71  });7273  it('User can\'n set variable metadata with ItemOwner permission flag', async () => {74    await usingApi(async () => {75      const alice = privateKey('//Alice');76      const bob = privateKey('//Bob');7778      const data = [1, 2, 254, 255];7980      // nft81      const nftCollectionId = await createCollectionExpectSuccess();82      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');83      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'ItemOwner');8485      await setMintPermissionExpectSuccess(alice, nftCollectionId, true);86      await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);87    });88  });89});9091describe('Metadata update permissions with Admin flag', () => {92  it('Admin can set variable metadata with Admin permission flag', async () => {93    await usingApi(async () => {94      const alice = privateKey('//Alice');95      const bob = privateKey('//Bob');9697      const data = [1, 2, 254, 255];9899      // nft100      const nftCollectionId = await createCollectionExpectSuccess();101      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');102      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'Admin');103104      await setMintPermissionExpectSuccess(alice, nftCollectionId, true);105      await addToAllowListExpectSuccess(alice, nftCollectionId, bob.address);106      await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address);107108      await setVariableMetaDataExpectSuccess(bob, nftCollectionId, newNftTokenId, data);109    });110  });111112  it('User can\'n can set variable metadata with Admin permission flag', async () => {113    await usingApi(async () => {114      const alice = privateKey('//Alice');115      const bob = privateKey('//Bob');116117      const data = [1, 2, 254, 255];118119      // nft120      const nftCollectionId = await createCollectionExpectSuccess();121      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');122      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'Admin');123124      await setMintPermissionExpectSuccess(alice, nftCollectionId, true);125      await addToAllowListExpectSuccess(alice, nftCollectionId, bob.address);126      await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address);127128      await setVariableMetaDataExpectSuccess(bob, nftCollectionId, newNftTokenId, data);129    });130  });131132  it('ItemOwner can\'n can set variable metadata with Admin permission flag', async () => {133    await usingApi(async () => {134      const alice = privateKey('//Alice');135      const bob = privateKey('//Bob');136137      const data = [1, 2, 254, 255];138139      // nft140      const nftCollectionId = await createCollectionExpectSuccess();141      await enablePublicMintingExpectSuccess(alice, nftCollectionId);142      await addToAllowListExpectSuccess(alice, nftCollectionId, bob.address);143      await enableAllowListExpectSuccess(alice, nftCollectionId);144      const newNftTokenId = await createItemExpectSuccess(bob, nftCollectionId, 'NFT');145      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'Admin');146147      await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);148    });149  });150});151152describe('Metadata update permissions with None flag', () => {153  it('Nobody can set variable metadata with None flag (Regular)', async () => {154    await usingApi(async () => {155      const alice = privateKey('//Alice');156      const bob = privateKey('//Bob');157158      const data = [1, 2, 254, 255];159160      // nft161      const nftCollectionId = await createCollectionExpectSuccess();162      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');163      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'None');164165      await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);166    });167  });168169  it('Nobody can set variable metadata with None flag (Admin)', async () => {170    await usingApi(async () => {171      const alice = privateKey('//Alice');172      const bob = privateKey('//Bob');173174      const data = [1, 2, 254, 255];175176      // nft177      const nftCollectionId = await createCollectionExpectSuccess();178      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');179      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'None');180181      await setMintPermissionExpectSuccess(alice, nftCollectionId, true);182      await addToAllowListExpectSuccess(alice, nftCollectionId, bob.address);183      await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address);184185      await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);186    });187  });188189  it('Nobody can set variable metadata with None flag (ItemOwner)', async () => {190    await usingApi(async () => {191      const alice = privateKey('//Alice');192193      const data = [1, 2, 254, 255];194195      // nft196      const nftCollectionId = await createCollectionExpectSuccess();197      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');198      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'None');199200      await setVariableMetaDataExpectFailure(alice, nftCollectionId, newNftTokenId, data);201    });202  });203204  it('Nobody can set variable metadata flag after freeze', async () => {205    await usingApi(async () => {206      const alice = privateKey('//Alice');207208      // nft209      const nftCollectionId = await createCollectionExpectSuccess();210      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'None');211      await setMetadataUpdatePermissionFlagExpectFailure(alice, nftCollectionId, 'Admin');212    });213  });214});