pragma solidity ^0.5.0; import "../helpers/KollateralInvokable.sol"; import "../helpers/KollateralAuth.sol"; contract TestInvokable is KollateralInvokable, KollateralAuth { constructor(address invokerAddress) public KollateralAuth(invokerAddress) { } event HelperDump( address currentKTokenAddress, address currentTokenAddress, uint256 currentTokenAmount, uint256 currentExpectedBalance, uint256 currentKTokenTotalReserve, uint256 currentOutstandingTokenAmount, bool isKTokenKEther ); function () external payable { } function run() external payable onlyInvoker { emit HelperDump( currentKTokenAddress(), currentTokenAddress(), currentTokenAmount(), currentExpectedBalance(), currentKTokenTotalReserve(), currentOutstandingTokenAmount(), isKTokenKEther()); repay(); } /* Custom methods for unit tests, designed to test for failure cases */ function runRepayAmount(uint256 amount) external payable onlyInvoker { repayAmount(amount); } function runInvoke(address invokeAddress, bytes calldata invokeData) external payable onlyInvoker { (bool success, bytes memory returndata) = invokeAddress.call.value(msg.value)(invokeData); require(success, string(returndata)); repay(); } }