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 setMetadataUpdatePermissionFlagExpectFailure,21} 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');2930 const data = [1, 2, 254, 255];3132 33 const nftCollectionId = await createCollectionExpectSuccess();34 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');35 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'ItemOwner');3637 await setVariableMetaDataExpectSuccess(Alice, nftCollectionId, newNftTokenId, data);38 });39 });4041 it('User can\'n set variable metadata with ItemOwner permission flag', async () => {42 await usingApi(async () => {43 const Alice = privateKey('//Alice');44 const Bob = privateKey('//Bob');45 46 const data = [1, 2, 254, 255];47 48 49 const nftCollectionId = await createCollectionExpectSuccess();50 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');51 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'ItemOwner');5253 await setMintPermissionExpectSuccess(Alice, nftCollectionId, true);54 await addToWhiteListExpectSuccess(Alice, nftCollectionId, Bob.address);55 await addCollectionAdminExpectSuccess(Alice, nftCollectionId, Bob);56 57 await setVariableMetaDataExpectFailure(Bob, nftCollectionId, newNftTokenId, data);58 });59 });6061 it('Admin can set variable metadata with Admin permission flag', async () => {62 await usingApi(async () => {63 const Alice = privateKey('//Alice');64 const Bob = privateKey('//Bob');65 66 const data = [1, 2, 254, 255];67 68 69 const nftCollectionId = await createCollectionExpectSuccess();70 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');71 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'Admin');7273 await setMintPermissionExpectSuccess(Alice, nftCollectionId, true);74 await addToWhiteListExpectSuccess(Alice, nftCollectionId, Bob.address);75 await addCollectionAdminExpectSuccess(Alice, nftCollectionId, Bob);76 77 await setVariableMetaDataExpectSuccess(Bob, nftCollectionId, newNftTokenId, data);78 });79 });8081 it('Nobody can set variable metadata with None flag', async () => {82 await usingApi(async () => {83 const Alice = privateKey('//Alice');84 85 const data = [1, 2, 254, 255];86 87 88 const nftCollectionId = await createCollectionExpectSuccess();89 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');90 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'None');91 92 await setVariableMetaDataExpectFailure(Alice, nftCollectionId, newNftTokenId, data);93 });94 });9596 it('Nobody can set variable metadata flag after freeze', async () => {97 await usingApi(async () => {98 const Alice = privateKey('//Alice');99 100 101 const nftCollectionId = await createCollectionExpectSuccess();102 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'None');103 await setMetadataUpdatePermissionFlagExpectFailure(Alice, nftCollectionId, 'Admin');104 105 });106 });107});