1234567891011121314151617import 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 45 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 61 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 81 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 100 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 120 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 140 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 161 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 177 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 196 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 209 const nftCollectionId = await createCollectionExpectSuccess();210 await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'None');211 await setMetadataUpdatePermissionFlagExpectFailure(alice, nftCollectionId, 'Admin');212 });213 });214});