Skip to content

Commit

Permalink
πŸŒ• Change non-whitelisted redemption string revert to error
Browse files Browse the repository at this point in the history
πŸŒ• Change non-whitelisted redemption string revert to error
  • Loading branch information
nezouse authored Apr 24, 2024
2 parents 0cbd329 + 78632af commit d1ad4c0
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 5 deletions.
1 change: 1 addition & 0 deletions contracts/Interfaces/IVesselManagerOperations.sol
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ interface IVesselManagerOperations is ITrinityBase {
error VesselManagerOperations__InvalidParam();
error VesselManagerOperations__NotTimelock();
error VesselManagerOperations__LiquidatorNotWhitelisted();
error VesselManagerOperations__RedemptorNotWhitelisted();

// Structs ----------------------------------------------------------------------------------------------------------

Expand Down
7 changes: 3 additions & 4 deletions contracts/VesselManagerOperations.sol
Original file line number Diff line number Diff line change
Expand Up @@ -877,10 +877,9 @@ contract VesselManagerOperations is IVesselManagerOperations, UUPSUpgradeable, R
uint256 _price
) internal view {
address redeemer = msg.sender;
require(
IAdminContract(adminContract).getRedeemerIsWhitelisted(redeemer),
"VesselManagerOperations: Redeemer not whitelisted"
);
if (!IAdminContract(adminContract).getRedeemerIsWhitelisted(redeemer)) {
revert VesselManagerOperations__RedemptorNotWhitelisted();
}

uint256 redemptionBlockTimestamp = IAdminContract(adminContract).getRedemptionBlockTimestamp(_asset);
if (redemptionBlockTimestamp > block.timestamp) {
Expand Down
1 change: 1 addition & 0 deletions test/trinity/CollSurplusPoolTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ contract("CollSurplusPool", async accounts => {
await th.fastForwardTime(timeValues.SECONDS_IN_ONE_WEEK * 2, web3.currentProvider)

// At ETH:USD = 100, this redemption should leave 1 ether of coll surplus
await adminContract.setWhitelistedRedeemer(A, true)
await th.redeemCollateralAndGetTxObject(A, contracts.core, B_netDebt, erc20.address)

const ETH_2 = await collSurplusPool.getAssetBalance(erc20.address)
Expand Down
26 changes: 26 additions & 0 deletions test/trinity/VesselManagerTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -4281,6 +4281,32 @@ contract("VesselManager", async accounts => {
th.assertIsApproximatelyEqual(dennis_Debt_After_Asset, D_totalDebt_Asset)
})

it("redeemCollateral(): reverts when not whitelisted", async () => {
await openVessel({
asset: erc20.address,
ICR: toBN(dec(200, 16)),
extraParams: { from: alice },
})
await openVessel({
asset: erc20.address,
ICR: toBN(dec(200, 16)),
extraParams: { from: bob },
})

// skip bootstrapping phase
await th.fastForwardTime(timeValues.SECONDS_IN_ONE_WEEK * 2, web3.currentProvider)

await adminContract.setWhitelistedRedeemer(alice, false)

try {
const tx = await th.redeemCollateralAndGetTxObject(alice, contracts.core, dec(10, 18), erc20.address)
assert.isFalse(tx.receipt.status)
} catch (err) {
assert.include(err.message, "revert")
assert.include(err.message, "VesselManagerOperations__RedemptorNotWhitelisted()")
}
})

it("redeemCollateral(): reverts when TCR < MCR", async () => {
await openVessel({
asset: erc20.address,
Expand Down
1 change: 0 additions & 1 deletion test/utils/testHelpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -1367,7 +1367,6 @@ class TestHelper {
approxPartialRedemptionHint
)

await contracts.adminContract.setWhitelistedRedeemer(redeemer, true)
const tx = await contracts.vesselManagerOperations.redeemCollateral(
asset,
TRIAmount,
Expand Down

0 comments on commit d1ad4c0

Please sign in to comment.