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 setMetadataUpdatePermissionFlagExpectSuccess,15 setVariableMetaDataExpectSuccess,16 setMintPermissionExpectSuccess,17 addToWhiteListExpectSuccess,18 addCollectionAdminExpectSuccess,19 setVariableMetaDataExpectFailure,20 setMetadataUpdatePermissionFlagExpectFailure21} from './util/helpers';2223chai.use(chaiAsPromised);2425describe('Metadata update permissions ', () => {26 it('Set variable metadata with ItemOwner permission flag', async () => {27 await usingApi(async () => {28 const Alice = privateKey('//Alice');29 const Bob = privateKey('//Bob');3031 const data = [1, 2, 254, 255];3233 34 const nftCollectionId = await createCollectionExpectSuccess();35 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');36 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, "ItemOwner");3738 await setVariableMetaDataExpectSuccess(Alice, nftCollectionId, newNftTokenId, data);39 });40 });4142 it('User can\'n set variable metadata with ItemOwner permission flag', async () => {43 await usingApi(async () => {44 const Alice = privateKey('//Alice');45 const Bob = privateKey('//Bob');46 47 const data = [1, 2, 254, 255];48 49 50 const nftCollectionId = await createCollectionExpectSuccess();51 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');52 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, "ItemOwner");5354 await setMintPermissionExpectSuccess(Alice, nftCollectionId, true);55 await addToWhiteListExpectSuccess(Alice, nftCollectionId, Bob.address);56 await addCollectionAdminExpectSuccess(Alice, nftCollectionId, Bob);57 58 await setVariableMetaDataExpectFailure(Bob, nftCollectionId, newNftTokenId, data);59 });60 });6162 it('Admin can set variable metadata with Admin permission flag', async () => {63 await usingApi(async () => {64 const Alice = privateKey('//Alice');65 const Bob = privateKey('//Bob');66 67 const data = [1, 2, 254, 255];68 69 70 const nftCollectionId = await createCollectionExpectSuccess();71 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');72 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, "Admin");7374 await setMintPermissionExpectSuccess(Alice, nftCollectionId, true);75 await addToWhiteListExpectSuccess(Alice, nftCollectionId, Bob.address);76 await addCollectionAdminExpectSuccess(Alice, nftCollectionId, Bob);77 78 await setVariableMetaDataExpectSuccess(Bob, nftCollectionId, newNftTokenId, data);79 });80 });8182 it('Nobody can set variable metadata with None flag', async () => {83 await usingApi(async () => {84 const Alice = privateKey('//Alice');85 const Bob = privateKey('//Bob');86 87 const data = [1, 2, 254, 255];88 89 90 const nftCollectionId = await createCollectionExpectSuccess();91 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');92 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, "None");93 94 await setVariableMetaDataExpectFailure(Alice, nftCollectionId, newNftTokenId, data);95 });96 });9798 it('Nobody can set variable metadata flag after freeze', async () => {99 await usingApi(async () => {100 const Alice = privateKey('//Alice');101 const Bob = privateKey('//Bob');102 103 const data = [1, 2, 254, 255];104 105 106 const nftCollectionId = await createCollectionExpectSuccess();107 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, "None");108 await setMetadataUpdatePermissionFlagExpectFailure(Alice, nftCollectionId, "Admin");109 110 });111 });112});