startPrank

Description

The startPrank cheatcode will set the msg.sender for all subsequent calls until stopPrank is called. This is in contrast to prank where prank only applies to the next message call.

Example

contract TestContract {
    address owner = address(123);
    ImportantContract ic;
    AnotherImportantContract aic;

    function deployImportantContract() public {
        require(msg.sender == owner);

        // Deploy important contract
        ic = new ImportantContract(msg.sender);
    }

    function deployAnotherImportantContract() public {
        require(msg.sender == owner);

        // Deploy important contract
        ic = new AnotherImportantContract(msg.sender);
    }

    function test() public {
        // Obtain our cheat code contract reference.
        IStdCheats cheats = CheatCodes(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D);

        // Prank and deploy important contracts
        cheats.startPrank(owner);
        deployImportantContract();
        deployAnotherImportantContract();
        cheats.stopPrank();

        assert(ic.owner() == owner);
        assert(aic.owner() == owner);
    }
    }

Function Signature

function startPrank(address) external;