From 354f20bd91dff344a84caeba502423d4d999494a Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Thu, 24 Mar 2022 12:56:17 +0100 Subject: [PATCH 01/13] refactor constant names --- test/unit/tokens/Nft.test.ts | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/test/unit/tokens/Nft.test.ts b/test/unit/tokens/Nft.test.ts index aa92082d..aeacaa20 100644 --- a/test/unit/tokens/Nft.test.ts +++ b/test/unit/tokens/Nft.test.ts @@ -1,5 +1,4 @@ import { assert } from 'chai' -import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' import { deployContracts, Addresses } from '../../TestContractHandler' import { AbiItem } from 'web3-utils' @@ -18,10 +17,9 @@ describe('NFT', () => { let nftFactory: NftFactory let nftAddress: string - const nftName = 'NFTName' - const nftSymbol = 'NFTSymbol' - const publishMarketFeeAdress = '0xeE9300b7961e0a01d9f0adb863C7A227A07AaD75' - const oceanAddress = '0x967da4048cd07ab37855c090aaf366e4ce1b9f48' + const NFT_NAME = 'NFTName' + const NFT_SYMBOL = 'NFTSymbol' + const NFT_TOKEN_URI = 'https://oceanprotocol.com/nft/' before(async () => { const accounts = await web3.eth.getAccounts() @@ -36,24 +34,21 @@ describe('NFT', () => { }) it('should initialize NFTFactory instance and create a new NFT', async () => { - nftFactory = new NftFactory( - contracts.erc721FactoryAddress, - web3, - ERC721Factory.abi as AbiItem[] - ) + nftFactory = new NftFactory(contracts.erc721FactoryAddress, web3) const nftData: NftCreateData = { - name: nftName, - symbol: nftSymbol, + name: NFT_NAME, + symbol: NFT_SYMBOL, templateIndex: 1, - tokenURI: 'https://oceanprotocol.com/nft/' + tokenURI: NFT_TOKEN_URI } nftAddress = await nftFactory.createNFT(nftOwner, nftData) nftDatatoken = new Nft(web3, ERC721Template.abi as AbiItem[]) }) + it('#getTokenURI', async () => { const tokenURI = await nftDatatoken.getTokenURI(nftAddress, 1) - assert(tokenURI === 'https://oceanprotocol.com/nft/') + assert(tokenURI === NFT_TOKEN_URI) }) it('#createERC20 - should create a new ERC20 DT from NFT contract', async () => { @@ -66,8 +61,8 @@ describe('NFT', () => { '0x0000000000000000000000000000000000000000', '0', '10000', - nftName, - nftSymbol, + NFT_NAME, + NFT_SYMBOL, 1 ) assert(erc20Address !== null) @@ -84,8 +79,8 @@ describe('NFT', () => { '0x0000000000000000000000000000000000000000', '0', '10000', - nftName, - nftSymbol, + NFT_NAME, + NFT_SYMBOL, 1 ) } catch (e) { From fd2af932b61869cb54353a25d9abffd551a41c2c Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Thu, 24 Mar 2022 13:08:04 +0100 Subject: [PATCH 02/13] refactor constants --- test/unit/tokens/Nft.test.ts | 40 +++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/test/unit/tokens/Nft.test.ts b/test/unit/tokens/Nft.test.ts index aeacaa20..b4d26594 100644 --- a/test/unit/tokens/Nft.test.ts +++ b/test/unit/tokens/Nft.test.ts @@ -4,7 +4,7 @@ import { deployContracts, Addresses } from '../../TestContractHandler' import { AbiItem } from 'web3-utils' import sha256 from 'crypto-js/sha256' import { web3 } from '../../config' -import { NftFactory, NftCreateData, Nft } from '../../../src' +import { NftFactory, NftCreateData, Nft, ZERO_ADDRESS } from '../../../src' import { MetadataAndTokenURI } from '../../../src/@types/Erc721' describe('NFT', () => { @@ -20,6 +20,10 @@ describe('NFT', () => { const NFT_NAME = 'NFTName' const NFT_SYMBOL = 'NFTSymbol' const NFT_TOKEN_URI = 'https://oceanprotocol.com/nft/' + const DECRYPTO_URL = 'http://myprovider:8030' + const DECRYPTOR_ADDRESS = '0x123' + const FEE_ZERO = '0' + const CAP_AMOUNT = '10000' before(async () => { const accounts = await web3.eth.getAccounts() @@ -58,9 +62,9 @@ describe('NFT', () => { nftOwner, user1, user2, - '0x0000000000000000000000000000000000000000', - '0', - '10000', + ZERO_ADDRESS, + FEE_ZERO, + CAP_AMOUNT, NFT_NAME, NFT_SYMBOL, 1 @@ -76,9 +80,9 @@ describe('NFT', () => { nftOwner, user1, user2, - '0x0000000000000000000000000000000000000000', - '0', - '10000', + ZERO_ADDRESS, + FEE_ZERO, + CAP_AMOUNT, NFT_NAME, NFT_SYMBOL, 1 @@ -268,9 +272,6 @@ describe('NFT', () => { assert((await nftDatatoken.getNftOwner(nftAddress)) === nftOwner) await nftDatatoken.transferNft(nftAddress, nftOwner, user1, 1) assert((await nftDatatoken.getNftOwner(nftAddress)) === user1) - - // console.log(await nftDatatoken.isErc20Deployer(nftAddress, user1)) - // assert((await nftDatatoken.isErc20Deployer(nftAddress, user1)) === false) }) // Clear permisions @@ -296,8 +297,8 @@ describe('NFT', () => { it('#setMetaData - should succeed to update metadata if metadataUpdater', async () => { await nftDatatoken.addManager(nftAddress, user1, user1) await nftDatatoken.addMetadataUpdater(nftAddress, user1, user1) - const metaDataDecryptorUrl = 'http://myprovider:8030' - const metaDataDecryptorAddress = '0x123' + const metaDataDecryptorUrl = DECRYPTO_URL + const metaDataDecryptorAddress = DECRYPTOR_ADDRESS const metaDataState = 1 const data = web3.utils.asciiToHex(user2) const dataHash = '0x' + sha256(data).toString() @@ -319,11 +320,11 @@ describe('NFT', () => { const metadata = await nftDatatoken.getMetadata(nftAddress) assert(metadata[0] === metaDataDecryptorUrl) assert(metadata[1] === metaDataDecryptorAddress) - // assert((await nftDatatoken.getMetadata(nftAddress)).metaDataDecryptorAddress === metaDataDecryptorAddress) }) + it('#setMetaData - should fail to update metadata if NOT metadataUpdater', async () => { - const metaDataDecryptorUrl = 'http://myprovider:8030' - const metaDataDecryptorAddress = '0x123' + const metaDataDecryptorUrl = DECRYPTO_URL + const metaDataDecryptorAddress = DECRYPTOR_ADDRESS const metaDataState = 1 const data = web3.utils.asciiToHex(user2) const dataHash = '0x' + sha256(data).toString() @@ -349,6 +350,7 @@ describe('NFT', () => { (await nftDatatoken.getNftPermissions(nftAddress, user3)).updateMetadata === false ) }) + it('#setMetaDataState - should succeed to update MetadataState if metadataUpdater', async () => { await nftDatatoken.addManager(nftAddress, user1, user1) await nftDatatoken.addMetadataUpdater(nftAddress, user1, user1) @@ -389,8 +391,8 @@ describe('NFT', () => { const data = web3.utils.asciiToHex(user2) const metadataAndTokenURI: MetadataAndTokenURI = { metaDataState: 1, - metaDataDecryptorUrl: 'http://myprovider:8030', - metaDataDecryptorAddress: '0x123', + metaDataDecryptorUrl: DECRYPTO_URL, + metaDataDecryptorAddress: DECRYPTOR_ADDRESS, flags: web3.utils.asciiToHex(user1), data: web3.utils.asciiToHex(user1), metaDataHash: '0x' + sha256(data).toString(), @@ -411,7 +413,7 @@ describe('NFT', () => { assert(tx.events.MetadataUpdated) const metadata = await nftDatatoken.getMetadata(nftAddress) - assert(metadata[0] === 'http://myprovider:8030') - assert(metadata[1] === '0x123') + assert(metadata[0] === DECRYPTO_URL) + assert(metadata[1] === DECRYPTOR_ADDRESS) }) }) From e80edb8ab25962d6be5dc3cf3920c03e4f2426f8 Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Thu, 24 Mar 2022 14:05:10 +0100 Subject: [PATCH 03/13] assert that all needed exceptions are thrown --- test/unit/tokens/Nft.test.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/test/unit/tokens/Nft.test.ts b/test/unit/tokens/Nft.test.ts index b4d26594..0d7578b8 100644 --- a/test/unit/tokens/Nft.test.ts +++ b/test/unit/tokens/Nft.test.ts @@ -87,6 +87,7 @@ describe('NFT', () => { NFT_SYMBOL, 1 ) + assert(false) } catch (e) { assert(e.message === 'Caller is not ERC20Deployer') } @@ -104,6 +105,7 @@ describe('NFT', () => { it('#addManager - should fail to add a new Manager, if NOT NFT Owner', async () => { try { await nftDatatoken.addManager(nftAddress, user1, user1) + assert(false) } catch (e) { assert(e.message === 'Caller is not NFT Owner') } @@ -120,6 +122,7 @@ describe('NFT', () => { it('#removeManager - should fail to remove a new Manager, if NOT NFT Owner', async () => { try { await nftDatatoken.removeManager(nftAddress, user1, nftOwner) + assert(false) } catch (e) { assert(e.message === 'Caller is not NFT Owner') } @@ -137,6 +140,7 @@ describe('NFT', () => { it('#addManager - should fail to add a new Manager, if NOT NFT Owner', async () => { try { await nftDatatoken.addManager(nftAddress, user1, user1) + assert(false) } catch (e) { assert(e.message === 'Caller is not NFT Owner') } @@ -145,6 +149,7 @@ describe('NFT', () => { it('#addERC20Deployer - should fail to add ERC20deployer if NOT Manager', async () => { try { await nftDatatoken.addErc20Deployer(nftAddress, user1, user1) + assert(false) } catch (e) { assert(e.message === 'Caller is not Manager') } @@ -163,6 +168,7 @@ describe('NFT', () => { assert((await nftDatatoken.isErc20Deployer(nftAddress, user1)) === true) try { await nftDatatoken.removeErc20Deployer(nftAddress, user1, user1) + assert(false) } catch (e) { assert(e.message === 'Caller is not Manager nor ERC20Deployer') } @@ -173,6 +179,7 @@ describe('NFT', () => { assert((await nftDatatoken.isErc20Deployer(nftAddress, user1)) === true) try { await nftDatatoken.removeErc20Deployer(nftAddress, user1, user1) + assert(false) } catch (e) { assert(e.message === 'Caller is not Manager nor ERC20Deployer') } @@ -195,6 +202,7 @@ describe('NFT', () => { it('#addMetadataUpdate - should fail to add Metadata Updater if NOT Manager', async () => { try { await nftDatatoken.addMetadataUpdater(nftAddress, user1, user1) + assert(false) } catch (e) { assert(e.message === 'Caller is not Manager') } @@ -215,6 +223,7 @@ describe('NFT', () => { it('#removeMetadataUpdate - should fail to remove Metadata Updater if NOT Manager', async () => { try { await nftDatatoken.removeMetadataUpdater(nftAddress, user1, user1) + assert(false) } catch (e) { assert(e.message === 'Caller is not Manager nor Metadata Updater') } @@ -232,6 +241,7 @@ describe('NFT', () => { it('#addStoreUpdater - should fail to add Store Updater if NOT Manager', async () => { try { await nftDatatoken.addStoreUpdater(nftAddress, user1, user1) + assert(false) } catch (e) { assert(e.message === 'Caller is not Manager') } @@ -248,6 +258,7 @@ describe('NFT', () => { it('#removeStoreUpdater - should fail to remove Metadata Updater if NOT Manager', async () => { try { await nftDatatoken.removeStoreUpdater(nftAddress, user1, user1) + assert(false) } catch (e) { assert(e.message === `Caller is not Manager nor storeUpdater`) } @@ -259,6 +270,7 @@ describe('NFT', () => { try { await nftDatatoken.transferNft(nftAddress, user1, user1, 1) + assert(false) } catch (e) { assert(e.message === 'Caller is not NFT Owner') } @@ -277,7 +289,8 @@ describe('NFT', () => { // Clear permisions it('#cleanPermissions - should fail to cleanPermissions if NOT NFTOwner', async () => { try { - await nftDatatoken.cleanPermissions(nftAddress, user1) + await nftDatatoken.cleanPermissions(nftAddress, user2) + assert(false) } catch (e) { assert(e.message === 'Caller is not NFT Owner') } @@ -343,6 +356,7 @@ describe('NFT', () => { data, dataHash ) + assert(false) } catch (e) { assert(e.message === 'Caller is not Metadata updater') } @@ -375,6 +389,7 @@ describe('NFT', () => { ) try { await nftDatatoken.setMetadataState(nftAddress, user3, 1) + assert(false) } catch (e) { assert(e.message === 'Caller is not Metadata updater') } From 65c1d2f4934748fad56eb98aa6d21cb7ddba5a83 Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Thu, 24 Mar 2022 14:07:27 +0100 Subject: [PATCH 04/13] refactor constants --- test/unit/tokens/Nft.test.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/test/unit/tokens/Nft.test.ts b/test/unit/tokens/Nft.test.ts index 0d7578b8..c23779de 100644 --- a/test/unit/tokens/Nft.test.ts +++ b/test/unit/tokens/Nft.test.ts @@ -25,6 +25,13 @@ describe('NFT', () => { const FEE_ZERO = '0' const CAP_AMOUNT = '10000' + const NFT_DATA: NftCreateData = { + name: NFT_NAME, + symbol: NFT_SYMBOL, + templateIndex: 1, + tokenURI: NFT_TOKEN_URI + } + before(async () => { const accounts = await web3.eth.getAccounts() nftOwner = accounts[0] @@ -39,14 +46,8 @@ describe('NFT', () => { it('should initialize NFTFactory instance and create a new NFT', async () => { nftFactory = new NftFactory(contracts.erc721FactoryAddress, web3) - const nftData: NftCreateData = { - name: NFT_NAME, - symbol: NFT_SYMBOL, - templateIndex: 1, - tokenURI: NFT_TOKEN_URI - } - nftAddress = await nftFactory.createNFT(nftOwner, nftData) + nftAddress = await nftFactory.createNFT(nftOwner, NFT_DATA) nftDatatoken = new Nft(web3, ERC721Template.abi as AbiItem[]) }) From 3063a7daae01d94124176c14fb3696b690039b3e Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Thu, 24 Mar 2022 19:22:10 +0100 Subject: [PATCH 05/13] refactor constants --- test/unit/tokens/Nft.test.ts | 40 +++++++++++++++--------------------- 1 file changed, 16 insertions(+), 24 deletions(-) diff --git a/test/unit/tokens/Nft.test.ts b/test/unit/tokens/Nft.test.ts index c23779de..c5f6ed85 100644 --- a/test/unit/tokens/Nft.test.ts +++ b/test/unit/tokens/Nft.test.ts @@ -24,6 +24,7 @@ describe('NFT', () => { const DECRYPTOR_ADDRESS = '0x123' const FEE_ZERO = '0' const CAP_AMOUNT = '10000' + const META_DATA_STATE = 1 const NFT_DATA: NftCreateData = { name: NFT_NAME, @@ -311,35 +312,26 @@ describe('NFT', () => { it('#setMetaData - should succeed to update metadata if metadataUpdater', async () => { await nftDatatoken.addManager(nftAddress, user1, user1) await nftDatatoken.addMetadataUpdater(nftAddress, user1, user1) - const metaDataDecryptorUrl = DECRYPTO_URL - const metaDataDecryptorAddress = DECRYPTOR_ADDRESS - const metaDataState = 1 - const data = web3.utils.asciiToHex(user2) - const dataHash = '0x' + sha256(data).toString() - const flags = web3.utils.asciiToHex(user2) assert( (await nftDatatoken.getNftPermissions(nftAddress, user1)).updateMetadata === true ) await nftDatatoken.setMetadata( nftAddress, user1, - metaDataState, - metaDataDecryptorUrl, - metaDataDecryptorAddress, - flags, - data, - dataHash + META_DATA_STATE, + DECRYPTO_URL, + DECRYPTOR_ADDRESS, + web3.utils.asciiToHex(user2), + web3.utils.asciiToHex(user2), + '0x' + sha256(web3.utils.asciiToHex(user2)).toString() ) const metadata = await nftDatatoken.getMetadata(nftAddress) - assert(metadata[0] === metaDataDecryptorUrl) - assert(metadata[1] === metaDataDecryptorAddress) + assert(metadata[0] === DECRYPTO_URL) + assert(metadata[1] === DECRYPTOR_ADDRESS) }) it('#setMetaData - should fail to update metadata if NOT metadataUpdater', async () => { - const metaDataDecryptorUrl = DECRYPTO_URL - const metaDataDecryptorAddress = DECRYPTOR_ADDRESS - const metaDataState = 1 const data = web3.utils.asciiToHex(user2) const dataHash = '0x' + sha256(data).toString() const flags = web3.utils.asciiToHex(user2) @@ -350,12 +342,12 @@ describe('NFT', () => { await nftDatatoken.setMetadata( nftAddress, user3, - metaDataState, - metaDataDecryptorUrl, - metaDataDecryptorAddress, - flags, - data, - dataHash + META_DATA_STATE, + DECRYPTO_URL, + DECRYPTOR_ADDRESS, + web3.utils.asciiToHex(user2), + web3.utils.asciiToHex(user2), + '0x' + sha256(web3.utils.asciiToHex(user2)).toString() ) assert(false) } catch (e) { @@ -406,7 +398,7 @@ describe('NFT', () => { it('#setMetaDataAndTokenURI - should update tokenURI and set metadata', async () => { const data = web3.utils.asciiToHex(user2) const metadataAndTokenURI: MetadataAndTokenURI = { - metaDataState: 1, + metaDataState: META_DATA_STATE, metaDataDecryptorUrl: DECRYPTO_URL, metaDataDecryptorAddress: DECRYPTOR_ADDRESS, flags: web3.utils.asciiToHex(user1), From 9560231829df26e33b433130e5dcf4197f196c07 Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Thu, 24 Mar 2022 20:59:17 +0100 Subject: [PATCH 06/13] test safeTransferNft --- test/unit/tokens/Nft.test.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/test/unit/tokens/Nft.test.ts b/test/unit/tokens/Nft.test.ts index c5f6ed85..1d0ae465 100644 --- a/test/unit/tokens/Nft.test.ts +++ b/test/unit/tokens/Nft.test.ts @@ -288,6 +288,31 @@ describe('NFT', () => { assert((await nftDatatoken.getNftOwner(nftAddress)) === user1) }) + // Safe transfer test + it('#safeTransferNft - should fail to transfer the NFT and clean all permissions, if NOT NFT Owner', async () => { + // return the nft to nftOwner to repeat transfer tests + await nftDatatoken.transferNft(nftAddress, user1, nftOwner, 1) + + assert((await nftDatatoken.getNftOwner(nftAddress)) !== user1) + + try { + await nftDatatoken.safeTransferNft(nftAddress, user1, user1, 1) + assert(false) + } catch (e) { + assert(e.message === 'Caller is not NFT Owner') + } + }) + + it('#safeTransferNft - should transfer the NFT and clean all permissions, set new owner as manager', async () => { + await nftDatatoken.addManager(nftAddress, nftOwner, user2) + await nftDatatoken.addErc20Deployer(nftAddress, user2, user1) + assert((await nftDatatoken.isErc20Deployer(nftAddress, user1)) === true) + + assert((await nftDatatoken.getNftOwner(nftAddress)) === nftOwner) + await nftDatatoken.safeTransferNft(nftAddress, nftOwner, user1, 1) + assert((await nftDatatoken.getNftOwner(nftAddress)) === user1) + }) + // Clear permisions it('#cleanPermissions - should fail to cleanPermissions if NOT NFTOwner', async () => { try { From b6bbdce7234ccf39c9f58789d8cdd7454e071204 Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Mon, 28 Mar 2022 13:12:14 +0200 Subject: [PATCH 07/13] refactor imports --- test/unit/tokens/Nft.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/tokens/Nft.test.ts b/test/unit/tokens/Nft.test.ts index 1d0ae465..7a548858 100644 --- a/test/unit/tokens/Nft.test.ts +++ b/test/unit/tokens/Nft.test.ts @@ -5,7 +5,7 @@ import { AbiItem } from 'web3-utils' import sha256 from 'crypto-js/sha256' import { web3 } from '../../config' import { NftFactory, NftCreateData, Nft, ZERO_ADDRESS } from '../../../src' -import { MetadataAndTokenURI } from '../../../src/@types/Erc721' +import { MetadataAndTokenURI } from '../../../src/@types' describe('NFT', () => { let nftOwner: string From 1fda84251ebba17ab8717cac4634a5439158970a Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Mon, 28 Mar 2022 13:13:22 +0200 Subject: [PATCH 08/13] remove unused variables --- test/unit/tokens/Nft.test.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/unit/tokens/Nft.test.ts b/test/unit/tokens/Nft.test.ts index 7a548858..2c56eb83 100644 --- a/test/unit/tokens/Nft.test.ts +++ b/test/unit/tokens/Nft.test.ts @@ -357,9 +357,6 @@ describe('NFT', () => { }) it('#setMetaData - should fail to update metadata if NOT metadataUpdater', async () => { - const data = web3.utils.asciiToHex(user2) - const dataHash = '0x' + sha256(data).toString() - const flags = web3.utils.asciiToHex(user2) assert( (await nftDatatoken.getNftPermissions(nftAddress, user3)).updateMetadata === false ) From f1fd537430859e72d548db39a3c0ccb2d64de640 Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Wed, 30 Mar 2022 17:33:51 +0200 Subject: [PATCH 09/13] remove abi import --- test/unit/tokens/Nft.test.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test/unit/tokens/Nft.test.ts b/test/unit/tokens/Nft.test.ts index 2c56eb83..54447c5f 100644 --- a/test/unit/tokens/Nft.test.ts +++ b/test/unit/tokens/Nft.test.ts @@ -1,7 +1,5 @@ import { assert } from 'chai' -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' import { deployContracts, Addresses } from '../../TestContractHandler' -import { AbiItem } from 'web3-utils' import sha256 from 'crypto-js/sha256' import { web3 } from '../../config' import { NftFactory, NftCreateData, Nft, ZERO_ADDRESS } from '../../../src' @@ -49,7 +47,7 @@ describe('NFT', () => { nftFactory = new NftFactory(contracts.erc721FactoryAddress, web3) nftAddress = await nftFactory.createNFT(nftOwner, NFT_DATA) - nftDatatoken = new Nft(web3, ERC721Template.abi as AbiItem[]) + nftDatatoken = new Nft(web3) }) it('#getTokenURI', async () => { From 8f20f4b8085a1b26ee29373426742bc790df19d0 Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Wed, 13 Apr 2022 16:09:04 +0200 Subject: [PATCH 10/13] add previously deleted assert --- test/unit/tokens/Nft.test.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/unit/tokens/Nft.test.ts b/test/unit/tokens/Nft.test.ts index 6c303eb3..a6cb3647 100644 --- a/test/unit/tokens/Nft.test.ts +++ b/test/unit/tokens/Nft.test.ts @@ -288,6 +288,9 @@ describe('NFT', () => { assert((await nftDatatoken.getNftOwner(nftAddress)) === nftOwner) await nftDatatoken.transferNft(nftAddress, nftOwner, user1, 1) assert((await nftDatatoken.getNftOwner(nftAddress)) === user1) + + assert((await nftDatatoken.isErc20Deployer(nftAddress, nftOwner)) === false) + assert((await nftDatatoken.isErc20Deployer(nftAddress, user2)) === false) }) // Safe transfer test From 4270a6399126257335d8d1e559f5f49949adb506 Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Sat, 16 Apr 2022 23:39:09 +0200 Subject: [PATCH 11/13] remove duplicated test --- test/unit/tokens/Nft.test.ts | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/test/unit/tokens/Nft.test.ts b/test/unit/tokens/Nft.test.ts index a6cb3647..ff745ce5 100644 --- a/test/unit/tokens/Nft.test.ts +++ b/test/unit/tokens/Nft.test.ts @@ -141,15 +141,6 @@ describe('NFT', () => { assert((await nftDatatoken.isErc20Deployer(nftAddress, user1)) === true) }) - it('#addManager - should fail to add a new Manager, if NOT NFT Owner', async () => { - try { - await nftDatatoken.addManager(nftAddress, user1, user1) - assert(false) - } catch (e) { - assert(e.message === 'Caller is not NFT Owner') - } - }) - it('#addERC20Deployer - should fail to add ERC20deployer if NOT Manager', async () => { try { await nftDatatoken.addErc20Deployer(nftAddress, user1, user1) @@ -179,7 +170,7 @@ describe('NFT', () => { assert((await nftDatatoken.isErc20Deployer(nftAddress, user1)) === true) }) - it('#removeERC20Deployer - should fail to remove himself an ERC20Deployer', async () => { + it('#removeERC20Deployer - should fail to remove himself as an ERC20Deployer', async () => { assert((await nftDatatoken.isErc20Deployer(nftAddress, user1)) === true) try { await nftDatatoken.removeErc20Deployer(nftAddress, user1, user1) From a261ce77e76cbbccdc6a21c326da2fafccc54dae Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Thu, 28 Apr 2022 17:00:33 +0200 Subject: [PATCH 12/13] simplify constants --- test/unit/tokens/Nft.test.ts | 65 ++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 37 deletions(-) diff --git a/test/unit/tokens/Nft.test.ts b/test/unit/tokens/Nft.test.ts index ff745ce5..1030e3dd 100644 --- a/test/unit/tokens/Nft.test.ts +++ b/test/unit/tokens/Nft.test.ts @@ -15,20 +15,11 @@ describe('NFT', () => { let nftFactory: NftFactory let nftAddress: string - const NFT_NAME = 'NFTName' - const NFT_SYMBOL = 'NFTSymbol' - const NFT_TOKEN_URI = 'https://oceanprotocol.com/nft/' - const DECRYPTO_URL = 'http://myprovider:8030' - const DECRYPTOR_ADDRESS = '0x123' - const FEE_ZERO = '0' - const CAP_AMOUNT = '10000' - const META_DATA_STATE = 1 - - const NFT_DATA: NftCreateData = { - name: NFT_NAME, - symbol: NFT_SYMBOL, + const nftData: NftCreateData = { + name: 'NFTName', + symbol: 'NFTSymbol', templateIndex: 1, - tokenURI: NFT_TOKEN_URI, + tokenURI: 'https://oceanprotocol.com/nft/', transferable: true, owner: nftOwner } @@ -40,7 +31,7 @@ describe('NFT', () => { user2 = accounts[2] user3 = accounts[3] - NFT_DATA.owner = nftOwner + nftData.owner = nftOwner }) it('should deploy contracts', async () => { @@ -50,13 +41,13 @@ describe('NFT', () => { it('should initialize NFTFactory instance and create a new NFT', async () => { nftFactory = new NftFactory(contracts.erc721FactoryAddress, web3) - nftAddress = await nftFactory.createNFT(nftOwner, NFT_DATA) + nftAddress = await nftFactory.createNFT(nftOwner, nftData) nftDatatoken = new Nft(web3) }) it('#getTokenURI', async () => { const tokenURI = await nftDatatoken.getTokenURI(nftAddress, 1) - assert(tokenURI === NFT_TOKEN_URI) + assert(tokenURI === nftData.tokenURI) }) it('#createERC20 - should create a new ERC20 DT from NFT contract', async () => { @@ -67,10 +58,10 @@ describe('NFT', () => { user1, user2, ZERO_ADDRESS, - FEE_ZERO, - CAP_AMOUNT, - NFT_NAME, - NFT_SYMBOL, + '0', + '10000', + nftData.name, + nftData.symbol, 1 ) assert(erc20Address !== null) @@ -85,10 +76,10 @@ describe('NFT', () => { user1, user2, ZERO_ADDRESS, - FEE_ZERO, - CAP_AMOUNT, - NFT_NAME, - NFT_SYMBOL, + '0', + '10000', + nftData.name, + nftData.symbol, 1 ) assert(false) @@ -339,17 +330,17 @@ describe('NFT', () => { await nftDatatoken.setMetadata( nftAddress, user1, - META_DATA_STATE, - DECRYPTO_URL, - DECRYPTOR_ADDRESS, + 1, + 'http://myprovider:8030', + '0x123', web3.utils.asciiToHex(user2), web3.utils.asciiToHex(user2), '0x' + sha256(web3.utils.asciiToHex(user2)).toString() ) const metadata = await nftDatatoken.getMetadata(nftAddress) - assert(metadata[0] === DECRYPTO_URL) - assert(metadata[1] === DECRYPTOR_ADDRESS) + assert(metadata[0] === 'http://myprovider:8030') + assert(metadata[1] === '0x123') }) it('#setMetaData - should fail to update metadata if NOT metadataUpdater', async () => { @@ -360,9 +351,9 @@ describe('NFT', () => { await nftDatatoken.setMetadata( nftAddress, user3, - META_DATA_STATE, - DECRYPTO_URL, - DECRYPTOR_ADDRESS, + 1, + 'http://myprovider:8030', + '0x123', web3.utils.asciiToHex(user2), web3.utils.asciiToHex(user2), '0x' + sha256(web3.utils.asciiToHex(user2)).toString() @@ -416,9 +407,9 @@ describe('NFT', () => { it('#setMetaDataAndTokenURI - should update tokenURI and set metadata', async () => { const data = web3.utils.asciiToHex(user2) const metadataAndTokenURI: MetadataAndTokenURI = { - metaDataState: META_DATA_STATE, - metaDataDecryptorUrl: DECRYPTO_URL, - metaDataDecryptorAddress: DECRYPTOR_ADDRESS, + metaDataState: 1, + metaDataDecryptorUrl: 'http://myprovider:8030', + metaDataDecryptorAddress: '0x123', flags: web3.utils.asciiToHex(user1), data: web3.utils.asciiToHex(user1), metaDataHash: '0x' + sha256(data).toString(), @@ -439,7 +430,7 @@ describe('NFT', () => { assert(tx.events.MetadataUpdated) const metadata = await nftDatatoken.getMetadata(nftAddress) - assert(metadata[0] === DECRYPTO_URL) - assert(metadata[1] === DECRYPTOR_ADDRESS) + assert(metadata[0] === metadataAndTokenURI.metaDataDecryptorUrl) + assert(metadata[1] === metadataAndTokenURI.metaDataDecryptorAddress) }) }) From 7f1401ae9f51d02a19517cb7da278e4e59858041 Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Mon, 23 May 2022 15:43:39 +0200 Subject: [PATCH 13/13] initialize owner with null --- test/unit/tokens/Nft.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/tokens/Nft.test.ts b/test/unit/tokens/Nft.test.ts index ab5c07f4..4fd1b9ec 100644 --- a/test/unit/tokens/Nft.test.ts +++ b/test/unit/tokens/Nft.test.ts @@ -21,7 +21,7 @@ describe('NFT', () => { templateIndex: 1, tokenURI: 'https://oceanprotocol.com/nft/', transferable: true, - owner: nftOwner + owner: null } before(async () => {