Address audit comments

- Emit event when Tornado ownership changes
 - Disallow setting feeToSetter to 0 address
 - Disallow setting feeTo to 0 address
 - Use more SafeMath
 - Set MIN_PROTOCOL_FEE_DIVISOR to constant
 - Add additional unit tests
This commit is contained in:
Brian Li 2021-04-17 21:09:03 -07:00
parent b19b1fe600
commit 0450c4aa1b
4 changed files with 40 additions and 15 deletions

View file

@ -1,9 +1,9 @@
const FeeManager = artifacts.require('./FeeManager.sol')
const {toBN} = require('web3-utils')
const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"
const expectEqual = (actual, expected) => assert(expected === actual, `Expected ${expected}, got: ${actual}`)
const expectErrorMessage = (error, expectedMessage) => assert(error.message.includes(expectedMessage), `Unexpected error: ${error.message}`)
contract('FeeManager', accounts => {
let feeManager
@ -17,7 +17,7 @@ contract('FeeManager', accounts => {
try {
await feeManager.setFeeTo(accounts[1], {from: accounts[1]})
} catch (e) {
assert(e.message.includes("Poof: FORBIDDEN"), `Unexpected error: ${e.message}`)
expectErrorMessage(e, "FeeManager: FORBIDDEN")
}
const feeTo = await feeManager.feeTo()
@ -29,6 +29,17 @@ contract('FeeManager', accounts => {
const feeTo = await feeManager.feeTo()
expectEqual(feeTo, accounts[1])
})
it('should fail when `feeTo` is the zero address', async () => {
try {
await feeManager.setFeeTo(ZERO_ADDRESS, {from: accounts[0]})
} catch (e) {
expectErrorMessage(e, "FeeManager: new feeTo is the zero address")
}
const feeTo = await feeManager.feeTo()
expectEqual(feeTo, accounts[1])
})
})
describe("#setFeeToSetter", () => {
@ -36,7 +47,7 @@ contract('FeeManager', accounts => {
try {
await feeManager.setFeeToSetter(accounts[1], {from: accounts[1]})
} catch (e) {
assert(e.message.includes("Poof: FORBIDDEN"), `Unexpected error: ${e.message}`)
expectErrorMessage(e, "FeeManager: FORBIDDEN")
}
const feeToSetter = await feeManager.feeToSetter()
@ -52,6 +63,17 @@ contract('FeeManager', accounts => {
const feeToSetter2 = await feeManager.feeToSetter()
expectEqual(feeToSetter2, accounts[0])
})
it('should fail when `feeToSetter` is the zero address', async () => {
try {
await feeManager.setFeeToSetter(ZERO_ADDRESS, {from: accounts[0]})
} catch (e) {
expectErrorMessage(e, "FeeManager: new feeToSetter is the zero address")
}
const feeToSetter = await feeManager.feeToSetter()
expectEqual(feeToSetter, accounts[0])
})
})
describe("#setProtocolFeeDivisor", () => {
@ -59,7 +81,7 @@ contract('FeeManager', accounts => {
try {
await feeManager.setProtocolFeeDivisor(200, {from: accounts[1]})
} catch (e) {
assert(e.message.includes("Poof: FORBIDDEN"), `Unexpected error: ${e.message}`)
expectErrorMessage(e, "FeeManager: FORBIDDEN")
}
const protocolFeeDivisor = await feeManager.protocolFeeDivisor()
@ -70,7 +92,7 @@ contract('FeeManager', accounts => {
try {
await feeManager.setProtocolFeeDivisor(199, {from: accounts[0]})
} catch (e) {
assert(e.message.includes("Poof: Protocol fee too high"), `Unexpected error: ${e.message}`)
expectErrorMessage(e, "FeeManager: Protocol fee too high")
}
const protocolFeeDivisor = await feeManager.protocolFeeDivisor()
@ -97,7 +119,7 @@ contract('FeeManager', accounts => {
try {
await feeManager.clearFee({from: accounts[1]})
} catch (e) {
assert(e.message.includes("Poof: FORBIDDEN"), `Unexpected error: ${e.message}`)
expectErrorMessage(e, "FeeManager: FORBIDDEN")
}
const protocolFeeDivisor = await feeManager.protocolFeeDivisor()