kopia lustrzana https://github.com/bugout-dev/dao
Added check for pool controllership on pool parameter setters
Transferability and burnability of a pool can only be changed by pool controller.pull/54/head
rodzic
afa3d3f772
commit
a37ec24699
|
@ -185,11 +185,13 @@ contract TerminusFacet is ERC1155WithTerminusStorage {
|
|||
}
|
||||
|
||||
function setPoolTransferable(uint256 poolID, bool transferable) external {
|
||||
LibTerminus.enforcePoolIsController(poolID, msg.sender);
|
||||
LibTerminus.TerminusStorage storage ts = LibTerminus.terminusStorage();
|
||||
ts.poolNotTransferable[poolID] = !transferable;
|
||||
}
|
||||
|
||||
function setPoolBurnable(uint256 poolID, bool burnable) external {
|
||||
LibTerminus.enforcePoolIsController(poolID, msg.sender);
|
||||
LibTerminus.TerminusStorage storage ts = LibTerminus.terminusStorage();
|
||||
ts.poolBurnable[poolID] = burnable;
|
||||
}
|
||||
|
|
|
@ -700,6 +700,10 @@ class TestCreatePoolV1(TestPoolOperations):
|
|||
def test_pool_state_setters(self):
|
||||
self.diamond_terminus.create_pool_v1(10, False, False, {"from": accounts[1]})
|
||||
pool_id = self.diamond_terminus.total_pools()
|
||||
self.assertEqual(
|
||||
self.diamond_terminus.terminus_pool_controller(pool_id), accounts[1].address
|
||||
)
|
||||
|
||||
self.assertFalse(self.diamond_terminus.pool_is_transferable(pool_id))
|
||||
self.assertFalse(self.diamond_terminus.pool_is_burnable(pool_id))
|
||||
|
||||
|
@ -723,6 +727,29 @@ class TestCreatePoolV1(TestPoolOperations):
|
|||
self.assertFalse(self.diamond_terminus.pool_is_transferable(pool_id))
|
||||
self.assertFalse(self.diamond_terminus.pool_is_burnable(pool_id))
|
||||
|
||||
def test_pool_state_setters_do_not_allow_noncontroller_to_set_parameters(self):
|
||||
self.diamond_terminus.create_pool_v1(10, False, False, {"from": accounts[1]})
|
||||
pool_id = self.diamond_terminus.total_pools()
|
||||
self.assertEqual(
|
||||
self.diamond_terminus.terminus_pool_controller(pool_id), accounts[1].address
|
||||
)
|
||||
|
||||
self.assertFalse(self.diamond_terminus.pool_is_transferable(pool_id))
|
||||
self.assertFalse(self.diamond_terminus.pool_is_burnable(pool_id))
|
||||
|
||||
with self.assertRaises(VirtualMachineError):
|
||||
self.diamond_terminus.set_pool_transferable(
|
||||
pool_id, True, {"from": accounts[2]}
|
||||
)
|
||||
|
||||
with self.assertRaises(VirtualMachineError):
|
||||
self.diamond_terminus.set_pool_burnable(
|
||||
pool_id, True, {"from": accounts[2]}
|
||||
)
|
||||
|
||||
self.assertFalse(self.diamond_terminus.pool_is_transferable(pool_id))
|
||||
self.assertFalse(self.diamond_terminus.pool_is_burnable(pool_id))
|
||||
|
||||
def test_burnable_pool_burn_as_token_owner(self):
|
||||
self.diamond_terminus.create_pool_v1(10, True, True, {"from": accounts[1]})
|
||||
pool_id = self.diamond_terminus.total_pools()
|
||||
|
|
Ładowanie…
Reference in New Issue