If using Foundry: forge (opens in a new tab) as your Solidity smart contract development platform, the SDK provides existing utilities and mocks to test your smart contract's Infernet-related functionality:

Setting up remappings.txt:

You can access the test utilities and mocks in the lib/infernet/contracts/test directory once the SDK has been installed. For easy access, you can modify your remappings.txt to map this directory to infernet/tests:

"infernet/tests=lib/infernet/contracts/test" >> remappings.txt

Available utilities and mocks

      • LigSign.sol — Useful library to create and validate EIP-712 subscriptions
      • LibStruct.sol — Useful library to read Subscription structs
      • MockManager.sol — Useful mock manager to register and activate nodes
      • MockNode.sol — Useful mock Infernet node with test fixtures
  • Basic test structure

    The following Solidity snippet sets up a Foundry test, deploys the EIP712Coordinator, and sets up two mock Infernet nodes, ALICE and BOB that are ready to submit subscription responses:

    import {Test} from "forge-std/Test.sol";
    import {MockNode} from "infernet/test/mocks/MockNode.sol";
    import {EIP712Coordinator} from "infernet/core/EIP712Coordinator.sol";
    contract MyTest is Test {
        /// @notice EIP712Coordinator
        EIP712Coordinator internal COORDINATOR;
        /// @notice Mock node (Alice)
        MockNode internal ALICE;
        /// @notice Mock node (Bob)
        MockNode internal BOB;
        function setUp() public {
            // Initialize coordinator
            COORDINATOR = new EIP712Coordinator();
            // Initalize mock nodes
            ALICE = new MockNode(COORDINATOR);
            BOB = new MockNode(COORDINATOR);
            // For each node
            MockNode[2] memory nodes = [ALICE, BOB];
            for (uint256 i = 0; i < 2; i++) {
                // Select node
                MockNode node = nodes[i];
                // Activate nodes