@@ -368,6 +368,60 @@ contract StdCheatsTest is Test {
368
368
}
369
369
}
370
370
371
+ contract StdCheatsMock is StdCheats {
372
+ // We deploy a mock version so we can properly test expected reverts.
373
+ function assumeNoBlacklisted_ (address token , address addr ) external {
374
+ return assumeNoBlacklisted (token, addr);
375
+ }
376
+ }
377
+
378
+ contract StdCheatsForkTest is Test {
379
+ address internal constant SHIB = 0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE ;
380
+ address internal constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 ;
381
+ address internal constant USDC_BLACKLISTED_USER = 0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD ;
382
+ address internal constant USDT = 0xdAC17F958D2ee523a2206206994597C13D831ec7 ;
383
+ address internal constant USDT_BLACKLISTED_USER = 0x8f8a8F4B54a2aAC7799d7bc81368aC27b852822A ;
384
+
385
+ // We deploy a mock version so we can properly test the revert.
386
+ StdCheatsMock private stdCheats = new StdCheatsMock ();
387
+
388
+ function setUp () public {
389
+ // All tests of the `assumeNoBlacklisted` method are fork tests using live contracts.
390
+ vm.createSelectFork ({urlOrAlias: "mainnet " , blockNumber: 16_428_900 });
391
+ }
392
+
393
+ function testCannotAssumeNoBlacklisted_EOA () external {
394
+ address eoa = vm.addr ({privateKey: 1 });
395
+ vm.expectRevert ("StdCheats assumeNoBlacklisted(address,address): Token address is not a contract. " );
396
+ assumeNoBlacklisted (eoa, address (0 ));
397
+ }
398
+
399
+ function testAssumeNoBlacklisted_TokenWithoutBlacklist (address addr ) external {
400
+ assumeNoBlacklisted (SHIB, addr);
401
+ assertTrue (true );
402
+ }
403
+
404
+ function testAssumeNoBlacklisted_USDC () external {
405
+ vm.expectRevert ();
406
+ stdCheats.assumeNoBlacklisted_ (USDC, USDC_BLACKLISTED_USER);
407
+ }
408
+
409
+ function testAssumeNoBlacklisted_USDC (address addr ) external {
410
+ assumeNoBlacklisted (USDC, addr);
411
+ assertFalse (USDCLike (USDC).isBlacklisted (addr));
412
+ }
413
+
414
+ function testAssumeNoBlacklisted_USDT () external {
415
+ vm.expectRevert ();
416
+ stdCheats.assumeNoBlacklisted_ (USDT, USDT_BLACKLISTED_USER);
417
+ }
418
+
419
+ function testAssumeNoBlacklisted_USDT (address addr ) external {
420
+ assumeNoBlacklisted (USDT, addr);
421
+ assertFalse (USDTLike (USDT).isBlackListed (addr));
422
+ }
423
+ }
424
+
371
425
contract Bar {
372
426
constructor () payable {
373
427
/// `DEAL` STDCHEAT
@@ -438,6 +492,14 @@ contract BarERC721 {
438
492
mapping (address => uint256 ) private _balances;
439
493
}
440
494
495
+ interface USDCLike {
496
+ function isBlacklisted (address ) external view returns (bool );
497
+ }
498
+
499
+ interface USDTLike {
500
+ function isBlackListed (address ) external view returns (bool );
501
+ }
502
+
441
503
contract RevertingContract {
442
504
constructor () {
443
505
revert ();
0 commit comments