Skip to content

Commit 9f58a0f

Browse files
committed
setSignature test isValidSignature
1 parent f76fb07 commit 9f58a0f

File tree

1 file changed

+32
-2
lines changed

1 file changed

+32
-2
lines changed

test/Catapultar/Catapultar.base.t.sol

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -443,11 +443,16 @@ abstract contract CatapultarTest is Test {
443443
}
444444

445445
bytes4 constant SUCCESS_IS_VALID_SIGNATURE = bytes4(keccak256("isValidSignature(bytes32,bytes)"));
446+
bytes4 constant IS_NOT_VALID_SIGNATURE = bytes4(uint32(0xFFFFFFFF));
446447

447448
function test_isValidSignature() external {
448449
(, uint256 privateKey) = init();
449450

450451
bytes32 msgHash = keccak256(bytes("RandomPayload"));
452+
// Check that a random signature is not valid.
453+
bytes4 result = executor.isValidSignature(msgHash, abi.encodePacked(keccak256(""), keccak256("")));
454+
assertEq(bytes32(result), bytes32(IS_NOT_VALID_SIGNATURE));
455+
451456
bytes32 toSign = keccak256(
452457
abi.encode(keccak256(bytes("Replay(address account,bytes32 payload)")), address(executor), msgHash)
453458
);
@@ -456,7 +461,7 @@ abstract contract CatapultarTest is Test {
456461

457462
bytes memory signature = abi.encodePacked(r, s, v);
458463

459-
bytes4 result = executor.isValidSignature(msgHash, signature);
464+
result = executor.isValidSignature(msgHash, signature);
460465

461466
assertEq(bytes32(result), bytes32(SUCCESS_IS_VALID_SIGNATURE));
462467

@@ -466,7 +471,32 @@ abstract contract CatapultarTest is Test {
466471

467472
result = MockCatapultar(payable(newExecutorProxied)).isValidSignature(msgHash, signature);
468473

469-
assertNotEq(bytes32(result), bytes32(SUCCESS_IS_VALID_SIGNATURE));
474+
assertEq(bytes32(result), bytes32(IS_NOT_VALID_SIGNATURE));
475+
}
476+
477+
function test_isValidSignature_setSignature() external {
478+
init();
479+
480+
bytes32 msgHash = keccak256(bytes("RandomPayload"));
481+
bytes4 result = executor.isValidSignature(msgHash, hex"");
482+
assertEq(bytes32(result), bytes32(IS_NOT_VALID_SIGNATURE));
483+
484+
bytes32 toSign = keccak256(
485+
abi.encode(keccak256(bytes("Replay(address account,bytes32 payload)")), address(executor), msgHash)
486+
);
487+
// Set the signature (as call).
488+
vm.prank(address(executor));
489+
executor.setSignature(toSign, Catapultar.DigestApproval.Call);
490+
491+
result = executor.isValidSignature(msgHash, hex"");
492+
assertEq(bytes32(result), bytes32(IS_NOT_VALID_SIGNATURE));
493+
494+
// Set the signature (as signature).
495+
vm.prank(address(executor));
496+
executor.setSignature(toSign, Catapultar.DigestApproval.Signature);
497+
498+
result = executor.isValidSignature(msgHash, hex"");
499+
assertEq(bytes32(result), bytes32(SUCCESS_IS_VALID_SIGNATURE));
470500
}
471501

472502
function testRevert_isValidSignature_no_rehash() external {

0 commit comments

Comments
 (0)