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;