diff --git a/contracts/core/Protocol.sol b/contracts/core/Protocol.sol index ab200ee0..68d4e844 100644 --- a/contracts/core/Protocol.sol +++ b/contracts/core/Protocol.sol @@ -49,8 +49,6 @@ contract Protocol is IProtocol, ProtoBase { * @param values[12] max lending ratio */ function initialize(address[] calldata addresses, uint256[] calldata values) external override nonReentrant whenNotPaused { - s.mustBeProtocolMember(msg.sender); - require(addresses[0] != address(0), "Invalid Burner"); // require(addresses[1] != address(0), "Invalid Uniswap V2 Router"); // require(addresses[2] != address(0), "Invalid Uniswap V2 Factory"); @@ -78,12 +76,16 @@ contract Protocol is IProtocol, ProtoBase { AccessControlLibV1.mustBeAdmin(s); require(addresses[3] == address(0), "Can't change NPM"); } else { + s.mustBeProtocolMember(msg.sender); require(addresses[3] != address(0), "Invalid NPM"); s.setAddressByKey(ProtoUtilV1.CNS_CORE, address(this)); s.setBoolByKeys(ProtoUtilV1.NS_CONTRACTS, address(this), true); s.setAddressByKey(ProtoUtilV1.CNS_NPM, addresses[3]); + + s.deleteBoolByKeys(ProtoUtilV1.NS_MEMBERS, msg.sender); + emit MemberRemoved(msg.sender); } s.setAddressByKey(ProtoUtilV1.CNS_BURNER, addresses[0]); @@ -109,6 +111,7 @@ contract Protocol is IProtocol, ProtoBase { s.setUintByKey(ProtoUtilV1.NS_COVERAGE_LAG, 1 days); initialized = true; + emit Initialized(addresses, values); } diff --git a/test/examples/distributor/add-liquidity.spec.js b/test/examples/distributor/add-liquidity.spec.js index 33e00caf..a795d7f9 100644 --- a/test/examples/distributor/add-liquidity.spec.js +++ b/test/examples/distributor/add-liquidity.spec.js @@ -86,6 +86,9 @@ describe('Distributor: `addLiquidity` function', () => { }) it('must reject if vault contract was not found', async () => { + const [owner] = await ethers.getSigners() + await deployed.protocol.addMember(owner.address) + const coverKey = deployed.coverKey const amount = helper.ether(5000, PRECISION) const npmStake = helper.ether(1000) @@ -104,9 +107,14 @@ describe('Distributor: `addLiquidity` function', () => { await distributor.addLiquidity(coverKey, amount, npmStake, referralCode) .should.not.be.rejected + + await deployed.protocol.removeMember(owner.address) }) it('must reject if DAI was not found', async () => { + const [owner] = await ethers.getSigners() + await deployed.protocol.addMember(owner.address) + const coverKey = deployed.coverKey const amount = helper.ether(5000, PRECISION) const npmStake = helper.ether(1000) @@ -125,9 +133,14 @@ describe('Distributor: `addLiquidity` function', () => { await distributor.addLiquidity(coverKey, amount, npmStake, referralCode) .should.not.be.rejected + + await deployed.protocol.removeMember(owner.address) }) it('must reject if NPM was not found', async () => { + const [owner] = await ethers.getSigners() + await deployed.protocol.addMember(owner.address) + const coverKey = deployed.coverKey const amount = helper.ether(5000, PRECISION) const npmStake = helper.ether(1000) @@ -146,5 +159,7 @@ describe('Distributor: `addLiquidity` function', () => { await distributor.addLiquidity(coverKey, amount, npmStake, referralCode) .should.not.be.rejected + + await deployed.protocol.removeMember(owner.address) }) }) diff --git a/test/examples/distributor/get-premium.spec.js b/test/examples/distributor/get-premium.spec.js index ee555be9..b2e5bdfc 100644 --- a/test/examples/distributor/get-premium.spec.js +++ b/test/examples/distributor/get-premium.spec.js @@ -34,6 +34,9 @@ describe('Distributor: `getPremium` function', () => { }) it('must reject if DAI address is not registered on the protocol', async () => { + const [owner] = await ethers.getSigners() + await deployed.protocol.addMember(owner.address) + const coverKey = deployed.coverKey const duration = '2' const protection = helper.ether(10_000, PRECISION) @@ -45,5 +48,6 @@ describe('Distributor: `getPremium` function', () => { .should.be.rejectedWith('Fatal: Policy missing') await deployed.store.setAddress(storeKey, deployed.policy.address) + await deployed.protocol.removeMember(owner.address) }) }) diff --git a/test/examples/distributor/purchase-policy.spec.js b/test/examples/distributor/purchase-policy.spec.js index 00197d5b..ab7d3495 100644 --- a/test/examples/distributor/purchase-policy.spec.js +++ b/test/examples/distributor/purchase-policy.spec.js @@ -83,6 +83,9 @@ describe('Distributor: `purchasePolicy` function', () => { }) it('must reject if an policy contract was not found', async () => { + const [owner] = await ethers.getSigners() + await deployed.protocol.addMember(owner.address) + const coverKey = deployed.coverKey const duration = '2' const protection = helper.ether(10_000, PRECISION) @@ -97,9 +100,14 @@ describe('Distributor: `purchasePolicy` function', () => { .should.be.rejectedWith('Fatal: Policy missing') await deployed.store.setAddress(storeKey, deployed.policy.address) + + await deployed.protocol.removeMember(owner.address) }) it('must reject if DAI address is not registered on the protocol', async () => { + const [owner] = await ethers.getSigners() + await deployed.protocol.addMember(owner.address) + const coverKey = deployed.coverKey const duration = '2' const protection = helper.ether(10_000, PRECISION) @@ -114,5 +122,7 @@ describe('Distributor: `purchasePolicy` function', () => { .should.be.rejectedWith('Fatal: DAI missing') await deployed.store.setAddress(storeKey, deployed.dai.address) + + await deployed.protocol.removeMember(owner.address) }) }) diff --git a/test/examples/distributor/remove-liquidity.spec.js b/test/examples/distributor/remove-liquidity.spec.js index 3c7806f0..a66b329b 100644 --- a/test/examples/distributor/remove-liquidity.spec.js +++ b/test/examples/distributor/remove-liquidity.spec.js @@ -90,6 +90,9 @@ describe('Distributor: `removeLiquidity` function', () => { }) it('must reject if vault is missing', async () => { + const [owner] = await ethers.getSigners() + await deployed.protocol.addMember(owner.address) + const coverKey = deployed.coverKey const pods = helper.ether(5000) const npmStake = helper.ether(200) @@ -106,9 +109,14 @@ describe('Distributor: `removeLiquidity` function', () => { await distributor.removeLiquidity(coverKey, pods, npmStake, false) .should.not.be.rejected + + await deployed.protocol.removeMember(owner.address) }) it('must reject if DAI is missing', async () => { + const [owner] = await ethers.getSigners() + await deployed.protocol.addMember(owner.address) + const coverKey = deployed.coverKey const pods = helper.ether(5000) const npmStake = helper.ether(200) @@ -125,9 +133,14 @@ describe('Distributor: `removeLiquidity` function', () => { await distributor.removeLiquidity(coverKey, pods, npmStake, false) .should.not.be.rejected + + await deployed.protocol.removeMember(owner.address) }) it('must reject if NPM is missing', async () => { + const [owner] = await ethers.getSigners() + await deployed.protocol.addMember(owner.address) + const coverKey = deployed.coverKey const pods = helper.ether(5000) const npmStake = helper.ether(200) @@ -144,5 +157,7 @@ describe('Distributor: `removeLiquidity` function', () => { await distributor.removeLiquidity(coverKey, pods, npmStake, false) .should.not.be.rejected + + await deployed.protocol.removeMember(owner.address) }) }) diff --git a/test/specs/libraries/access-control.spec.js b/test/specs/libraries/access-control.spec.js index 0d64bc43..4230692c 100644 --- a/test/specs/libraries/access-control.spec.js +++ b/test/specs/libraries/access-control.spec.js @@ -206,7 +206,7 @@ describe('AccessControlLibV1: hasAccess', () => { { StoreKeyUtil: deployed.storeKeyUtil.address }, deployed.store.address ) - await deployed.store.setBool(key.qualifyMember(mockStoreUser.address), true) + await deployed.protocol.addMember(mockStoreUser.address) }) it('must return false when protocol address is zero', async () => { diff --git a/test/specs/libraries/cover-util.spec.js b/test/specs/libraries/cover-util.spec.js index a9257ca6..3f382738 100644 --- a/test/specs/libraries/cover-util.spec.js +++ b/test/specs/libraries/cover-util.spec.js @@ -77,7 +77,7 @@ describe('CoverUtilV1: getActiveLiquidityUnderProtection', () => { { StoreKeyUtil: deployed.storeKeyUtil.address }, deployed.store.address ) - await deployed.store.setBool(key.qualifyMember(mockStoreUser.address), true) + await deployed.protocol.addMember(mockStoreUser.address) }) it('must return zero when active incident is zero', async () => { diff --git a/test/specs/libraries/routine-invoker.spec.js b/test/specs/libraries/routine-invoker.spec.js index 86ab33bf..1d941c27 100644 --- a/test/specs/libraries/routine-invoker.spec.js +++ b/test/specs/libraries/routine-invoker.spec.js @@ -81,7 +81,7 @@ describe('RoutineInvokerLibV1: _executeStrategy', () => { { StrategyLibV1: deployed.strategyLibV1.address }, deployed.store.address ) - await deployed.store.setBool(key.qualifyMember(mockLiquidityEngineUser.address), true) + await deployed.protocol.addMember(mockLiquidityEngineUser.address) }) it('must deposit all the balance when max lending ratio is greater than 1', async () => { diff --git a/test/specs/libraries/store-key-util.spec.js b/test/specs/libraries/store-key-util.spec.js index 08d8c029..c9650c6d 100644 --- a/test/specs/libraries/store-key-util.spec.js +++ b/test/specs/libraries/store-key-util.spec.js @@ -20,7 +20,7 @@ describe('StoreKeyUtil Library', () => { { StoreKeyUtil: deployed.storeKeyUtil.address }, deployed.store.address ) - await deployed.store.setBool(key.qualifyMember(mockContract.address), true) + await deployed.protocol.addMember(mockContract.address) }) describe('StoreKeyUtil: addUintByKey', () => { @@ -720,7 +720,7 @@ describe('StoreKeyUtil: getAddressArrayItemPositionByKey', () => { { StoreKeyUtil: deployed.storeKeyUtil.address }, deployed.store.address ) - await deployed.store.setBool(key.qualifyMember(mockContract.address), true) + await deployed.protocol.addMember(mockContract.address) }) it('must get value correctly', async () => { @@ -745,7 +745,7 @@ describe('StoreKeyUtil: getAddressArrayItemPositionByKeys (2 keys)', () => { { StoreKeyUtil: deployed.storeKeyUtil.address }, deployed.store.address ) - await deployed.store.setBool(key.qualifyMember(mockContract.address), true) + await deployed.protocol.addMember(mockContract.address) }) it('must get value correctly', async () => { @@ -771,7 +771,7 @@ describe('StoreKeyUtil: getAddressArrayItemPositionByKeys (3 keys)', () => { { StoreKeyUtil: deployed.storeKeyUtil.address }, deployed.store.address ) - await deployed.store.setBool(key.qualifyMember(mockContract.address), true) + await deployed.protocol.addMember(mockContract.address) }) it('must get value correctly', async () => { @@ -798,7 +798,7 @@ describe('StoreKeyUtil: getAddressArrayItemByIndexByKey', () => { { StoreKeyUtil: deployed.storeKeyUtil.address }, deployed.store.address ) - await deployed.store.setBool(key.qualifyMember(mockContract.address), true) + await deployed.protocol.addMember(mockContract.address) }) it('must get value correctly', async () => { @@ -832,7 +832,7 @@ describe('StoreKeyUtil: getAddressArrayItemByIndexByKeys (2 keys)', () => { { StoreKeyUtil: deployed.storeKeyUtil.address }, deployed.store.address ) - await deployed.store.setBool(key.qualifyMember(mockContract.address), true) + await deployed.protocol.addMember(mockContract.address) }) it('must get value correctly', async () => { @@ -868,7 +868,7 @@ describe('StoreKeyUtil: getAddressArrayItemByIndexByKeys (3 keys)', () => { { StoreKeyUtil: deployed.storeKeyUtil.address }, deployed.store.address ) - await deployed.store.setBool(key.qualifyMember(mockContract.address), true) + await deployed.protocol.addMember(mockContract.address) }) it('must get value correctly', async () => { @@ -906,7 +906,7 @@ describe('StoreKeyUtil: getBytes32ArrayItemPositionByKey', () => { { StoreKeyUtil: deployed.storeKeyUtil.address }, deployed.store.address ) - await deployed.store.setBool(key.qualifyMember(mockContract.address), true) + await deployed.protocol.addMember(mockContract.address) }) it('must get value correctly', async () => { @@ -931,7 +931,7 @@ describe('StoreKeyUtil: getBytes32ArrayItemPositionByKeys (2 keys)', () => { { StoreKeyUtil: deployed.storeKeyUtil.address }, deployed.store.address ) - await deployed.store.setBool(key.qualifyMember(mockContract.address), true) + await deployed.protocol.addMember(mockContract.address) }) it('must get value correctly', async () => { @@ -957,7 +957,7 @@ describe('StoreKeyUtil: getBytes32ArrayItemPositionByKeys (3 keys)', () => { { StoreKeyUtil: deployed.storeKeyUtil.address }, deployed.store.address ) - await deployed.store.setBool(key.qualifyMember(mockContract.address), true) + await deployed.protocol.addMember(mockContract.address) }) it('must get value correctly', async () => { @@ -984,7 +984,7 @@ describe('StoreKeyUtil: getBytes32ArrayItemByIndexByKey', () => { { StoreKeyUtil: deployed.storeKeyUtil.address }, deployed.store.address ) - await deployed.store.setBool(key.qualifyMember(mockContract.address), true) + await deployed.protocol.addMember(mockContract.address) }) it('must get value correctly', async () => { @@ -1018,7 +1018,7 @@ describe('StoreKeyUtil: getBytes32ArrayItemByIndexByKeys (2 keys)', () => { { StoreKeyUtil: deployed.storeKeyUtil.address }, deployed.store.address ) - await deployed.store.setBool(key.qualifyMember(mockContract.address), true) + await deployed.protocol.addMember(mockContract.address) }) it('must get value correctly', async () => { @@ -1054,7 +1054,7 @@ describe('StoreKeyUtil: getBytes32ArrayItemByIndexByKeys (3 keys)', () => { { StoreKeyUtil: deployed.storeKeyUtil.address }, deployed.store.address ) - await deployed.store.setBool(key.qualifyMember(mockContract.address), true) + await deployed.protocol.addMember(mockContract.address) }) it('must get value correctly', async () => { @@ -1092,7 +1092,7 @@ describe('StoreKeyUtil: getBytes32ArrayByKey & getBytes32ArrayByKeys', () => { { StoreKeyUtil: deployed.storeKeyUtil.address }, deployed.store.address ) - await deployed.store.setBool(key.qualifyMember(mockContract.address), true) + await deployed.protocol.addMember(mockContract.address) }) describe('StoreKeyUtil: getBytes32ArrayByKey', () => { @@ -1143,7 +1143,7 @@ describe('StoreKeyUtil: getAddressArrayByKey & getAddressArrayByKeys', () => { { StoreKeyUtil: deployed.storeKeyUtil.address }, deployed.store.address ) - await deployed.store.setBool(key.qualifyMember(mockContract.address), true) + await deployed.protocol.addMember(mockContract.address) }) describe('StoreKeyUtil: getAddressArrayByKey', () => { diff --git a/test/specs/libraries/vault.spec.js b/test/specs/libraries/vault.spec.js index 265dbec1..c1bc6bd4 100644 --- a/test/specs/libraries/vault.spec.js +++ b/test/specs/libraries/vault.spec.js @@ -68,7 +68,7 @@ describe('Vault Library', () => { }, deployed.store.address ) - await deployed.store.setBool(key.qualifyMember(mockContract.address), true) + await deployed.protocol.addMember(mockContract.address) }) describe('VaultLibV1: calculatePodsInternal', () => { diff --git a/test/specs/liquidity/strategy/aave/deposit.spec.js b/test/specs/liquidity/strategy/aave/deposit.spec.js index 4929b8f1..e36eef08 100644 --- a/test/specs/liquidity/strategy/aave/deposit.spec.js +++ b/test/specs/liquidity/strategy/aave/deposit.spec.js @@ -14,7 +14,10 @@ describe('Aave Deposit', () => { let deployed, aaveLendingPool, aToken, aaveStrategy beforeEach(async () => { + const [owner] = await ethers.getSigners() + deployed = await deployDependencies() + await deployed.protocol.addMember(owner.address) aToken = await deployer.deploy(cache, 'FakeToken', 'aToken', 'aToken', helper.ether(100_000_000), 18) aaveLendingPool = await deployer.deploy(cache, 'FakeAaveLendingPool', aToken.address) @@ -64,7 +67,10 @@ describe('Aave Deposit: Faulty Pool', () => { let deployed, aaveLendingPool, aToken, aaveStrategy beforeEach(async () => { + const [owner] = await ethers.getSigners() + deployed = await deployDependencies() + await deployed.protocol.addMember(owner.address) aToken = await deployer.deploy(cache, 'FakeToken', 'aToken', 'aToken', helper.ether(100_000_000), 18) aaveLendingPool = await deployer.deploy(cache, 'FaultyAaveLendingPool', aToken.address) diff --git a/test/specs/liquidity/strategy/aave/drain.spec.js b/test/specs/liquidity/strategy/aave/drain.spec.js index 7cbaddcf..d5a85a46 100644 --- a/test/specs/liquidity/strategy/aave/drain.spec.js +++ b/test/specs/liquidity/strategy/aave/drain.spec.js @@ -14,7 +14,10 @@ describe('Aave Deposit: Drained', () => { let deployed, aaveLendingPool, aToken, aaveStrategy beforeEach(async () => { + const [owner] = await ethers.getSigners() + deployed = await deployDependencies() + await deployed.protocol.addMember(owner.address) aToken = await deployer.deploy(cache, 'FakeToken', 'aToken', 'aToken', helper.ether(100_000_000), 18) aaveLendingPool = await deployer.deploy(cache, 'FakeAaveLendingPool', aToken.address) diff --git a/test/specs/liquidity/strategy/aave/withdraw.spec.js b/test/specs/liquidity/strategy/aave/withdraw.spec.js index 67322e25..a3f2e433 100644 --- a/test/specs/liquidity/strategy/aave/withdraw.spec.js +++ b/test/specs/liquidity/strategy/aave/withdraw.spec.js @@ -14,7 +14,10 @@ describe('Aave Withdrawal', () => { let deployed, aaveLendingPool, aToken, aaveStrategy beforeEach(async () => { + const [owner] = await ethers.getSigners() + deployed = await deployDependencies() + await deployed.protocol.addMember(owner.address) aToken = await deployer.deploy(cache, 'FakeToken', 'aToken', 'aToken', helper.ether(100_000_000), 18) aaveLendingPool = await deployer.deploy(cache, 'FakeAaveLendingPool', aToken.address) @@ -62,7 +65,10 @@ describe('Aave Deposit: Faulty Pool', () => { let deployed, aaveLendingPool, aToken, aaveStrategy beforeEach(async () => { + const [owner] = await ethers.getSigners() + deployed = await deployDependencies() + await deployed.protocol.addMember(owner.address) aToken = await deployer.deploy(cache, 'FakeToken', 'aToken', 'aToken', helper.ether(100_000_000), 18) aaveLendingPool = await deployer.deploy(cache, 'FaultyAaveLendingPool', aToken.address) diff --git a/test/specs/liquidity/strategy/compound/deposit.spec.js b/test/specs/liquidity/strategy/compound/deposit.spec.js index 77b0c5c5..a0d20138 100644 --- a/test/specs/liquidity/strategy/compound/deposit.spec.js +++ b/test/specs/liquidity/strategy/compound/deposit.spec.js @@ -14,7 +14,10 @@ describe('Compound Deposit', () => { let deployed, daiDelegator, cDai, compoundStrategy beforeEach(async () => { + const [owner] = await ethers.getSigners() + deployed = await deployDependencies() + await deployed.protocol.addMember(owner.address) cDai = await deployer.deploy(cache, 'FakeToken', 'cDai', 'cDai', helper.ether(100_000_000), 18) daiDelegator = await deployer.deploy(cache, 'FakeCompoundDaiDelegator', deployed.dai.address, cDai.address) @@ -64,7 +67,10 @@ describe('Compound Deposit: Faulty Pool', () => { let deployed, daiDelegator, compoundStrategy before(async () => { + const [owner] = await ethers.getSigners() + deployed = await deployDependencies() + await deployed.protocol.addMember(owner.address) const cDai = await deployer.deploy(cache, 'FakeToken', 'cDai', 'cDai', helper.ether(100_000_000), 18) daiDelegator = await deployer.deploy(cache, 'FaultyCompoundDaiDelegator', deployed.dai.address, cDai.address, '1') diff --git a/test/specs/liquidity/strategy/compound/drain.spec.js b/test/specs/liquidity/strategy/compound/drain.spec.js index 82cfe019..0657a49a 100644 --- a/test/specs/liquidity/strategy/compound/drain.spec.js +++ b/test/specs/liquidity/strategy/compound/drain.spec.js @@ -14,7 +14,10 @@ describe('Compound Deposit: Drained', () => { let deployed, daiDelegator, cDai, compoundStrategy beforeEach(async () => { + const [owner] = await ethers.getSigners() + deployed = await deployDependencies() + await deployed.protocol.addMember(owner.address) cDai = await deployer.deploy(cache, 'FakeToken', 'cDai', 'cDai', helper.ether(100_000_000), 18) daiDelegator = await deployer.deploy(cache, 'FakeCompoundDaiDelegator', deployed.dai.address, cDai.address) diff --git a/test/specs/liquidity/strategy/compound/withdraw.spec.js b/test/specs/liquidity/strategy/compound/withdraw.spec.js index 0355bbb7..a79e6f68 100644 --- a/test/specs/liquidity/strategy/compound/withdraw.spec.js +++ b/test/specs/liquidity/strategy/compound/withdraw.spec.js @@ -14,7 +14,10 @@ describe('Compound Withdrawal', () => { let deployed, daiDelegator, cDai, compoundStrategy beforeEach(async () => { + const [owner] = await ethers.getSigners() + deployed = await deployDependencies() + await deployed.protocol.addMember(owner.address) cDai = await deployer.deploy(cache, 'FakeToken', 'cDai', 'cDai', helper.ether(100_000_000), 18) daiDelegator = await deployer.deploy(cache, 'FakeCompoundDaiDelegator', deployed.dai.address, cDai.address) @@ -62,7 +65,10 @@ describe('Compound Withdrawal: Faulty Pool', () => { let deployed, daiDelegator, compoundStrategy before(async () => { + const [owner] = await ethers.getSigners() + deployed = await deployDependencies() + await deployed.protocol.addMember(owner.address) const cDai = await deployer.deploy(cache, 'FakeToken', 'cDai', 'cDai', helper.ether(100_000_000), 18) daiDelegator = await deployer.deploy(cache, 'FaultyCompoundDaiDelegator', deployed.dai.address, cDai.address, '1') diff --git a/test/specs/liquidity/vault/receive-from-strategy.spec.js b/test/specs/liquidity/vault/receive-from-strategy.spec.js index fbce6e6b..5769822c 100644 --- a/test/specs/liquidity/vault/receive-from-strategy.spec.js +++ b/test/specs/liquidity/vault/receive-from-strategy.spec.js @@ -13,7 +13,10 @@ describe('Vault: receiveFromStrategy', () => { let deployed before(async () => { + const [owner] = await ethers.getSigners() + deployed = await deployDependencies() + await deployed.protocol.addMember(owner.address) }) it('reverts when amount is invalid', async () => { diff --git a/test/specs/liquidity/vault/transfer-to-strategy.spec.js b/test/specs/liquidity/vault/transfer-to-strategy.spec.js index dd3f0a58..ed87524b 100644 --- a/test/specs/liquidity/vault/transfer-to-strategy.spec.js +++ b/test/specs/liquidity/vault/transfer-to-strategy.spec.js @@ -13,7 +13,10 @@ describe('Vault: transferToStrategy', () => { let deployed before(async () => { + const [owner] = await ethers.getSigners() + deployed = await deployDependencies() + await deployed.protocol.addMember(owner.address) }) it('reverts when amount is invalid', async () => { diff --git a/test/specs/protocol/ctor-vfns.spec.js b/test/specs/protocol/ctor-vfns.spec.js index bdf5d438..8ed1c1cf 100644 --- a/test/specs/protocol/ctor-vfns.spec.js +++ b/test/specs/protocol/ctor-vfns.spec.js @@ -14,7 +14,7 @@ describe('Protocol Constructor & Initializer', () => { const treasury = helper.randomAddress() let npm, store, router, storeKeyUtil, protoUtilV1, accessControlLibV1, validationLibV1, baseLibV1, registryLibV1 - before(async () => { + beforeEach(async () => { const deployed = await deployDependencies() npm = deployed.npm @@ -503,94 +503,4 @@ describe('Protocol Constructor & Initializer', () => { ] ).should.be.rejectedWith('Invalid Burner') }) - - it('should fail if zero address is provided as uniswap router', async () => { - const protocol = await deployer.deployWithLibraries(cache, 'Protocol', - { - AccessControlLibV1: accessControlLibV1.address, - BaseLibV1: baseLibV1.address, - ProtoUtilV1: protoUtilV1.address, - RegistryLibV1: registryLibV1.address, - StoreKeyUtil: storeKeyUtil.address, - ValidationLibV1: validationLibV1.address - }, - store.address - ) - - await store.setBool(key.qualify(protocol.address), true) - await store.setBool(key.qualifyMember(protocol.address), true) - - const priceOracle = await deployer.deploy(cache, 'FakePriceOracle') - - await protocol.initialize( - [ - helper.randomAddress(), - helper.zerox, - helper.randomAddress(), // factory - helper.randomAddress(), - treasury, - priceOracle.address - ], - [ - helper.ether(0), // Cover Fee - helper.ether(0), // Min Cover Stake - helper.ether(250), // Min Reporting Stake - 7 * DAYS, // Claim period - helper.ether(0.3), // Governance Burn Rate: 30% - helper.ether(0.1), // Governance Reporter Commission: 10% - helper.ether(0.065), // Claim: Platform Fee: 6.5% - helper.ether(0.005), // Claim: Reporter Commission: 5% - helper.ether(0.0005), // Flash Loan Fee: 0.5% - helper.ether(0.0025), // Flash Loan Protocol Fee: 2.5% - 1 * DAYS, // cooldown period, - 1 * DAYS, // state and liquidity update interval - helper.percentage(5) - ] - ).should.be.rejectedWith('Invalid Uniswap V2 Router') - }) - - it('should fail if zero address is provided as uniswap factory', async () => { - const protocol = await deployer.deployWithLibraries(cache, 'Protocol', - { - AccessControlLibV1: accessControlLibV1.address, - BaseLibV1: baseLibV1.address, - ProtoUtilV1: protoUtilV1.address, - RegistryLibV1: registryLibV1.address, - StoreKeyUtil: storeKeyUtil.address, - ValidationLibV1: validationLibV1.address - }, - store.address - ) - - await store.setBool(key.qualify(protocol.address), true) - await store.setBool(key.qualifyMember(protocol.address), true) - - const priceOracle = await deployer.deploy(cache, 'FakePriceOracle') - - await protocol.initialize( - [ - helper.randomAddress(), - router.address, - helper.zerox, // factory - helper.randomAddress(), - treasury, - priceOracle.address - ], - [ - helper.ether(0), // Cover Fee - helper.ether(0), // Min Cover Stake - helper.ether(250), // Min Reporting Stake - 7 * DAYS, // Claim period - helper.ether(0.3), // Governance Burn Rate: 30% - helper.ether(0.1), // Governance Reporter Commission: 10% - helper.ether(0.065), // Claim: Platform Fee: 6.5% - helper.ether(0.005), // Claim: Reporter Commission: 5% - helper.ether(0.0005), // Flash Loan Fee: 0.5% - helper.ether(0.0025), // Flash Loan Protocol Fee: 2.5% - 1 * DAYS, // cooldown period, - 1 * DAYS, // state and liquidity update interval - helper.percentage(5) - ] - ).should.be.rejectedWith('Invalid Uniswap V2 Factory') - }) }) diff --git a/util/extract/keys/template-ts.js b/util/extract/keys/template-ts.js index 0a38a10e..cc30b582 100644 --- a/util/extract/keys/template-ts.js +++ b/util/extract/keys/template-ts.js @@ -1,8 +1,9 @@ -const pre = `import { ethers } from 'ethers' +const pre = `import { keccak256 as solidityKeccak256 } from '@ethersproject/solidity' +import { formatBytes32String } from '@ethersproject/strings' -const encodeKey = (x: string): string => ethers.utils.solidityKeccak256(['bytes32'], [x]) -const encodeKeys = (x: string[], y: string[]): string => ethers.utils.solidityKeccak256(x, y) -const toBytes32 = (x: string): string => ethers.utils.formatBytes32String(x) +const encodeKey = (x: string): string => solidityKeccak256(['bytes32'], [x]) +const encodeKeys = (x: string[], y: string[]): string => solidityKeccak256(x, y) +const toBytes32 = (x: string): string => formatBytes32String(x) const getCoverContractKey = (namespace: string, coverKey: string): string => encodeKeys(['bytes32', 'bytes32'], [namespace, coverKey]) const qualifyBytes32 = (k: string): string => encodeKeys(['bytes32', 'bytes32'], [PROTOCOL.NS.CONTRACTS, k]) const qualify = (k: string): string => encodeKeys(['bytes32', 'address'], [PROTOCOL.NS.CONTRACTS, k])