Skip to main content

FARCASTER_TEST

Constant FARCASTER_TEST 

Source
const FARCASTER_TEST: &str = "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.21;\n\nimport {Test} from \"forge-std/Test.sol\";\nimport {Migration} from \"../src/abstract/Migration.sol\";\n\ncontract MigrationHarness is Migration {\n    constructor(uint24 gracePeriod, address migrator, address initialOwner)\n        Migration(gracePeriod, migrator, initialOwner)\n    {}\n}\n\ncontract FarcasterNativeSymbolicTest is Test {\n    function check_migrateOnlyMigrator(\n        uint24 gracePeriod,\n        address migrator,\n        address initialOwner,\n        address caller,\n        uint40 timestamp\n    ) public {\n        vm.assume(timestamp != 0);\n\n        MigrationHarness migration = new MigrationHarness(gracePeriod, migrator, initialOwner);\n\n        vm.warp(timestamp);\n        vm.prank(caller);\n        (bool success,) = address(migration).call(abi.encodeCall(Migration.migrate, ()));\n\n        assert(success == (caller == migrator));\n        if (success) {\n            assert(migration.isMigrated());\n            assert(migration.migratedAt() == timestamp);\n        }\n    }\n\n    function check_setMigratorOnlyOwner(\n        uint24 gracePeriod,\n        address migrator,\n        address initialOwner,\n        address caller,\n        address nextMigrator\n    ) public {\n        MigrationHarness migration = new MigrationHarness(gracePeriod, migrator, initialOwner);\n\n        vm.prank(caller);\n        (bool success,) =\n            address(migration).call(abi.encodeCall(Migration.setMigrator, (nextMigrator)));\n\n        assert(success == (caller == initialOwner));\n        if (success) {\n            assert(migration.migrator() == nextMigrator);\n        } else {\n            assert(migration.migrator() == migrator);\n        }\n    }\n}\n";