Skip to content

Commit d75c578

Browse files
committed
more revert tests for mintWithSignature
1 parent d610541 commit d75c578

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

src/test/drop/SignatureDrop.t.sol

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,100 @@ contract SignatureDropTest is BaseTest {
488488
sigdrop.mintWithSignature(mintrequest, signature);
489489
}
490490

491+
/**
492+
* note: Testing revert condition; not enough minted tokens.
493+
*/
494+
function test_revert_mintWithSignature_notEnoughMintedTokens() public {
495+
vm.prank(deployerSigner);
496+
sigdrop.lazyMint(100, "ipfs://", "");
497+
uint256 id = 0;
498+
499+
ISignatureMintERC721.MintRequest memory mintrequest;
500+
mintrequest.to = address(0);
501+
mintrequest.royaltyRecipient = address(2);
502+
mintrequest.royaltyBps = 0;
503+
mintrequest.primarySaleRecipient = address(deployer);
504+
mintrequest.uri = "ipfs://";
505+
mintrequest.quantity = 101;
506+
mintrequest.pricePerToken = 0;
507+
mintrequest.currency = address(3);
508+
mintrequest.validityStartTimestamp = 1000;
509+
mintrequest.validityEndTimestamp = 2000;
510+
mintrequest.uid = bytes32(id);
511+
512+
bytes memory encodedRequest = abi.encode(
513+
typehashMintRequest,
514+
mintrequest.to,
515+
mintrequest.royaltyRecipient,
516+
mintrequest.royaltyBps,
517+
mintrequest.primarySaleRecipient,
518+
keccak256(bytes(mintrequest.uri)),
519+
mintrequest.quantity,
520+
mintrequest.pricePerToken,
521+
mintrequest.currency,
522+
mintrequest.validityStartTimestamp,
523+
mintrequest.validityEndTimestamp,
524+
mintrequest.uid
525+
);
526+
bytes32 structHash = keccak256(encodedRequest);
527+
bytes32 typedDataHash = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
528+
529+
(uint8 v, bytes32 r, bytes32 s) = vm.sign(privateKey, typedDataHash);
530+
bytes memory signature = abi.encodePacked(r, s, v);
531+
vm.warp(1000);
532+
vm.expectRevert("not enough minted tokens.");
533+
sigdrop.mintWithSignature(mintrequest, signature);
534+
}
535+
536+
/**
537+
* note: Testing revert condition; sent value is not equal to price.
538+
*/
539+
function test_revert_mintWithSignature_notSentAmountRequired() public {
540+
vm.prank(deployerSigner);
541+
sigdrop.lazyMint(100, "ipfs://", "");
542+
uint256 id = 0;
543+
ISignatureMintERC721.MintRequest memory mintrequest;
544+
545+
mintrequest.to = address(0);
546+
mintrequest.royaltyRecipient = address(2);
547+
mintrequest.royaltyBps = 0;
548+
mintrequest.primarySaleRecipient = address(deployer);
549+
mintrequest.uri = "ipfs://";
550+
mintrequest.quantity = 1;
551+
mintrequest.pricePerToken = 1;
552+
mintrequest.currency = address(3);
553+
mintrequest.validityStartTimestamp = 1000;
554+
mintrequest.validityEndTimestamp = 2000;
555+
mintrequest.uid = bytes32(id);
556+
{
557+
mintrequest.currency = address(NATIVE_TOKEN);
558+
bytes memory encodedRequest = abi.encode(
559+
typehashMintRequest,
560+
mintrequest.to,
561+
mintrequest.royaltyRecipient,
562+
mintrequest.royaltyBps,
563+
mintrequest.primarySaleRecipient,
564+
keccak256(bytes(mintrequest.uri)),
565+
mintrequest.quantity,
566+
mintrequest.pricePerToken,
567+
mintrequest.currency,
568+
mintrequest.validityStartTimestamp,
569+
mintrequest.validityEndTimestamp,
570+
mintrequest.uid
571+
);
572+
bytes32 structHash = keccak256(encodedRequest);
573+
bytes32 typedDataHash = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
574+
575+
(uint8 v, bytes32 r, bytes32 s) = vm.sign(privateKey, typedDataHash);
576+
bytes memory signature = abi.encodePacked(r, s, v);
577+
vm.startPrank(address(deployerSigner));
578+
vm.warp(mintrequest.validityStartTimestamp);
579+
vm.expectRevert("must send total price.");
580+
sigdrop.mintWithSignature{ value: 2 }(mintrequest, signature);
581+
vm.stopPrank();
582+
}
583+
}
584+
491585
/**
492586
* note: Testing token balances; checking balance and owner of tokens after minting with signature.
493587
*/

0 commit comments

Comments
 (0)