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

finished datatoken tests

This commit is contained in:
Bogdan Fazakas 2023-03-06 16:28:16 +02:00
parent b82cf2f7a6
commit 4cfd469c61
3 changed files with 317 additions and 144 deletions

View File

@ -646,7 +646,7 @@ export class Datatoken extends SmartContract {
const dtContract = this.getContract(dtAddress) const dtContract = this.getContract(dtAddress)
const valueHex = ethers.utils.hexlify(value) const valueHex = ethers.utils.hexlify(ethers.utils.toUtf8Bytes(value))
const estGas = await dtContract.estimateGas.setData(valueHex) const estGas = await dtContract.estimateGas.setData(valueHex)
if (estimateGas) return <ReceiptOrEstimate<G>>estGas if (estimateGas) return <ReceiptOrEstimate<G>>estGas
@ -721,7 +721,7 @@ export class Datatoken extends SmartContract {
* @param {String} dtAddress Datatoken adress * @param {String} dtAddress Datatoken adress
* @return {Promise<number>} * @return {Promise<number>}
*/ */
public async getDecimals(dtAddress: string): Promise<string> { public async getDecimals(dtAddress: string): Promise<number> {
const dtContract = this.getContract(dtAddress) const dtContract = this.getContract(dtAddress)
const decimals = await dtContract.decimals() const decimals = await dtContract.decimals()
return decimals return decimals
@ -842,7 +842,7 @@ export class Datatoken extends SmartContract {
const returnValues = { const returnValues = {
publishMarketFeeAddress: publishingMarketFee[0], publishMarketFeeAddress: publishingMarketFee[0],
publishMarketFeeToken: publishingMarketFee[1], publishMarketFeeToken: publishingMarketFee[1],
publishMarketFeeAmount: publishingMarketFee[2] publishMarketFeeAmount: publishingMarketFee[2].toString()
} }
return returnValues return returnValues
} }

View File

@ -746,7 +746,7 @@ export class Nft extends SmartContract {
*/ */
public async getData(nftAddress: string, key: string): Promise<string> { public async getData(nftAddress: string, key: string): Promise<string> {
const nftContract = this.getContract(nftAddress) const nftContract = this.getContract(nftAddress)
const keyHash = ethers.utils.keccak256(ethers.utils.toUtf8Bytes(key)) const keyHash = ethers.utils.keccak256(key)
const data = await nftContract.getData(keyHash) const data = await nftContract.getData(keyHash)
return data ? ethers.utils.toUtf8String(data) : null return data ? ethers.utils.toUtf8String(data) : null
} }

View File

@ -1,6 +1,6 @@
import { assert } from 'chai' import { assert, expect } from 'chai'
import { getTestConfig, provider, getAddresses } from '../config' import { getTestConfig, provider, getAddresses } from '../config'
import { ethers, Signer } from 'ethers' import { ethers, Signer, providers } from 'ethers'
import { import {
Config, Config,
NftFactory, NftFactory,
@ -365,45 +365,68 @@ describe('Datatoken', () => {
) )
}) })
/*
it('#removePaymentManager - should FAIL TO remove user2 as paymentManager, if nftDatatoken has DatatokenDeployer permission', async () => { it('#removePaymentManager - should FAIL TO remove user2 as paymentManager, if nftDatatoken has DatatokenDeployer permission', async () => {
assert((await nftDatatoken.isDatatokenDeployer(nftAddress, user1)) === false)
assert( assert(
(await datatoken.getPermissions(datatokenAddress, user2)).paymentManager === true (await nftDatatoken.isDatatokenDeployer(nftAddress, await user3.getAddress())) ===
false
)
assert(
(await datatoken.getPermissions(datatokenAddress, await user2.getAddress()))
.paymentManager === true
) )
try { try {
await datatoken.removePaymentManager(datatokenAddress, user1, user2) await datatoken.removePaymentManager(
datatokenAddress,
await user3.getAddress(),
await user2.getAddress()
)
assert(false) assert(false)
} catch (e) { } catch (e) {
assert(e.message === 'Caller is not DatatokenDeployer') assert(e.message === 'Caller is not DatatokenDeployer')
} }
assert( assert(
(await datatoken.getPermissions(datatokenAddress, user2)).paymentManager === true (await datatoken.getPermissions(datatokenAddress, await user2.getAddress()))
.paymentManager === true
) )
}) })
it('#removePaymentManager - should remove user2 as paymentManager, if Caller has DatatokenDeployer permission', async () => { it('#removePaymentManager - should remove user2 as paymentManager, if Caller has DatatokenDeployer permission', async () => {
assert((await nftDatatoken.isDatatokenDeployer(nftAddress, nftOwner)) === true)
assert( assert(
(await datatoken.getPermissions(datatokenAddress, user2)).paymentManager === true (await nftDatatoken.isDatatokenDeployer(
nftAddress,
await nftOwner.getAddress()
)) === true
)
assert(
(await datatoken.getPermissions(datatokenAddress, await user2.getAddress()))
.paymentManager === true
) )
await datatoken.removePaymentManager(datatokenAddress, nftOwner, user2) await datatoken.removePaymentManager(
datatokenAddress,
await nftOwner.getAddress(),
await user2.getAddress()
)
assert( assert(
(await datatoken.getPermissions(datatokenAddress, user2)).paymentManager === false (await datatoken.getPermissions(datatokenAddress, await user2.getAddress()))
.paymentManager === false
) )
}) })
it('#setPaymentCollector - should fail to set a new paymentCollector, if NOT PAYMENT Manager, NFT OWNER OR ERC 20 DEPLOYER', async () => { it('#setPaymentCollector - should fail to set a new paymentCollector, if NOT PAYMENT Manager, NFT OWNER OR ERC 20 DEPLOYER', async () => {
assert( assert(
(await datatoken.getPermissions(datatokenAddress, user2)).paymentManager === false (await datatoken.getPermissions(datatokenAddress, await user2.getAddress()))
.paymentManager === false
) )
try { try {
await datatoken.setPaymentCollector(datatokenAddress, user1, user2) await datatoken.setPaymentCollector(
datatokenAddress,
await user3.getAddress(),
await user2.getAddress()
)
assert(false) assert(false)
} catch (e) { } catch (e) {
assert(e.message === 'Caller is not Fee Manager, owner or Datatoken Deployer') assert(e.message === 'Caller is not Fee Manager, owner or Datatoken Deployer')
@ -411,45 +434,79 @@ describe('Datatoken', () => {
}) })
it('#setPaymentCollector - should set a new paymentCollector, if PAYMENT MANAGER', async () => { it('#setPaymentCollector - should set a new paymentCollector, if PAYMENT MANAGER', async () => {
assert((await datatoken.getPaymentCollector(datatokenAddress)) === user1)
await datatoken.addPaymentManager(datatokenAddress, nftOwner, user1)
assert( assert(
(await datatoken.getPermissions(datatokenAddress, user1)).paymentManager === true (await datatoken.getPaymentCollector(datatokenAddress)) ===
(await user1.getAddress())
) )
await datatoken.setPaymentCollector(datatokenAddress, user1, user3) await datatoken.addPaymentManager(
datatokenAddress,
await nftOwner.getAddress(),
await user1.getAddress()
)
assert((await datatoken.getPaymentCollector(datatokenAddress)) === user3) assert(
(await datatoken.getPermissions(datatokenAddress, await user1.getAddress()))
.paymentManager === true
)
await datatoken.setPaymentCollector(
datatokenAddress,
await user1.getAddress(),
await user3.getAddress()
)
assert(
(await datatoken.getPaymentCollector(datatokenAddress)) ===
(await user3.getAddress())
)
}) })
it('#setPaymentCollector - should set a new paymentCollector, if NFT OWNER', async () => { it('#setPaymentCollector - should set a new paymentCollector, if NFT OWNER', async () => {
assert((await nftDatatoken.getNftOwner(nftAddress)) === nftOwner) assert((await nftDatatoken.getNftOwner(nftAddress)) === (await nftOwner.getAddress()))
await datatoken.setPaymentCollector(datatokenAddress, nftOwner, user2) await datatoken.setPaymentCollector(
datatokenAddress,
await nftOwner.getAddress(),
await user2.getAddress()
)
assert((await datatoken.getPaymentCollector(datatokenAddress)) === user2) assert(
(await datatoken.getPaymentCollector(datatokenAddress)) ===
(await user2.getAddress())
)
}) })
it('#setPaymentCollector - should set a new paymentCollector, if ERC 20 DEPLOYER', async () => { it('#setPaymentCollector - should set a new paymentCollector, if ERC 20 DEPLOYER', async () => {
assert( assert(
(await nftDatatoken.getNftPermissions(nftAddress, datatokenDeployer)) (
.deployERC20 === true await nftDatatoken.getNftPermissions(
nftAddress,
await datatokenDeployer.getAddress()
)
).deployERC20 === true
) )
await datatoken.setPaymentCollector(datatokenAddress, datatokenDeployer, user3) await datatoken.setPaymentCollector(
datatokenAddress,
await datatokenDeployer.getAddress(),
await user3.getAddress()
)
assert((await datatoken.getPaymentCollector(datatokenAddress)) === user3) assert(
(await datatoken.getPaymentCollector(datatokenAddress)) ===
(await user3.getAddress())
)
}) })
it('#startOrder- user2 should create an order for DT ', async () => { it('#startOrder- user2 should create an order for DT ', async () => {
assert( assert(
(await datatoken.balance(datatokenAddress, user1)) === '10', (await datatoken.balance(datatokenAddress, await user1.getAddress())) === '10.0',
'User1 does not hold 10 datatokens' 'User1 does not hold 10 datatokens'
) )
assert( assert(
(await datatoken.balance(datatokenAddress, user2)) === '0', (await datatoken.balance(datatokenAddress, await user2.getAddress())) === '0.0',
'User2 does not hold 0 datatokens' 'User2 does not hold 0 datatokens'
) )
@ -457,35 +514,50 @@ describe('Datatoken', () => {
const providerFeeToken = ZERO_ADDRESS const providerFeeToken = ZERO_ADDRESS
const providerFeeAmount = '0' const providerFeeAmount = '0'
const providerValidUntil = '0' const providerValidUntil = '0'
const message = web3.utils.soliditySha3(
{ t: 'bytes', v: web3.utils.toHex(web3.utils.asciiToHex(providerData)) }, const message = ethers.utils.solidityKeccak256(
{ t: 'address', v: user3 }, ['bytes', 'address', 'address', 'uint256', 'uint256'],
{ t: 'address', v: providerFeeToken }, [
{ t: 'uint256', v: providerFeeAmount }, ethers.utils.hexlify(ethers.utils.toUtf8Bytes(providerData)),
{ t: 'uint256', v: providerValidUntil } await user3.getAddress(),
providerFeeToken,
providerFeeAmount,
providerValidUntil
]
) )
const { v, r, s } = await signHash(web3, message, user3)
// const { v, r, s } = await signHash(web3, message,user3)
const messageHashBytes = ethers.utils.arrayify(message)
let signedMessage = await (user3 as providers.JsonRpcSigner)._legacySignMessage(
messageHashBytes
)
signedMessage = signedMessage.substr(2) // remove 0x
const r = '0x' + signedMessage.slice(0, 64)
const s = '0x' + signedMessage.slice(64, 128)
let v = '0x' + signedMessage.slice(128, 130)
if (v === '0x00') v = '0x1b'
if (v === '0x01') v = '0x1c'
const providerFees: ProviderFees = { const providerFees: ProviderFees = {
providerFeeAddress: user3, providerFeeAddress: await user3.getAddress(),
providerFeeToken, providerFeeToken,
providerFeeAmount, providerFeeAmount,
v, v,
r, r,
s, s,
providerData: web3.utils.toHex(web3.utils.asciiToHex(providerData)), providerData: ethers.utils.hexlify(ethers.utils.toUtf8Bytes(providerData)),
validUntil: providerValidUntil validUntil: providerValidUntil
} }
const order = await datatoken.startOrder( const order = await datatoken.startOrder(
datatokenAddress, datatokenAddress,
user1, await user2.getAddress(),
user2,
1, 1,
providerFees providerFees
) )
assert(order !== null) assert(order !== null)
assert( assert(
(await datatoken.balance(datatokenAddress, user1)) === '9', (await datatoken.balance(datatokenAddress, await user1.getAddress())) === '9.0',
'Invalid user balance, DT was not substracted' 'Invalid user balance, DT was not substracted'
) )
assert( assert(
@ -502,174 +574,249 @@ describe('Datatoken', () => {
const providerFeeToken = ZERO_ADDRESS const providerFeeToken = ZERO_ADDRESS
const providerFeeAmount = '0' const providerFeeAmount = '0'
const providerValidUntil = '0' const providerValidUntil = '0'
const message = web3.utils.soliditySha3(
{ t: 'bytes', v: web3.utils.toHex(web3.utils.asciiToHex(providerData)) }, const message = ethers.utils.solidityKeccak256(
{ t: 'address', v: user3 }, ['bytes', 'address', 'address', 'uint256', 'uint256'],
{ t: 'address', v: providerFeeToken }, [
{ t: 'uint256', v: providerFeeAmount }, ethers.utils.hexlify(ethers.utils.toUtf8Bytes(providerData)),
{ t: 'uint256', v: providerValidUntil } await user3.getAddress(),
providerFeeToken,
providerFeeAmount,
providerValidUntil
]
) )
const { v, r, s } = await signHash(web3, message, user3)
const messageHashBytes = ethers.utils.arrayify(message)
let signedMessage = await (user3 as providers.JsonRpcSigner)._legacySignMessage(
messageHashBytes
)
signedMessage = signedMessage.substr(2) // remove 0x
const r = '0x' + signedMessage.slice(0, 64)
const s = '0x' + signedMessage.slice(64, 128)
let v = '0x' + signedMessage.slice(128, 130)
if (v === '0x00') v = '0x1b'
if (v === '0x01') v = '0x1c'
const providerFees: ProviderFees = { const providerFees: ProviderFees = {
providerFeeAddress: user3, providerFeeAddress: await user3.getAddress(),
providerFeeToken, providerFeeToken,
providerFeeAmount, providerFeeAmount,
v, v,
r, r,
s, s,
providerData: web3.utils.toHex(web3.utils.asciiToHex(providerData)), providerData: ethers.utils.hexlify(ethers.utils.toUtf8Bytes(providerData)),
validUntil: providerValidUntil validUntil: providerValidUntil
} }
const order = await datatoken.startOrder( const order = await datatoken.startOrder(
datatokenAddress, datatokenAddress,
user1, await user2.getAddress(),
user2,
1, 1,
providerFees providerFees
) )
assert(order.transactionHash, ' Failed to start order')
const reusedOrder = await datatoken.reuseOrder( assert(order.blockHash, ' Failed to start order')
datatokenAddress, const tx = await datatoken.reuseOrder(datatokenAddress, order.blockHash, providerFees)
user2, const reusedTx = await tx.wait()
order.transactionHash,
providerFees const orderReusedTx = getEventFromTx(reusedTx, 'OrderReused')
) const providerFeeTx = getEventFromTx(reusedTx, 'ProviderFee')
assert(reusedOrder.events.OrderReused.event === 'OrderReused')
assert(reusedOrder.events.ProviderFee.event === 'ProviderFee') expect(orderReusedTx.event === 'OrderReused')
expect(providerFeeTx.event === 'ProviderFee')
}) })
it('#buyFromDispenserAndOrder- Enterprise method', async () => { it('#buyFromDispenserAndOrder- Enterprise method', async () => {
const providerData = JSON.stringify({ timeout: 0 }) const providerData = JSON.stringify({ timeout: 0 })
const providerFeeToken = ZERO_ADDRESS const providerFeeToken = ZERO_ADDRESS
const providerFeeAmount = '0' const providerFeeAmount = '0'
const message = web3.utils.soliditySha3(
{ t: 'bytes', v: web3.utils.toHex(web3.utils.asciiToHex(providerData)) },
{ t: 'address', v: user3 },
{ t: 'address', v: providerFeeToken },
{ t: 'uint256', v: providerFeeAmount }
)
const { v, r, s } = await signHash(web3, message, user3)
const providerValidUntil = '0' const providerValidUntil = '0'
const message = ethers.utils.solidityKeccak256(
['bytes', 'address', 'address', 'uint256', 'uint256'],
[
ethers.utils.hexlify(ethers.utils.toUtf8Bytes(providerData)),
await user3.getAddress(),
providerFeeToken,
providerFeeAmount,
providerValidUntil
]
)
const messageHashBytes = ethers.utils.arrayify(message)
let signedMessage = await (user3 as providers.JsonRpcSigner)._legacySignMessage(
messageHashBytes
)
signedMessage = signedMessage.substr(2) // remove 0x
const r = '0x' + signedMessage.slice(0, 64)
const s = '0x' + signedMessage.slice(64, 128)
let v = '0x' + signedMessage.slice(128, 130)
if (v === '0x00') v = '0x1b'
if (v === '0x01') v = '0x1c'
const providerFees: ProviderFees = { const providerFees: ProviderFees = {
providerFeeAddress: user3, providerFeeAddress: await user3.getAddress(),
providerFeeToken, providerFeeToken,
providerFeeAmount, providerFeeAmount,
v, v,
r, r,
s, s,
providerData: web3.utils.toHex(web3.utils.asciiToHex(providerData)), providerData: ethers.utils.hexlify(ethers.utils.toUtf8Bytes(providerData)),
validUntil: providerValidUntil validUntil: providerValidUntil
} }
const consumeMarketFee = { const consumeMarketFee = {
consumeMarketFeeAddress: ZERO_ADDRESS, consumeMarketFeeAddress: ZERO_ADDRESS,
consumeMarketFeeToken: ZERO_ADDRESS, consumeMarketFeeToken: ZERO_ADDRESS,
consumeMarketFeeAmount: '0' consumeMarketFeeAmount: '0'
} }
const order: OrderParams = { const order: OrderParams = {
consumer: user1, consumer: await user1.getAddress(),
serviceIndex: 1, serviceIndex: 1,
_providerFee: providerFees, _providerFee: providerFees,
_consumeMarketFee: consumeMarketFee _consumeMarketFee: consumeMarketFee
} }
const buyFromDispenseTx = await datatoken.buyFromDispenserAndOrder( const buyFromDispenseTx = await datatoken.buyFromDispenserAndOrder(
datatokenAddress, datatokenAddress,
nftOwner,
order, order,
contracts.dispenserAddress addresses.Dispenser
) )
assert(buyFromDispenseTx !== null) assert(buyFromDispenseTx)
}) })
it('#buyFromFreAndOrder - Enterprise method ', async () => { it('#buyFromFreAndOrder - Enterprise method ', async () => {
const providerData = JSON.stringify({ timeout: 0 }) const providerData = JSON.stringify({ timeout: 0 })
const providerFeeToken = ZERO_ADDRESS const providerFeeToken = ZERO_ADDRESS
const providerFeeAmount = '0' const providerFeeAmount = '0'
const message = web3.utils.soliditySha3(
{ t: 'bytes', v: web3.utils.toHex(web3.utils.asciiToHex(providerData)) },
{ t: 'address', v: user3 },
{ t: 'address', v: providerFeeToken },
{ t: 'uint256', v: providerFeeAmount }
)
const { v, r, s } = await signHash(web3, message, user3)
const providerValidUntil = '0' const providerValidUntil = '0'
const message = ethers.utils.solidityKeccak256(
['bytes', 'address', 'address', 'uint256', 'uint256'],
[
ethers.utils.hexlify(ethers.utils.toUtf8Bytes(providerData)),
await user3.getAddress(),
providerFeeToken,
providerFeeAmount,
providerValidUntil
]
)
const messageHashBytes = ethers.utils.arrayify(message)
let signedMessage = await (user3 as providers.JsonRpcSigner)._legacySignMessage(
messageHashBytes
)
signedMessage = signedMessage.substr(2) // remove 0x
const r = '0x' + signedMessage.slice(0, 64)
const s = '0x' + signedMessage.slice(64, 128)
let v = '0x' + signedMessage.slice(128, 130)
if (v === '0x00') v = '0x1b'
if (v === '0x01') v = '0x1c'
const providerFees: ProviderFees = { const providerFees: ProviderFees = {
providerFeeAddress: user1, providerFeeAddress: await user1.getAddress(),
providerFeeToken, providerFeeToken,
providerFeeAmount, providerFeeAmount,
v, v,
r, r,
s, s,
providerData: web3.utils.toHex(web3.utils.asciiToHex(providerData)), providerData: ethers.utils.hexlify(ethers.utils.toUtf8Bytes(providerData)),
validUntil: providerValidUntil validUntil: providerValidUntil
} }
const consumeMarketFee = { const consumeMarketFee = {
consumeMarketFeeAddress: ZERO_ADDRESS, consumeMarketFeeAddress: ZERO_ADDRESS,
consumeMarketFeeToken: ZERO_ADDRESS, consumeMarketFeeToken: ZERO_ADDRESS,
consumeMarketFeeAmount: '0' consumeMarketFeeAmount: '0'
} }
const order: OrderParams = { const order: OrderParams = {
consumer: user1, consumer: await user1.getAddress(),
serviceIndex: 1, serviceIndex: 1,
_providerFee: providerFees, _providerFee: providerFees,
_consumeMarketFee: consumeMarketFee _consumeMarketFee: consumeMarketFee
} }
const fre: FreOrderParams = { const fre: FreOrderParams = {
exchangeContract: fixedRateAddress, exchangeContract: addresses.FixedPrice,
exchangeId, exchangeId,
maxBaseTokenAmount: '1', maxBaseTokenAmount: '1',
baseTokenAddress: contracts.daiAddress, baseTokenAddress: addresses.MockDAI,
baseTokenDecimals: 18, baseTokenDecimals: 18,
swapMarketFee: '0.1', swapMarketFee: '0.1',
marketFeeAddress: ZERO_ADDRESS marketFeeAddress: ZERO_ADDRESS
} }
const buyTx = await datatoken.buyFromFreAndOrder(datatokenAddress, user1, order, fre) const buyTx = await datatoken.buyFromFreAndOrder(datatokenAddress, order, fre)
assert(buyTx !== null) assert(buyTx)
}) })
it('#cleanPermissions - should FAIL to clean permissions at Datatoken level, if NOT NFT Owner', async () => { it('#cleanPermissions - should FAIL to clean permissions at Datatoken level, if NOT NFT Owner', async () => {
assert((await datatoken.getPermissions(datatokenAddress, nftOwner)).minter === true) assert(
(await datatoken.getPermissions(datatokenAddress, await nftOwner.getAddress()))
assert((await datatoken.getPaymentCollector(datatokenAddress)) === user3) .minter === true
)
assert( assert(
(await datatoken.getPermissions(datatokenAddress, user1)).paymentManager === true (await datatoken.getPaymentCollector(datatokenAddress)) ===
(await user3.getAddress())
)
assert(
(await datatoken.getPermissions(datatokenAddress, await user1.getAddress()))
.paymentManager === true
) )
try { try {
await datatoken.cleanPermissions(datatokenAddress, user2) await datatoken.cleanPermissions(datatokenAddress, await user2.getAddress())
assert(false) assert(false)
} catch (e) { } catch (e) {
assert(e.message === 'Caller is NOT Nft Owner') assert(e.message === 'Caller is NOT Nft Owner')
} }
assert((await datatoken.getPaymentCollector(datatokenAddress)) === user3) assert(
(await datatoken.getPaymentCollector(datatokenAddress)) ===
assert((await datatoken.getPermissions(datatokenAddress, nftOwner)).minter === true) (await user3.getAddress())
)
assert( assert(
(await datatoken.getPermissions(datatokenAddress, user1)).paymentManager === true (await datatoken.getPermissions(datatokenAddress, await nftOwner.getAddress()))
.minter === true
)
assert(
(await datatoken.getPermissions(datatokenAddress, await user1.getAddress()))
.paymentManager === true
) )
}) })
it('#cleanPermissions - should clean permissions at Datatoken level', async () => { it('#cleanPermissions - should clean permissions at Datatoken level', async () => {
assert((await datatoken.getPermissions(datatokenAddress, nftOwner)).minter === true)
assert((await datatoken.getPaymentCollector(datatokenAddress)) === user3)
assert( assert(
(await datatoken.getPermissions(datatokenAddress, user1)).paymentManager === true (await datatoken.getPermissions(datatokenAddress, await nftOwner.getAddress()))
.minter === true
) )
await datatoken.cleanPermissions(datatokenAddress, nftOwner) assert(
(await datatoken.getPaymentCollector(datatokenAddress)) ===
assert((await datatoken.getPaymentCollector(datatokenAddress)) === nftOwner) (await user3.getAddress())
)
assert((await datatoken.getPermissions(datatokenAddress, nftOwner)).minter === false)
assert( assert(
(await datatoken.getPermissions(datatokenAddress, user1)).paymentManager === false (await datatoken.getPermissions(datatokenAddress, await user1.getAddress()))
.paymentManager === true
)
datatoken = new Datatoken(nftOwner, 8996)
await datatoken.cleanPermissions(datatokenAddress, await nftOwner.getAddress())
assert(
(await datatoken.getPaymentCollector(datatokenAddress)) ===
(await nftOwner.getAddress())
)
assert(
(await datatoken.getPermissions(datatokenAddress, await nftOwner.getAddress()))
.minter === false
)
assert(
(await datatoken.getPermissions(datatokenAddress, await user1.getAddress()))
.paymentManager === false
) )
}) })
@ -681,9 +828,14 @@ describe('Datatoken', () => {
it('#setData - should set a value into 725Y standard, if Caller has ERC20Deployer permission', async () => { it('#setData - should set a value into 725Y standard, if Caller has ERC20Deployer permission', async () => {
const data = 'SomeData' const data = 'SomeData'
assert((await nftDatatoken.isDatatokenDeployer(nftAddress, nftOwner)) === true) assert(
(await nftDatatoken.isDatatokenDeployer(
nftAddress,
await nftOwner.getAddress()
)) === true
)
await datatoken.setData(datatokenAddress, nftOwner, data) await datatoken.setData(datatokenAddress, await nftOwner.getAddress(), data)
assert((await nftDatatoken.getData(nftAddress, datatokenAddress)) === data) assert((await nftDatatoken.getData(nftAddress, datatokenAddress)) === data)
}) })
@ -691,10 +843,13 @@ describe('Datatoken', () => {
it('#setData - should FAIL to set a value into 725Y standard, if Caller has NOT ERC20Deployer permission', async () => { it('#setData - should FAIL to set a value into 725Y standard, if Caller has NOT ERC20Deployer permission', async () => {
const data = 'NewData' const data = 'NewData'
const OldData = 'SomeData' const OldData = 'SomeData'
assert((await nftDatatoken.isDatatokenDeployer(nftAddress, user1)) === false) assert(
(await nftDatatoken.isDatatokenDeployer(nftAddress, await user3.getAddress())) ===
false
)
try { try {
await datatoken.setData(datatokenAddress, user1, data) await datatoken.setData(datatokenAddress, await user3.getAddress(), data)
assert(false) assert(false)
} catch (e) { } catch (e) {
assert(e.message === 'User is not Datatoken Deployer') assert(e.message === 'User is not Datatoken Deployer')
@ -704,7 +859,7 @@ describe('Datatoken', () => {
it('#getDecimals - should return the number of decimals of the datatoken', async () => { it('#getDecimals - should return the number of decimals of the datatoken', async () => {
const decimals = await datatoken.getDecimals(datatokenAddress) const decimals = await datatoken.getDecimals(datatokenAddress)
assert(decimals === '18') assert(decimals === 18)
}) })
it('#getSymbol - should return the symbbol of the datatoken', async () => { it('#getSymbol - should return the symbbol of the datatoken', async () => {
@ -718,13 +873,26 @@ describe('Datatoken', () => {
}) })
it('#transfer - we can transfer the datatoken', async () => { it('#transfer - we can transfer the datatoken', async () => {
const balance1before = await datatoken.balance(datatokenAddress, user1) datatoken = new Datatoken(user1, 8996)
const balance2before = await datatoken.balance(datatokenAddress, user2) const balance1before = await datatoken.balance(
datatokenAddress,
await user1.getAddress()
)
const balance2before = await datatoken.balance(
datatokenAddress,
await user2.getAddress()
)
await datatoken.transfer(datatokenAddress, user2, '1', user1) await datatoken.transfer(datatokenAddress, await user2.getAddress(), '1')
const balance1after = await datatoken.balance(datatokenAddress, user1) const balance1after = await datatoken.balance(
const balance2after = await datatoken.balance(datatokenAddress, user2) datatokenAddress,
await user1.getAddress()
)
const balance2after = await datatoken.balance(
datatokenAddress,
await user2.getAddress()
)
assert(+balance1after === +balance1before - 1) assert(+balance1after === +balance1before - 1)
assert(+balance2after === +balance2before + 1) assert(+balance2after === +balance2before + 1)
@ -733,63 +901,68 @@ describe('Datatoken', () => {
it('#setPublishingMarketFee - User should not be able to set the Publishing Market Fee', async () => { it('#setPublishingMarketFee - User should not be able to set the Publishing Market Fee', async () => {
const originalPublishingMarketFee = await datatoken.getPublishingMarketFee( const originalPublishingMarketFee = await datatoken.getPublishingMarketFee(
datatokenAddress, datatokenAddress,
user1 await user1.getAddress()
) )
try { try {
await datatoken.setPublishingMarketFee( await datatoken.setPublishingMarketFee(
datatokenAddress, datatokenAddress,
user1, await user1.getAddress(),
contracts.daiAddress, addresses.MockDAI,
web3.utils.toWei('10'), ethers.utils.parseUnits('10').toString(),
user1 await user1.getAddress()
) )
} catch (e) { } catch (e) {
console.log('Message:', e.message)
assert(e.message === 'Caller is not the Publishing Market Fee Address') assert(e.message === 'Caller is not the Publishing Market Fee Address')
} }
const newPublishingMarketFee = await datatoken.getPublishingMarketFee( const newPublishingMarketFee = await datatoken.getPublishingMarketFee(
datatokenAddress, datatokenAddress,
user3 await user3.getAddress()
) )
assert( assert(
newPublishingMarketFee.publishMarketFeeAddress === newPublishingMarketFee.publishMarketFeeAddress ===
originalPublishingMarketFee.publishMarketFeeAddress originalPublishingMarketFee.publishMarketFeeAddress
) )
assert(
newPublishingMarketFee.publishMarketFeeAmount ===
originalPublishingMarketFee.publishMarketFeeAmount
)
assert( assert(
newPublishingMarketFee.publishMarketFeeToken === newPublishingMarketFee.publishMarketFeeToken ===
originalPublishingMarketFee.publishMarketFeeToken originalPublishingMarketFee.publishMarketFeeToken
) )
assert(
newPublishingMarketFee.publishMarketFeeAmount ===
originalPublishingMarketFee.publishMarketFeeAmount
)
}) })
it('#setPublishingMarketFee - Marketplace fee address should be able to set the Publishing Market Fee', async () => { it('#setPublishingMarketFee - Marketplace fee address should be able to set the Publishing Market Fee', async () => {
datatoken = new Datatoken(user2, 8996)
const originalPublishingMarketFee = await datatoken.getPublishingMarketFee( const originalPublishingMarketFee = await datatoken.getPublishingMarketFee(
datatokenAddress, datatokenAddress,
user2 await user2.getAddress()
) )
try { try {
await datatoken.setPublishingMarketFee( await datatoken.setPublishingMarketFee(
datatokenAddress, datatokenAddress,
user2, await user2.getAddress(),
contracts.daiAddress, addresses.MockDAI,
web3.utils.toWei('10'), ethers.utils.parseUnits('10').toString(),
user2 await user2.getAddress()
) )
} catch (e) { } catch (e) {
console.log('Error:', e) console.log('Error:', e)
} }
const newPublishingMarketFee = await datatoken.getPublishingMarketFee( const newPublishingMarketFee = await datatoken.getPublishingMarketFee(
datatokenAddress, datatokenAddress,
user2 await user2.getAddress()
) )
assert(newPublishingMarketFee !== originalPublishingMarketFee) assert(newPublishingMarketFee !== originalPublishingMarketFee)
assert(newPublishingMarketFee.publishMarketFeeAddress === user2) assert(newPublishingMarketFee.publishMarketFeeAddress === (await user2.getAddress()))
assert(newPublishingMarketFee.publishMarketFeeAmount === web3.utils.toWei('10'))
assert(newPublishingMarketFee.publishMarketFeeToken === contracts.daiAddress) assert(
newPublishingMarketFee.publishMarketFeeAmount ===
ethers.utils.parseUnits('10').toString()
)
assert(newPublishingMarketFee.publishMarketFeeToken === addresses.MockDAI)
}) })
*/
}) })