Skip to content
This repository was archived by the owner on Aug 21, 2023. It is now read-only.

Commit 8721eb8

Browse files
committed
isApprovedForPool(poolId) can mint tokens in that pool
1 parent c2f6779 commit 8721eb8

2 files changed

Lines changed: 34 additions & 2 deletions

File tree

contracts/terminus/TerminusFacet.sol

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,10 @@ contract TerminusFacet is ERC1155WithTerminusStorage {
250250
uint256 amount,
251251
bytes memory data
252252
) external {
253-
LibTerminus.enforcePoolIsController(poolID, msg.sender);
253+
require(
254+
isApprovedForPool(poolID, msg.sender),
255+
"TerminusFacet: mint -- caller is neither owner nor approved"
256+
);
254257
_mint(to, poolID, amount, data);
255258
}
256259

@@ -261,7 +264,10 @@ contract TerminusFacet is ERC1155WithTerminusStorage {
261264
bytes memory data
262265
) external {
263266
for (uint256 i = 0; i < poolIDs.length; i++) {
264-
LibTerminus.enforcePoolIsController(poolIDs[i], _msgSender());
267+
require(
268+
isApprovedForPool(poolIDs[i], msg.sender),
269+
"TerminusFacet: mintBatch -- caller is neither owner nor approved"
270+
);
265271
}
266272
_mintBatch(to, poolIDs, amounts, data);
267273
}

dao/test_terminus.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,32 @@ def test_pool_mint_batch_as_unauthorized_third_party(self):
350350
final_balance = self.diamond_terminus.balance_of(account.address, pool_id)
351351
self.assertEqual(final_balance, initial_balances[i])
352352

353+
def test_pool_mint_with_pool_approval(self):
354+
self.diamond_terminus.create_pool_v1(10, False, False, {"from": accounts[1]})
355+
pool_id = self.diamond_terminus.total_pools()
356+
357+
self.assertFalse(
358+
self.diamond_terminus.is_approved_for_pool(pool_id, accounts[2].address)
359+
)
360+
with self.assertRaises(Exception):
361+
self.diamond_terminus.mint(
362+
accounts[2].address, pool_id, 1, b"", {"from": accounts[2]}
363+
)
364+
365+
self.diamond_terminus.approve_for_pool(
366+
pool_id, accounts[2].address, {"from": accounts[1]}
367+
)
368+
supply_0 = self.diamond_terminus.terminus_pool_supply(pool_id)
369+
balance_0 = self.diamond_terminus.balance_of(accounts[2].address, pool_id)
370+
self.diamond_terminus.mint(
371+
accounts[2].address, pool_id, 1, b"", {"from": accounts[1]}
372+
)
373+
balance_1 = self.diamond_terminus.balance_of(accounts[2].address, pool_id)
374+
supply_1 = self.diamond_terminus.terminus_pool_supply(pool_id)
375+
376+
self.assertEqual(balance_1, balance_0 + 1)
377+
self.assertEqual(supply_0 + 1, supply_1)
378+
353379
def test_transfer(self):
354380
pool_id = self.diamond_terminus.total_pools()
355381
self.diamond_terminus.mint(accounts[2], pool_id, 1, b"", {"from": accounts[1]})

0 commit comments

Comments
 (0)