123456import { IKeyringPair } from '@polkadot/types/types';7import privateKey from './substrate/privateKey';8import usingApi from './substrate/substrate-api';9import {10 addToWhiteListExpectSuccess,11 createCollectionExpectSuccess,12 createItemExpectFailure,13 createItemExpectSuccess,14 destroyCollectionExpectSuccess,15 enableWhiteListExpectSuccess,16 findNotExistingCollection,17 setMintPermissionExpectFailure,18 setMintPermissionExpectSuccess,19} from './util/helpers';2021describe('Integration Test setMintPermission', () => {22 let alice: IKeyringPair;23 let bob: IKeyringPair;2425 before(async () => {26 await usingApi(async () => {27 alice = privateKey('//Alice');28 bob = privateKey('//Bob');29 });30 });3132 it('ensure white-listed non-privileged address can mint tokens', async () => {33 await usingApi(async () => {34 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });35 await enableWhiteListExpectSuccess(alice, collectionId);36 await setMintPermissionExpectSuccess(alice, collectionId, true);37 await addToWhiteListExpectSuccess(alice, collectionId, bob.address);3839 await createItemExpectSuccess(bob, collectionId, 'NFT');40 });41 });4243 it('can be enabled twice', async () => {44 await usingApi(async () => {45 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });46 await setMintPermissionExpectSuccess(alice, collectionId, true);47 await setMintPermissionExpectSuccess(alice, collectionId, true);48 });49 });5051 it('can be disabled twice', async () => {52 await usingApi(async () => {53 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });54 await setMintPermissionExpectSuccess(alice, collectionId, true);55 await setMintPermissionExpectSuccess(alice, collectionId, false);56 await setMintPermissionExpectSuccess(alice, collectionId, false);57 });58 });59});6061describe('Negative Integration Test setMintPermission', () => {62 let alice: IKeyringPair;63 let bob: IKeyringPair;6465 before(async () => {66 await usingApi(async () => {67 alice = privateKey('//Alice');68 bob = privateKey('//Bob');69 });70 });7172 it('fails on not existing collection', async () => {73 await usingApi(async (api) => {74 const nonExistingCollection = await findNotExistingCollection(api);75 await setMintPermissionExpectFailure(alice, nonExistingCollection, true);76 });77 });7879 it('fails on removed collection', async () => {80 await usingApi(async () => {81 const removedCollectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });82 await destroyCollectionExpectSuccess(removedCollectionId);8384 await setMintPermissionExpectFailure(alice, removedCollectionId, true);85 });86 });8788 it('fails when not collection owner tries to set mint status', async () => {89 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });90 await enableWhiteListExpectSuccess(alice, collectionId);91 await setMintPermissionExpectFailure(bob, collectionId, true);92 });9394 it('ensure non-white-listed non-privileged address can\'t mint tokens', async () => {95 await usingApi(async () => {96 const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });97 await enableWhiteListExpectSuccess(alice, collectionId);98 await setMintPermissionExpectSuccess(alice, collectionId, true);99100 await createItemExpectFailure(bob, collectionId, 'NFT');101 });102 });103});