@@ -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