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:
parent
e64e0b61b1
commit
39ded52003
@ -40,7 +40,7 @@ export class Datatoken {
|
|||||||
public datatokensEnterpriseAbi: AbiItem | AbiItem[]
|
public datatokensEnterpriseAbi: AbiItem | AbiItem[]
|
||||||
public web3: Web3
|
public web3: Web3
|
||||||
public startBlock: number
|
public startBlock: number
|
||||||
// public nft: Nft
|
public nft: Nft
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiate ERC20 DataTokens
|
* Instantiate ERC20 DataTokens
|
||||||
@ -58,7 +58,7 @@ export class Datatoken {
|
|||||||
this.datatokensEnterpriseAbi =
|
this.datatokensEnterpriseAbi =
|
||||||
datatokensEnterpriseAbi || (defaultDatatokensEnterpriseAbi.abi as AbiItem[])
|
datatokensEnterpriseAbi || (defaultDatatokensEnterpriseAbi.abi as AbiItem[])
|
||||||
this.startBlock = startBlock || 0
|
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,
|
dtAddress: string,
|
||||||
address: string
|
address: string
|
||||||
): Promise<TransactionReceipt> {
|
): 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 dtContract = new this.web3.eth.Contract(this.datatokensAbi, dtAddress)
|
||||||
|
|
||||||
const estGas = await this.estGasCleanPermissions(dtAddress, address, dtContract)
|
const estGas = await this.estGasCleanPermissions(dtAddress, address, dtContract)
|
||||||
|
@ -407,29 +407,29 @@ describe('Datatoken', () => {
|
|||||||
assert(buyTx !== null)
|
assert(buyTx !== null)
|
||||||
})
|
})
|
||||||
|
|
||||||
// it('#cleanPermissions - should FAIL to clean permissions at ERC20 level, if NOT NFT Owner', async () => {
|
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.getDTPermissions(datatokenAddress, nftOwner)).minter === true)
|
||||||
|
|
||||||
// assert((await datatoken.getPaymentCollector(datatokenAddress)) === user3)
|
assert((await datatoken.getPaymentCollector(datatokenAddress)) === user3)
|
||||||
|
|
||||||
// assert(
|
assert(
|
||||||
// (await datatoken.getDTPermissions(datatokenAddress, user1)).paymentManager === true
|
(await datatoken.getDTPermissions(datatokenAddress, user1)).paymentManager === true
|
||||||
// )
|
)
|
||||||
|
|
||||||
// try {await datatoken.cleanPermissions(datatokenAddress, nftOwner)} catch(e){
|
try {await datatoken.cleanPermissions(datatokenAddress, user2)} catch(e){
|
||||||
// assert(e.message === 'Caller is not NFTOwner')
|
assert(e.message === 'Caller is NOT Nft Owner')
|
||||||
// }
|
}
|
||||||
|
|
||||||
// assert((await datatoken.getPaymentCollector(datatokenAddress)) === nftOwner)
|
assert((await datatoken.getPaymentCollector(datatokenAddress)) === user3)
|
||||||
|
|
||||||
// assert(
|
assert(
|
||||||
// (await datatoken.getDTPermissions(datatokenAddress, nftOwner)).minter === false
|
(await datatoken.getDTPermissions(datatokenAddress, nftOwner)).minter === true
|
||||||
// )
|
)
|
||||||
|
|
||||||
// assert(
|
assert(
|
||||||
// (await datatoken.getDTPermissions(datatokenAddress, user1)).paymentManager === false
|
(await datatoken.getDTPermissions(datatokenAddress, user1)).paymentManager === true
|
||||||
// )
|
)
|
||||||
// })
|
})
|
||||||
|
|
||||||
|
|
||||||
it('#cleanPermissions - should clean permissions at ERC20 level', async () => {
|
it('#cleanPermissions - should clean permissions at ERC20 level', async () => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user