Skip to content

Commit ae9ecee

Browse files
committed
feat: update executeProposal
1 parent c14521b commit ae9ecee

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

src/ProxyAdminMultiSig.sol

+4
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,10 @@ contract ProxyAdminMultiSig is IErrors {
112112

113113
/// @dev executes a proposal
114114
function executeProposal(uint256 proposalId) external onlyOwner {
115+
if (!_isPendingProposal(proposalId)) {
116+
revert NotPendingProposal();
117+
}
118+
115119
Proposal storage p = _proposals[proposalId];
116120
if (p.approvalCount < _threshold) {
117121
revert NotEnoughApproval();

test/ProxyAdminMultiSig.t.sol

+13-1
Original file line numberDiff line numberDiff line change
@@ -514,13 +514,25 @@ contract MultiSigTest is IErrors, Test, Utils {
514514
vm.expectRevert(NotOwner.selector);
515515
multiSig.executeProposal(proposalId);
516516

517-
// case 2: not enough approval
517+
// case 2: proposal not exist
518+
vm.expectRevert(NotPendingProposal.selector);
519+
vm.prank(alice);
520+
multiSig.executeProposal(200);
521+
522+
// case 3: not enough approval
518523
vm.prank(alice);
519524
multiSig.approveProposal(proposalId);
520525

521526
vm.expectRevert(NotEnoughApproval.selector);
522527
vm.prank(bob);
523528
multiSig.executeProposal(proposalId);
529+
530+
// case 4: can't execute deleted proposal
531+
vm.prank(bob);
532+
multiSig.deleteProposal(proposalId);
533+
vm.expectRevert(NotPendingProposal.selector);
534+
vm.prank(charlie);
535+
multiSig.executeProposal(proposalId);
524536
}
525537

526538
function testGetAllProposals() public {

0 commit comments

Comments
 (0)