Fixing first test

This commit is contained in:
Jamie Hewitt 2022-07-04 16:49:49 +01:00
parent 44d608b7e8
commit 70db07e17e

View File

@ -17,7 +17,6 @@ import { SHA256 } from 'crypto-js'
import { homedir } from 'os' import { homedir } from 'os'
import fs from 'fs' import fs from 'fs'
import { fetch } from 'cross-fetch' import { fetch } from 'cross-fetch'
import { getOrderId } from '../../src/mappings/utils/orderUtils'
const data = JSON.parse( const data = JSON.parse(
fs.readFileSync( fs.readFileSync(
@ -80,7 +79,7 @@ describe('Simple Publish & consume test', async () => {
let accounts: string[] let accounts: string[]
let publisherAccount: string let publisherAccount: string
let newOwnerAccount: string let newOwnerAccount: string
// let user1: string let user1: string
let user2: string let user2: string
let user3: string let user3: string
@ -90,7 +89,7 @@ describe('Simple Publish & consume test', async () => {
accounts = await web3.eth.getAccounts() accounts = await web3.eth.getAccounts()
publisherAccount = accounts[0] publisherAccount = accounts[0]
newOwnerAccount = accounts[1].toLowerCase() newOwnerAccount = accounts[1].toLowerCase()
// user1 = accounts[2] user1 = accounts[2]
user2 = accounts[3] user2 = accounts[3]
user3 = accounts[4] user3 = accounts[4]
}) })
@ -297,6 +296,10 @@ describe('Simple Publish & consume test', async () => {
it('should save provider fees after startOrder is called', async () => { it('should save provider fees after startOrder is called', async () => {
datatoken = new Datatoken(web3, 8996) datatoken = new Datatoken(web3, 8996)
await datatoken.mint(datatokenAddress, publisherAccount, '100', user1)
const user1Balance = await datatoken.balance(datatokenAddress, user1)
assert(user1Balance === '100', 'user1 has no datatokens')
const providerData = JSON.stringify({ timeout: 0 }) const providerData = JSON.stringify({ timeout: 0 })
const providerFeeToken = ZERO_ADDRESS const providerFeeToken = ZERO_ADDRESS
const providerFeeAmount = '10000' const providerFeeAmount = '10000'
@ -319,130 +322,146 @@ describe('Simple Publish & consume test', async () => {
providerData: web3.utils.toHex(web3.utils.asciiToHex(providerData)), providerData: web3.utils.toHex(web3.utils.asciiToHex(providerData)),
validUntil: providerValidUntil validUntil: providerValidUntil
} }
console.log('setProviderFee', setProviderFee)
const orderTx = await datatoken.startOrder( const orderTx = await datatoken.startOrder(
datatokenAddress, datatokenAddress,
publisherAccount, user1,
user2, user2,
1, 1,
setProviderFee setProviderFee
) )
console.log('order', orderTx) console.log('#### order', orderTx)
const orderId = getOrderId( const orderId = `${orderTx.transactionHash.toLocaleLowerCase()}-${datatokenAddress.toLocaleLowerCase()}-${user1.toLocaleLowerCase()}`
orderTx.transactionHash, console.log('#### orderId', orderId)
datatokenAddress, await sleep(2000)
publisherAccount const query = { query: `query {order(id:"${orderId}"){id, providerFee}}` }
)
const query = { await sleep(2000)
query: `query { const response3 = await fetch(subgraphUrl, {
order(id:"${orderId}"){id, providerFee}}`
}
const response = await fetch(subgraphUrl, {
method: 'POST', method: 'POST',
body: JSON.stringify(query) body: JSON.stringify(query)
}) })
const queryResult = await response.json()
assert(queryResult.data.order.providerFee === setProviderFee) const queryResult = await response3.json()
console.log(
'#### queryResult.data.order.providerFee',
queryResult.data.order.providerFee
)
const providerFeeJSON = JSON.parse(queryResult.data.order.providerFee)
console.log('providerFeeJSON', providerFeeJSON.providerFeeAddress)
console.log('setProviderFee', setProviderFee.providerFeeAddress)
assert(
providerFeeJSON.providerFeeAddress.toLowerCase() ===
setProviderFee.providerFeeAddress.toLowerCase(),
'Wrong providerFeeAddress set'
)
assert(
providerFeeJSON.providerFeeAmount.toLowerCase() ===
setProviderFee.providerFeeAmount.toLowerCase(),
'Wrong providerFeeAmount set'
)
assert(
providerFeeJSON.providerFeeToken.toLowerCase() ===
setProviderFee.providerFeeToken.toLowerCase(),
'Wrong providerFeeToken set'
)
}) })
it('should save provider fees after calling reuseOrder on a using a previous txId', async () => { // it('should save provider fees after calling reuseOrder on a using a previous txId', async () => {
const providerData = JSON.stringify({ timeout: 0 }) // const providerData = JSON.stringify({ timeout: 0 })
const providerFeeToken = ZERO_ADDRESS // const providerFeeToken = ZERO_ADDRESS
let providerFeeAmount = '90' // let providerFeeAmount = '90'
let providerValidUntil = '0' // let providerValidUntil = '0'
let message = web3.utils.soliditySha3( // let message = web3.utils.soliditySha3(
{ t: 'bytes', v: web3.utils.toHex(web3.utils.asciiToHex(providerData)) }, // { t: 'bytes', v: web3.utils.toHex(web3.utils.asciiToHex(providerData)) },
{ t: 'address', v: user3 }, // { t: 'address', v: user3 },
{ t: 'address', v: providerFeeToken }, // { t: 'address', v: providerFeeToken },
{ t: 'uint256', v: providerFeeAmount }, // { t: 'uint256', v: providerFeeAmount },
{ t: 'uint256', v: providerValidUntil } // { t: 'uint256', v: providerValidUntil }
) // )
let { v, r, s } = await signHash(web3, message, user3) // let { v, r, s } = await signHash(web3, message, user3)
const setInitialProviderFee: ProviderFees = { // const setInitialProviderFee: ProviderFees = {
providerFeeAddress: user3, // providerFeeAddress: user3,
providerFeeToken, // providerFeeToken,
providerFeeAmount, // providerFeeAmount,
v, // v,
r, // r,
s, // s,
providerData: web3.utils.toHex(web3.utils.asciiToHex(providerData)), // providerData: web3.utils.toHex(web3.utils.asciiToHex(providerData)),
validUntil: providerValidUntil // validUntil: providerValidUntil
} // }
const orderTx = await datatoken.startOrder( // const orderTx = await datatoken.startOrder(
datatokenAddress, // datatokenAddress,
publisherAccount, // publisherAccount,
user2, // user2,
1, // 1,
setInitialProviderFee // setInitialProviderFee
) // )
assert(orderTx.transactionHash, ' Failed to start order') // assert(orderTx.transactionHash, ' Failed to start order')
// Check initial provider fee has been set correctly // // Check initial provider fee has been set correctly
const orderId = getOrderId( // const orderId = `${orderTx.transactionHash}-${datatokenAddress}-${publisherAccount}`
orderTx.transactionHash, // const query = {
datatokenAddress, // query: `query {
publisherAccount // OrderReuse(id:"${orderId}"){id, providerFee}}`
) // }
const query = { // const response = await fetch(subgraphUrl, {
query: `query { // method: 'POST',
OrderReuse(id:"${orderId}"){id, providerFee}}` // body: JSON.stringify(query)
} // })
const response = await fetch(subgraphUrl, { // const queryResult = await response.json()
method: 'POST', // assert(
body: JSON.stringify(query) // queryResult.data.order.providerFee === setInitialProviderFee,
}) // 'Initial provider fee was not correctly set'
const queryResult = await response.json() // )
assert(
queryResult.data.order.providerFee === setInitialProviderFee,
'Initial provider fee was not correctly set'
)
providerFeeAmount = '90' // providerFeeAmount = '90'
providerValidUntil = '0' // providerValidUntil = '0'
message = web3.utils.soliditySha3( // message = web3.utils.soliditySha3(
{ t: 'bytes', v: web3.utils.toHex(web3.utils.asciiToHex(providerData)) }, // { t: 'bytes', v: web3.utils.toHex(web3.utils.asciiToHex(providerData)) },
{ t: 'address', v: user3 }, // { t: 'address', v: user3 },
{ t: 'address', v: providerFeeToken }, // { t: 'address', v: providerFeeToken },
{ t: 'uint256', v: providerFeeAmount }, // { t: 'uint256', v: providerFeeAmount },
{ t: 'uint256', v: providerValidUntil } // { t: 'uint256', v: providerValidUntil }
) // )
const msgResult = await signHash(web3, message, user3) // const msgResult = await signHash(web3, message, user3)
v = msgResult.v // v = msgResult.v
r = msgResult.r // r = msgResult.r
s = msgResult.s // s = msgResult.s
const setNewProviderFee: ProviderFees = { // const setNewProviderFee: ProviderFees = {
providerFeeAddress: user3, // providerFeeAddress: user3,
providerFeeToken, // providerFeeToken,
providerFeeAmount, // providerFeeAmount,
v, // v,
r, // r,
s, // s,
providerData: web3.utils.toHex(web3.utils.asciiToHex(providerData)), // providerData: web3.utils.toHex(web3.utils.asciiToHex(providerData)),
validUntil: providerValidUntil // validUntil: providerValidUntil
} // }
const reusedOrder = await datatoken.reuseOrder( // const reusedOrder = await datatoken.reuseOrder(
datatokenAddress, // datatokenAddress,
user2, // user2,
orderTx.transactionHash, // orderTx.transactionHash,
setNewProviderFee // setNewProviderFee
) // )
assert(reusedOrder.events.OrderReused.event === 'OrderReused') // assert(reusedOrder.events.OrderReused.event === 'OrderReused')
assert(reusedOrder.events.ProviderFee.event === 'ProviderFee') // assert(reusedOrder.events.ProviderFee.event === 'ProviderFee')
// Check the new provider fee has been set in OrderReuse // // Check the new provider fee has been set in OrderReuse
const query2 = { // const query2 = {
query: `query { // query: `query {
OrderReuse(id:"${reusedOrder.transactionHash}"){id, providerFee}}` // OrderReuse(id:"${reusedOrder.transactionHash}"){id, providerFee}}`
} // }
const response2 = await fetch(subgraphUrl, { // const response2 = await fetch(subgraphUrl, {
method: 'POST', // method: 'POST',
body: JSON.stringify(query2) // body: JSON.stringify(query2)
}) // })
const queryResult2 = await response2.json() // const queryResult2 = await response2.json()
assert( // assert(
queryResult2.data.order.providerFee === setNewProviderFee, // queryResult2.data.order.providerFee === setNewProviderFee,
'New provider fees have not been correctly set in OrderReuse' // 'New provider fees have not been correctly set in OrderReuse'
) // )
}) // })
}) })