1234567import chai from 'chai';8import chaiAsPromised from 'chai-as-promised';9import privateKey from './substrate/privateKey';10import usingApi from './substrate/substrate-api';11import {12 createItemExpectSuccess,13 createCollectionExpectSuccess,14 enablePublicMintingExpectSuccess,15 enableWhiteListExpectSuccess,16 setMetadataUpdatePermissionFlagExpectSuccess,17 setVariableMetaDataExpectSuccess,18 setMintPermissionExpectSuccess,19 addToWhiteListExpectSuccess,20 addCollectionAdminExpectSuccess,21 setVariableMetaDataExpectFailure,22 setMetadataUpdatePermissionFlagExpectFailure,23} from './util/helpers';2425chai.use(chaiAsPromised);2627describe('Metadata update permissions with ItemOwner flag', () => {28 it('ItemOwner can set variable metadata with ItemOwner permission flag', async () => {29 await usingApi(async () => {30 const alice = privateKey('//Alice');3132 const data = [1, 2, 254, 255];3334 35 const nftCollectionId = await createCollectionExpectSuccess();36 const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');37 await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'ItemOwner');3839 await setVariableMetaDataExpectSuccess(alice, nftCollectionId, newNftTokenId, data);40 });41 });4243 it('Admin can\'n set variable metadata with ItemOwner permission flag', async () => {44 await usingApi(async () => {45 const alice = privateKey('//Alice');46 const bob = privateKey('//Bob');4748 const data = [1, 2, 254, 255];4950 51 const nftCollectionId = await createCollectionExpectSuccess();52 const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');53 await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'ItemOwner');5455 await setMintPermissionExpectSuccess(alice, nftCollectionId, true);56 await addToWhiteListExpectSuccess(alice, nftCollectionId, bob.address);57 await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address);5859 await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);60 });61 });6263 it('User can\'n set variable metadata with ItemOwner permission flag', async () => {64 await usingApi(async () => {65 const alice = privateKey('//Alice');66 const bob = privateKey('//Bob');6768 const data = [1, 2, 254, 255];6970 71 const nftCollectionId = await createCollectionExpectSuccess();72 const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');73 await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'ItemOwner');7475 await setMintPermissionExpectSuccess(alice, nftCollectionId, true);76 await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);77 });78 });79});8081describe('Metadata update permissions with Admin flag', () => {82 it('Admin can set variable metadata with Admin permission flag', async () => {83 await usingApi(async () => {84 const alice = privateKey('//Alice');85 const bob = privateKey('//Bob');8687 const data = [1, 2, 254, 255];8889 90 const nftCollectionId = await createCollectionExpectSuccess();91 const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');92 await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'Admin');9394 await setMintPermissionExpectSuccess(alice, nftCollectionId, true);95 await addToWhiteListExpectSuccess(alice, nftCollectionId, bob.address);96 await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address);9798 await setVariableMetaDataExpectSuccess(bob, nftCollectionId, newNftTokenId, data);99 });100 });101102 it('User can\'n can set variable metadata with Admin permission flag', async () => {103 await usingApi(async () => {104 const alice = privateKey('//Alice');105 const bob = privateKey('//Bob');106107 const data = [1, 2, 254, 255];108109 110 const nftCollectionId = await createCollectionExpectSuccess();111 const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');112 await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'Admin');113114 await setMintPermissionExpectSuccess(alice, nftCollectionId, true);115 await addToWhiteListExpectSuccess(alice, nftCollectionId, bob.address);116 await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address);117118 await setVariableMetaDataExpectSuccess(bob, nftCollectionId, newNftTokenId, data);119 });120 });121122 it('ItemOwner can\'n can set variable metadata with Admin permission flag', async () => {123 await usingApi(async () => {124 const alice = privateKey('//Alice');125 const bob = privateKey('//Bob');126127 const data = [1, 2, 254, 255];128129 130 const nftCollectionId = await createCollectionExpectSuccess();131 await enablePublicMintingExpectSuccess(alice, nftCollectionId);132 await addToWhiteListExpectSuccess(alice, nftCollectionId, bob.address);133 await enableWhiteListExpectSuccess(alice, nftCollectionId);134 const newNftTokenId = await createItemExpectSuccess(bob, nftCollectionId, 'NFT');135 await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'Admin');136137 await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);138 });139 });140});141142describe('Metadata update permissions with None flag', () => {143 it('Nobody can set variable metadata with None flag (Regular)', async () => {144 await usingApi(async () => {145 const alice = privateKey('//Alice');146 const bob = privateKey('//Bob');147148 const data = [1, 2, 254, 255];149150 151 const nftCollectionId = await createCollectionExpectSuccess();152 const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');153 await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'None');154155 await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);156 });157 });158159 it('Nobody can set variable metadata with None flag (Admin)', async () => {160 await usingApi(async () => {161 const alice = privateKey('//Alice');162 const bob = privateKey('//Bob');163164 const data = [1, 2, 254, 255];165166 167 const nftCollectionId = await createCollectionExpectSuccess();168 const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');169 await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'None');170171 await setMintPermissionExpectSuccess(alice, nftCollectionId, true);172 await addToWhiteListExpectSuccess(alice, nftCollectionId, bob.address);173 await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address);174175 await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);176 });177 });178179 it('Nobody can set variable metadata with None flag (ItemOwner)', async () => {180 await usingApi(async () => {181 const alice = privateKey('//Alice');182183 const data = [1, 2, 254, 255];184185 186 const nftCollectionId = await createCollectionExpectSuccess();187 const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');188 await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'None');189190 await setVariableMetaDataExpectFailure(alice, nftCollectionId, newNftTokenId, data);191 });192 });193194 it('Nobody can set variable metadata flag after freeze', async () => {195 await usingApi(async () => {196 const alice = privateKey('//Alice');197198 199 const nftCollectionId = await createCollectionExpectSuccess();200 await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'None');201 await setMetadataUpdatePermissionFlagExpectFailure(alice, nftCollectionId, 'Admin');202 });203 });204});