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');47 48 const data = [1, 2, 254, 255];49 50 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);58 59 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');67 68 const data = [1, 2, 254, 255];69 70 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');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, 'Admin');9394 await setMintPermissionExpectSuccess(Alice, nftCollectionId, true);95 await addToWhiteListExpectSuccess(Alice, nftCollectionId, Bob.address);96 await addCollectionAdminExpectSuccess(Alice, nftCollectionId, Bob);97 98 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');106 107 const data = [1, 2, 254, 255];108 109 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);117 118 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');126 127 const data = [1, 2, 254, 255];128 129 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');136 137 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');147 148 const data = [1, 2, 254, 255];149 150 151 const nftCollectionId = await createCollectionExpectSuccess();152 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');153 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'None');154 155 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');163 164 const data = [1, 2, 254, 255];165 166 167 const nftCollectionId = await createCollectionExpectSuccess();168 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');169 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'None');170 171 await setMintPermissionExpectSuccess(Alice, nftCollectionId, true);172 await addToWhiteListExpectSuccess(Alice, nftCollectionId, Bob.address);173 await addCollectionAdminExpectSuccess(Alice, nftCollectionId, Bob);174 175 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');182 183 const data = [1, 2, 254, 255];184 185 186 const nftCollectionId = await createCollectionExpectSuccess();187 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');188 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'None');189 190 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');197 198 199 const nftCollectionId = await createCollectionExpectSuccess();200 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'None');201 await setMetadataUpdatePermissionFlagExpectFailure(Alice, nftCollectionId, 'Admin'); 202 });203 });204});