Skip to content

Latest commit

 

History

History
49 lines (36 loc) · 1.01 KB

prank_here.md

File metadata and controls

49 lines (36 loc) · 1.01 KB

prankHere

Description

The prankHere cheatcode will set the msg.sender to the specified input address until the current call exits. Compared to prank, prankHere can persist for multiple calls.

Example

contract TestContract {
    address owner = address(123);
    uint256 x = 0;
    uint256 y = 0;

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

        // Update x
        x = 1;
    }

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

        // Update y
        y = 1;
    }

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

        // Prank, update variables, and verify
        cheats.prank(owner);
        updateX();
        updateY();
        assert((x == 1) && (y == 1));

        // Once this function returns, the `msg.sender` is reset
    }
}

Function Signature

function prankHere(address) external;