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
Neeraj Kashyap 2022-07-04 12:03:48 -07:00
rodzic afa3d3f772
commit a37ec24699
2 zmienionych plików z 29 dodań i 0 usunięć

Wyświetl plik

@ -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;
}

Wyświetl plik

@ -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()