1
0
mirror of https://github.com/oceanprotocol/ocean.js.git synced 2024-11-26 20:39:05 +01:00

add NFT owner check in Datatoken

This commit is contained in:
lacoop6tu 2021-12-17 06:22:46 -05:00
parent e64e0b61b1
commit 39ded52003
2 changed files with 22 additions and 19 deletions

View File

@ -40,7 +40,7 @@ export class Datatoken {
public datatokensEnterpriseAbi: AbiItem | AbiItem[]
public web3: Web3
public startBlock: number
// public nft: Nft
public nft: Nft
/**
* Instantiate ERC20 DataTokens
@ -58,7 +58,7 @@ export class Datatoken {
this.datatokensEnterpriseAbi =
datatokensEnterpriseAbi || (defaultDatatokensEnterpriseAbi.abi as AbiItem[])
this.startBlock = startBlock || 0
// this.nft = new Nft(this.web3)
this.nft = new Nft(this.web3)
}
/**
@ -1170,6 +1170,9 @@ export class Datatoken {
dtAddress: string,
address: string
): Promise<TransactionReceipt> {
if(await this.nft.getNftOwner(await this.getNFTAddress(dtAddress)) != address) {
throw new Error('Caller is NOT Nft Owner')
}
const dtContract = new this.web3.eth.Contract(this.datatokensAbi, dtAddress)
const estGas = await this.estGasCleanPermissions(dtAddress, address, dtContract)

View File

@ -407,29 +407,29 @@ describe('Datatoken', () => {
assert(buyTx !== null)
})
// it('#cleanPermissions - should FAIL to clean permissions at ERC20 level, if NOT NFT Owner', async () => {
// assert((await datatoken.getDTPermissions(datatokenAddress, nftOwner)).minter === true)
it('#cleanPermissions - should FAIL to clean permissions at ERC20 level, if NOT NFT Owner', async () => {
assert((await datatoken.getDTPermissions(datatokenAddress, nftOwner)).minter === true)
// assert((await datatoken.getPaymentCollector(datatokenAddress)) === user3)
assert((await datatoken.getPaymentCollector(datatokenAddress)) === user3)
// assert(
// (await datatoken.getDTPermissions(datatokenAddress, user1)).paymentManager === true
// )
assert(
(await datatoken.getDTPermissions(datatokenAddress, user1)).paymentManager === true
)
// try {await datatoken.cleanPermissions(datatokenAddress, nftOwner)} catch(e){
// assert(e.message === 'Caller is not NFTOwner')
// }
try {await datatoken.cleanPermissions(datatokenAddress, user2)} catch(e){
assert(e.message === 'Caller is NOT Nft Owner')
}
// assert((await datatoken.getPaymentCollector(datatokenAddress)) === nftOwner)
assert((await datatoken.getPaymentCollector(datatokenAddress)) === user3)
// assert(
// (await datatoken.getDTPermissions(datatokenAddress, nftOwner)).minter === false
// )
assert(
(await datatoken.getDTPermissions(datatokenAddress, nftOwner)).minter === true
)
// assert(
// (await datatoken.getDTPermissions(datatokenAddress, user1)).paymentManager === false
// )
// })
assert(
(await datatoken.getDTPermissions(datatokenAddress, user1)).paymentManager === true
)
})
it('#cleanPermissions - should clean permissions at ERC20 level', async () => {