mirror of
https://github.com/oceanprotocol/ocean.js.git
synced 2024-11-26 20:39:05 +01:00
add getMetadata function, add more tests in NFT class
This commit is contained in:
parent
899dd34a28
commit
96cfa952e4
27995
package-lock.json
generated
27995
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -5,6 +5,7 @@ import defaultNftAbi from '@oceanprotocol/contracts/artifacts/contracts/template
|
|||||||
import { LoggerInstance, getFairGasPrice, generateDtName } from '../utils'
|
import { LoggerInstance, getFairGasPrice, generateDtName } from '../utils'
|
||||||
import { Contract } from 'web3-eth-contract'
|
import { Contract } from 'web3-eth-contract'
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ERC721 ROLES
|
* ERC721 ROLES
|
||||||
*/
|
*/
|
||||||
@ -554,9 +555,7 @@ export class Nft {
|
|||||||
storeUpdater: string,
|
storeUpdater: string,
|
||||||
contractInstance?: Contract
|
contractInstance?: Contract
|
||||||
): Promise<any> {
|
): Promise<any> {
|
||||||
if ((await this.getNftPermissions(nftAddress, address)).manager !== true) {
|
|
||||||
throw new Error(`Caller is not Manager`)
|
|
||||||
}
|
|
||||||
|
|
||||||
const nftContract =
|
const nftContract =
|
||||||
contractInstance || new this.web3.eth.Contract(this.nftAbi, nftAddress)
|
contractInstance || new this.web3.eth.Contract(this.nftAbi, nftAddress)
|
||||||
@ -1139,6 +1138,18 @@ export class Nft {
|
|||||||
return roles
|
return roles
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Get users Metadata, return Metadata details
|
||||||
|
* @param {String} nftAddress erc721 contract adress
|
||||||
|
* @return {Promise<Objecta>}
|
||||||
|
*/
|
||||||
|
public async getMetadata(nftAddress: string): Promise<Object> {
|
||||||
|
const nftContract = new this.web3.eth.Contract(this.nftAbi, nftAddress)
|
||||||
|
return await nftContract.methods.getMetaData().call()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** Get users ERC20Deployer role
|
/** Get users ERC20Deployer role
|
||||||
* @param {String} nftAddress erc721 contract adress
|
* @param {String} nftAddress erc721 contract adress
|
||||||
* @param {String} address user adress
|
* @param {String} address user adress
|
||||||
|
@ -13,6 +13,7 @@ import { TestContractHandler } from '../../TestContractHandler'
|
|||||||
import { NftFactory, NftCreateData } from '../../../src/factories/NFTFactory'
|
import { NftFactory, NftCreateData } from '../../../src/factories/NFTFactory'
|
||||||
import { Nft } from '../../../src/tokens/NFT'
|
import { Nft } from '../../../src/tokens/NFT'
|
||||||
import { AbiItem } from 'web3-utils'
|
import { AbiItem } from 'web3-utils'
|
||||||
|
const constants = require("../../helpers/constants");
|
||||||
|
|
||||||
const web3 = new Web3('http://127.0.0.1:8545')
|
const web3 = new Web3('http://127.0.0.1:8545')
|
||||||
|
|
||||||
@ -327,4 +328,68 @@ describe('NFT', () => {
|
|||||||
assert((await nftDatatoken.isErc20Deployer(nftAddress, user2)) === false)
|
assert((await nftDatatoken.isErc20Deployer(nftAddress, user2)) === false)
|
||||||
assert((await nftDatatoken.getNftPermissions(nftAddress, nftOwner)).manager === false)
|
assert((await nftDatatoken.getNftPermissions(nftAddress, nftOwner)).manager === false)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
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 metaDataState = 1;
|
||||||
|
const data = web3.utils.asciiToHex(constants.blob[0]);
|
||||||
|
const dataHash = web3.utils.asciiToHex(constants.blob[0]);
|
||||||
|
const flags = web3.utils.asciiToHex(constants.blob[0]);
|
||||||
|
assert((await nftDatatoken.getNftPermissions(nftAddress,user1)).updateMetadata === true)
|
||||||
|
await nftDatatoken.setMetadata(nftAddress, user1, metaDataState, metaDataDecryptorUrl, metaDataDecryptorAddress, flags, data, dataHash)
|
||||||
|
// console.log((await nftDatatoken.getMetadata(nftAddress)),metaDataDecryptorUrl)
|
||||||
|
// console.log((await nftDatatoken.getMetadata(nftAddress)).metaDataDecryptorAddress,metaDataDecryptorAddress)
|
||||||
|
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 metaDataState = 1;
|
||||||
|
const data = web3.utils.asciiToHex(constants.blob[0]);
|
||||||
|
const dataHash = web3.utils.asciiToHex(constants.blob[0]);
|
||||||
|
const flags = web3.utils.asciiToHex(constants.blob[0]);
|
||||||
|
assert((await nftDatatoken.getNftPermissions(nftAddress,user3)).updateMetadata == false)
|
||||||
|
try {
|
||||||
|
await nftDatatoken.setMetadata(nftAddress, user3, metaDataState, metaDataDecryptorUrl, metaDataDecryptorAddress, flags, data, dataHash)
|
||||||
|
} catch(e) {
|
||||||
|
assert(e.message === 'Caller is not Metadata updater')
|
||||||
|
}
|
||||||
|
assert((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)
|
||||||
|
let metadata = await nftDatatoken.getMetadata(nftAddress)
|
||||||
|
|
||||||
|
assert(metadata[2] === '1')
|
||||||
|
assert((await nftDatatoken.getNftPermissions(nftAddress,user1)).updateMetadata === true)
|
||||||
|
|
||||||
|
await nftDatatoken.setMetadataState(nftAddress, user1,2)
|
||||||
|
|
||||||
|
metadata = await nftDatatoken.getMetadata(nftAddress)
|
||||||
|
assert(metadata[2] === '2')
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
it('#setMetaDataState - should fail to update MetadataState if NOT metadataUpdater', async () => {
|
||||||
|
let metadata = await nftDatatoken.getMetadata(nftAddress)
|
||||||
|
assert(metadata[2] === '2')
|
||||||
|
assert((await nftDatatoken.getNftPermissions(nftAddress,user3)).updateMetadata === false)
|
||||||
|
try {
|
||||||
|
await nftDatatoken.setMetadataState(nftAddress, user3,1)
|
||||||
|
} catch(e) {
|
||||||
|
assert(e.message === 'Caller is not Metadata updater')
|
||||||
|
}
|
||||||
|
metadata = await nftDatatoken.getMetadata(nftAddress)
|
||||||
|
assert(metadata[2] === '2')
|
||||||
|
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user