@layerzerolabs/protocol-stellar-v2 0.2.21 → 0.2.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +347 -271
- package/.turbo/turbo-lint.log +277 -208
- package/.turbo/turbo-test.log +1700 -1370
- package/Cargo.lock +22 -51
- package/Cargo.toml +6 -1
- package/contracts/common-macros/src/auth.rs +10 -9
- package/contracts/common-macros/src/contract_ttl.rs +1 -4
- package/contracts/common-macros/src/error.rs +1 -3
- package/contracts/common-macros/src/lib.rs +65 -61
- package/contracts/common-macros/src/storage.rs +212 -65
- package/contracts/common-macros/src/tests/auth.rs +75 -6
- package/contracts/common-macros/src/tests/contract_ttl.rs +383 -350
- package/contracts/common-macros/src/tests/error.rs +9 -21
- package/contracts/common-macros/src/tests/lz_contract.rs +80 -0
- package/contracts/common-macros/src/tests/mod.rs +2 -0
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_multisig_code.snap +20 -3
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_ownable_code.snap +28 -1
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contractimpl_code.snap +8 -43
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contracttrait_code.snap +6 -29
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__lz_contract__snapshot_generated_lz_contract_code.snap +31 -0
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_extendable__snapshot_generated_ttl_extendable_code.snap +8 -0
- package/contracts/common-macros/src/tests/storage/extract_fields.rs +87 -0
- package/contracts/common-macros/src/tests/storage/gen_accessor_methods.rs +223 -0
- package/contracts/common-macros/src/tests/storage/gen_args.rs +65 -0
- package/contracts/common-macros/src/tests/storage/gen_enum_variant.rs +78 -0
- package/contracts/common-macros/src/tests/storage/gen_key.rs +108 -0
- package/contracts/common-macros/src/tests/storage/gen_params.rs +105 -0
- package/contracts/common-macros/src/tests/{storage.rs → storage/generate_storage.rs} +54 -129
- package/contracts/common-macros/src/tests/storage/is_primitive_type.rs +48 -0
- package/contracts/common-macros/src/tests/storage/mod.rs +16 -0
- package/contracts/common-macros/src/tests/storage/parse_default.rs +164 -0
- package/contracts/common-macros/src/tests/storage/parse_name.rs +159 -0
- package/contracts/common-macros/src/tests/storage/parse_no_ttl_extension.rs +124 -0
- package/contracts/common-macros/src/tests/storage/parse_storage_type.rs +174 -0
- package/contracts/common-macros/src/tests/storage/snapshots/common_macros__tests__storage__generate_storage__snapshot_generated_storage_code.snap +412 -0
- package/contracts/common-macros/src/tests/storage/storage_kind.rs +39 -0
- package/contracts/common-macros/src/tests/storage/test_setup.rs +25 -0
- package/contracts/common-macros/src/tests/storage/validate_attrs.rs +138 -0
- package/contracts/common-macros/src/tests/storage/variant_config.rs +226 -0
- package/contracts/common-macros/src/tests/test_helpers.rs +4 -10
- package/contracts/common-macros/src/tests/ttl_configurable.rs +2 -2
- package/contracts/common-macros/src/tests/ttl_extendable.rs +32 -0
- package/contracts/common-macros/src/tests/upgradeable.rs +118 -2
- package/contracts/common-macros/src/ttl_configurable.rs +1 -4
- package/contracts/common-macros/src/upgradeable.rs +21 -3
- package/contracts/endpoint-v2/Cargo.toml +0 -4
- package/contracts/endpoint-v2/src/endpoint_v2.rs +37 -17
- package/contracts/endpoint-v2/src/errors.rs +26 -1
- package/contracts/endpoint-v2/src/interfaces/layerzero_endpoint_v2.rs +1 -1
- package/contracts/endpoint-v2/src/interfaces/message_lib_manager.rs +4 -4
- package/contracts/endpoint-v2/src/interfaces/messaging_composer.rs +2 -2
- package/contracts/endpoint-v2/src/lib.rs +0 -1
- package/contracts/endpoint-v2/src/message_lib_manager.rs +39 -8
- package/contracts/endpoint-v2/src/messaging_channel.rs +36 -4
- package/contracts/endpoint-v2/src/messaging_composer.rs +18 -4
- package/contracts/endpoint-v2/src/storage.rs +9 -1
- package/contracts/endpoint-v2/src/tests/endpoint_setup.rs +2 -2
- package/contracts/endpoint-v2/src/tests/endpoint_v2/pay_messaging_fees.rs +1 -1
- package/contracts/endpoint-v2/src/tests/endpoint_v2/require_oapp_auth.rs +2 -2
- package/contracts/endpoint-v2/src/tests/message_lib_manager/register_library.rs +3 -3
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_receive_lib_for_eid.rs +5 -5
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_registered.rs +2 -2
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_send_lib_for_eid.rs +5 -5
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_supported_eid.rs +3 -3
- package/contracts/endpoint-v2/src/tests/messaging_channel/nilify.rs +1 -1
- package/contracts/endpoint-v2/src/tests/messaging_composer/clear_compose.rs +4 -3
- package/contracts/endpoint-v2/src/tests/messaging_composer/lz_compose_alert.rs +7 -2
- package/contracts/endpoint-v2/src/tests/messaging_composer/mod.rs +4 -0
- package/contracts/endpoint-v2/src/tests/messaging_composer/send_compose.rs +7 -2
- package/contracts/layerzero-views/src/layerzero_view.rs +0 -1
- package/contracts/layerzero-views/src/tests/mod.rs +1 -0
- package/contracts/layerzero-views/src/tests/types_tests.rs +31 -0
- package/contracts/layerzero-views/src/types.rs +2 -3
- package/contracts/macro-integration-tests/tests/runtime/contract_ttl/constructor.rs +61 -0
- package/contracts/macro-integration-tests/tests/runtime/contract_ttl/contract_impl_ttl_extension.rs +97 -0
- package/contracts/macro-integration-tests/tests/runtime/contract_ttl/contract_trait_ttl_extension.rs +99 -0
- package/contracts/macro-integration-tests/tests/runtime/contract_ttl/mod.rs +3 -0
- package/contracts/macro-integration-tests/tests/runtime/lz_contract/mod.rs +5 -0
- package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_default.rs +86 -0
- package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_multisig.rs +47 -0
- package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_multisig_upgradeable.rs +77 -0
- package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_upgradeable.rs +114 -0
- package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_upgradeable_no_migration.rs +105 -0
- package/contracts/macro-integration-tests/tests/runtime/multisig/admin_entrypoints.rs +242 -0
- package/contracts/macro-integration-tests/tests/runtime/multisig/mod.rs +9 -0
- package/contracts/macro-integration-tests/tests/runtime/multisig/self_auth.rs +54 -0
- package/contracts/macro-integration-tests/tests/runtime/ownable/initialization.rs +13 -0
- package/contracts/macro-integration-tests/tests/runtime/ownable/mod.rs +1 -0
- package/contracts/macro-integration-tests/tests/runtime/ownable/ownership_transfer.rs +70 -1
- package/contracts/macro-integration-tests/tests/runtime/ownable/two_step_transfer.rs +219 -0
- package/contracts/macro-integration-tests/tests/runtime/storage/keyed_roundtrip.rs +41 -0
- package/contracts/macro-integration-tests/tests/runtime/storage/ttl_extension.rs +48 -16
- package/contracts/macro-integration-tests/tests/runtime/storage/unkeyed_roundtrip.rs +10 -0
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/configuration.rs +96 -3
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/freeze.rs +4 -0
- package/contracts/macro-integration-tests/tests/runtime/ttl_extendable/extend_instance_ttl.rs +64 -0
- package/contracts/macro-integration-tests/tests/runtime/ttl_extendable/mod.rs +16 -0
- package/contracts/macro-integration-tests/tests/runtime/upgradeable/migrate_guard_and_state.rs +305 -0
- package/contracts/macro-integration-tests/tests/runtime/upgradeable/mod.rs +3 -0
- package/contracts/macro-integration-tests/tests/runtime/upgradeable/no_migration.rs +59 -0
- package/contracts/macro-integration-tests/tests/runtime/upgradeable/upgrade_then_migrate.rs +88 -0
- package/contracts/macro-integration-tests/tests/runtime.rs +5 -0
- package/contracts/macro-integration-tests/tests/ui/contract_impl/fail/not_impl_item.rs +6 -0
- package/contracts/macro-integration-tests/tests/ui/contract_impl/fail/not_impl_item.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/contract_impl/pass/basic.rs +102 -0
- package/contracts/macro-integration-tests/tests/ui/contract_trait/fail/not_a_trait.rs +6 -0
- package/contracts/macro-integration-tests/tests/ui/contract_trait/fail/not_a_trait.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/contract_trait/pass/basic.rs +83 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/discriminant_too_large.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/discriminant_too_large.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/non_enum_input.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/non_enum_input.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/error/pass/basic.rs +22 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/invalid_option.rs +6 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/invalid_option.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/multisig_rejects_ownable_api.rs +20 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/multisig_rejects_ownable_api.stderr +20 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/not_a_struct.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/not_a_struct.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_invalid_inner_option.rs +10 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_invalid_inner_option.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_missing_internal.rs +20 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_missing_internal.stderr +86 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/basic.rs +45 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/multisig.rs +34 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/multisig_upgradeable.rs +30 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/upgradeable.rs +39 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/upgradeable_no_migration.rs +28 -0
- package/contracts/macro-integration-tests/tests/ui/multisig/fail/non_struct_input.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/multisig/fail/non_struct_input.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/multisig/fail/rejects_ownable_api.rs +20 -0
- package/contracts/macro-integration-tests/tests/ui/multisig/fail/rejects_ownable_api.stderr +12 -0
- package/contracts/macro-integration-tests/tests/ui/multisig/fail/rejects_ownable_trait.rs +20 -0
- package/contracts/macro-integration-tests/tests/ui/multisig/fail/rejects_ownable_trait.stderr +5 -0
- package/contracts/macro-integration-tests/tests/ui/multisig/pass/basic.rs +49 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/non_struct_input.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/non_struct_input.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_auth.rs +19 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_auth.stderr +12 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_env.rs +1 -1
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_env.stderr +0 -8
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/basic.rs +39 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/only_auth_env_param_variants.rs +7 -1
- package/contracts/macro-integration-tests/tests/ui/storage/fail/invalid_storage_type_param.stderr +1 -1
- package/contracts/macro-integration-tests/tests/ui/storage/fail/missing_storage_type_param.stderr +1 -1
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_default_values.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_default_values.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_name_attrs.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_name_attrs.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_no_ttl_extension.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_no_ttl_extension.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_type_params.stderr +1 -1
- package/contracts/macro-integration-tests/tests/ui/storage/fail/no_ttl_extension_rejects_args.rs +13 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/no_ttl_extension_rejects_args.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/api_surface.rs +102 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/basic.rs +43 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/multi_key.rs +38 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_configurable/fail/missing_auth_trait.rs +14 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_configurable/fail/missing_auth_trait.stderr +71 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_configurable/fail/non_struct_input.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_configurable/fail/non_struct_input.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/{minimal_contract.rs → basic.rs} +2 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/multisig_contract.rs +28 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/ownable_contract.rs +32 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_extendable/fail/non_struct_input.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_extendable/fail/non_struct_input.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_extendable/pass/basic.rs +23 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_extendable/pass/no_user_contractimpl.rs +21 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/attr_args.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/attr_args.stderr +29 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_auth_trait.rs +20 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_auth_trait.stderr +71 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_upgradeable_internal.rs +10 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_upgradeable_internal.stderr +79 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/non_struct_input.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/non_struct_input.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/basic.rs +43 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/multisig_contract.rs +35 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/no_migration.rs +30 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/no_user_contractimpl.rs +29 -0
- package/contracts/macro-integration-tests/tests/ui_contract_impl.rs +12 -0
- package/contracts/macro-integration-tests/tests/ui_contract_trait.rs +12 -0
- package/contracts/macro-integration-tests/tests/ui_lz_contract.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui_multisig.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui_ttl_extendable.rs +12 -0
- package/contracts/macro-integration-tests/tests/ui_upgradeable.rs +11 -0
- package/contracts/message-libs/blocked-message-lib/Cargo.toml +1 -1
- package/contracts/message-libs/blocked-message-lib/src/lib.rs +4 -1
- package/contracts/message-libs/blocked-message-lib/src/tests/blocked_message_lib_tests.rs +108 -0
- package/contracts/message-libs/blocked-message-lib/src/tests/mod.rs +4 -0
- package/contracts/message-libs/blocked-message-lib/src/tests/setup.rs +40 -0
- package/contracts/message-libs/simple-message-lib/src/lib.rs +1 -1
- package/contracts/message-libs/simple-message-lib/src/tests/mod.rs +2 -0
- package/contracts/message-libs/simple-message-lib/src/tests/setup.rs +124 -0
- package/contracts/message-libs/simple-message-lib/src/tests/simple_message_lib_tests.rs +309 -0
- package/contracts/message-libs/uln-302/src/errors.rs +21 -0
- package/contracts/message-libs/uln-302/src/interfaces/receive_uln.rs +1 -1
- package/contracts/message-libs/uln-302/src/receive_uln.rs +6 -4
- package/contracts/message-libs/uln-302/src/send_uln.rs +15 -6
- package/contracts/message-libs/uln-302/src/storage.rs +5 -5
- package/contracts/message-libs/uln-302/src/tests/uln302/get_config.rs +71 -0
- package/contracts/message-libs/uln-302/src/tests/uln302/mod.rs +1 -0
- package/contracts/message-libs/uln-302/src/uln302.rs +3 -0
- package/contracts/oapps/counter/Cargo.toml +2 -0
- package/contracts/oapps/counter/integration_tests/mod.rs +1 -0
- package/contracts/oapps/counter/integration_tests/setup_sml.rs +6 -4
- package/contracts/oapps/counter/integration_tests/setup_uln.rs +12 -5
- package/contracts/oapps/counter/integration_tests/test_with_blocked.rs +67 -0
- package/contracts/oapps/counter/src/tests/mod.rs +1 -0
- package/contracts/oapps/counter/src/tests/test_u256_ext.rs +48 -0
- package/contracts/oapps/oapp/src/lib.rs +0 -3
- package/contracts/oapps/oapp/src/tests/mod.rs +1 -0
- package/contracts/oapps/oft/integration-tests/setup.rs +2 -3
- package/contracts/oapps/oft/src/lib.rs +3 -0
- package/contracts/oapps/oft/src/tests/extensions/mod.rs +3 -0
- package/contracts/oapps/oft/src/tests/extensions/oft_fee.rs +240 -0
- package/contracts/oapps/oft/src/tests/extensions/pausable.rs +141 -0
- package/contracts/oapps/oft/src/tests/extensions/rate_limiter.rs +447 -0
- package/contracts/oapps/oft/src/tests/mod.rs +2 -0
- package/contracts/oapps/oft/src/tests/oft_types/lock_unlock.rs +180 -0
- package/contracts/oapps/oft/src/tests/oft_types/mod.rs +1 -0
- package/contracts/oapps/oft-core/integration-tests/setup.rs +2 -3
- package/contracts/oapps/oft-core/src/lib.rs +2 -2
- package/contracts/oapps/oft-core/src/tests/mod.rs +1 -1
- package/contracts/oapps/oft-core/src/tests/{test_oft_version.rs → test_oft_version_and_approval.rs} +9 -0
- package/contracts/oapps/oft-core/src/tests/test_utils.rs +0 -43
- package/contracts/upgrader/src/tests/test_upgrader.rs +18 -0
- package/contracts/utils/src/auth.rs +2 -2
- package/contracts/utils/src/buffer_reader.rs +61 -10
- package/contracts/utils/src/buffer_writer.rs +35 -20
- package/contracts/utils/src/bytes_ext.rs +1 -2
- package/contracts/utils/src/errors.rs +5 -3
- package/contracts/utils/src/multisig.rs +59 -36
- package/contracts/utils/src/option_ext.rs +3 -3
- package/contracts/utils/src/ownable.rs +12 -6
- package/contracts/utils/src/tests/auth.rs +179 -0
- package/contracts/utils/src/tests/buffer_reader.rs +203 -1
- package/contracts/utils/src/tests/buffer_writer.rs +176 -5
- package/contracts/utils/src/tests/mod.rs +2 -0
- package/contracts/utils/src/tests/multisig.rs +170 -141
- package/contracts/utils/src/tests/option_ext.rs +1 -1
- package/contracts/utils/src/tests/ownable.rs +156 -161
- package/contracts/utils/src/tests/test_helper.rs +21 -1
- package/contracts/utils/src/tests/testing_utils.rs +84 -2
- package/contracts/utils/src/tests/ttl_configurable.rs +66 -86
- package/contracts/utils/src/tests/ttl_extendable.rs +64 -0
- package/contracts/utils/src/tests/upgradeable.rs +115 -6
- package/contracts/utils/src/ttl_configurable.rs +22 -12
- package/contracts/utils/src/ttl_extendable.rs +1 -3
- package/contracts/utils/src/upgradeable.rs +21 -24
- package/contracts/workers/dvn/src/auth.rs +1 -1
- package/contracts/workers/dvn/src/interfaces/dvn.rs +2 -2
- package/contracts/workers/dvn/src/storage.rs +1 -1
- package/contracts/workers/dvn/src/tests/auth.rs +136 -3
- package/contracts/workers/dvn/src/tests/mod.rs +0 -1
- package/contracts/workers/dvn/src/tests/setup.rs +4 -10
- package/contracts/workers/executor-helper/src/tests/executor_helper.rs +279 -0
- package/contracts/workers/executor-helper/src/tests/setup.rs +106 -1
- package/contracts/workers/worker/src/worker.rs +1 -1
- package/docs/oft-guide.md +5 -5
- package/package.json +5 -7
- package/sdk/.turbo/turbo-test.log +662 -466
- package/sdk/LICENSE +23 -0
- package/sdk/dist/generated/bml.d.ts +101 -106
- package/sdk/dist/generated/bml.js +108 -26
- package/sdk/dist/generated/counter.d.ts +123 -484
- package/sdk/dist/generated/counter.js +103 -25
- package/sdk/dist/generated/dvn.d.ts +141 -699
- package/sdk/dist/generated/dvn.js +106 -28
- package/sdk/dist/generated/dvn_fee_lib.d.ts +31 -248
- package/sdk/dist/generated/dvn_fee_lib.js +27 -24
- package/sdk/dist/generated/endpoint.d.ts +158 -836
- package/sdk/dist/generated/endpoint.js +107 -29
- package/sdk/dist/generated/executor.d.ts +139 -671
- package/sdk/dist/generated/executor.js +106 -28
- package/sdk/dist/generated/executor_fee_lib.d.ts +109 -264
- package/sdk/dist/generated/executor_fee_lib.js +106 -28
- package/sdk/dist/generated/executor_helper.d.ts +95 -92
- package/sdk/dist/generated/executor_helper.js +103 -25
- package/sdk/dist/generated/layerzero_view.d.ts +178 -335
- package/sdk/dist/generated/layerzero_view.js +172 -33
- package/sdk/dist/generated/oft.d.ts +137 -680
- package/sdk/dist/generated/oft.js +103 -25
- package/sdk/dist/generated/price_feed.d.ts +45 -444
- package/sdk/dist/generated/price_feed.js +27 -24
- package/sdk/dist/generated/sml.d.ts +119 -428
- package/sdk/dist/generated/sml.js +103 -25
- package/sdk/dist/generated/treasury.d.ts +109 -288
- package/sdk/dist/generated/treasury.js +103 -25
- package/sdk/dist/generated/uln302.d.ts +190 -527
- package/sdk/dist/generated/uln302.js +170 -31
- package/sdk/dist/generated/upgrader.d.ts +14 -34
- package/sdk/dist/generated/upgrader.js +24 -21
- package/sdk/package.json +3 -4
- package/sdk/test/counter-sml.test.ts +218 -142
- package/sdk/test/counter-uln.test.ts +189 -145
- package/sdk/test/oft-sml.test.ts +173 -156
- package/sdk/test/suites/constants.ts +7 -1
- package/sdk/test/suites/globalSetup.ts +140 -74
- package/sdk/turbo.json +1 -1
- package/tools/ts-bindings-gen/Cargo.toml +4 -4
- package/tools/ts-bindings-gen/src/main.rs +4 -0
- package/turbo.json +3 -0
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__storage__snapshot_generated_storage_code.snap +0 -1072
- package/contracts/endpoint-v2/src/constants.rs +0 -52
- package/contracts/macro-integration-tests/tests/ui/error/fail/attr_not_empty.rs +0 -12
- package/contracts/macro-integration-tests/tests/ui/error/fail/attr_not_empty.stderr +0 -7
- package/contracts/macro-integration-tests/tests/ui/error/pass/attr_on_variant_allowed.rs +0 -20
- package/contracts/macro-integration-tests/tests/ui/error/pass/basic_auto_discriminants.rs +0 -15
- package/contracts/macro-integration-tests/tests/ui/error/pass/mixed_discriminants.rs +0 -16
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/minimal_contract.rs +0 -26
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +0 -21
- package/contracts/macro-integration-tests/tests/ui/storage/fail/storage_attr_rejects_args.rs +0 -12
- package/contracts/macro-integration-tests/tests/ui/storage/fail/storage_attr_rejects_args.stderr +0 -7
- package/contracts/macro-integration-tests/tests/ui/storage/pass/default_value_on_variant.rs +0 -14
- package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_instance_unit_basic.rs +0 -14
- package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_persistent_named_fields_keyed.rs +0 -16
- package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_temporary_unit_option.rs +0 -15
- package/contracts/macro-integration-tests/tests/ui/storage/pass/name_override.rs +0 -14
- package/contracts/macro-integration-tests/tests/ui/storage/pass/no_auto_ttl_extension.rs +0 -19
- package/contracts/macro-integration-tests/tests/ui/storage/pass/ttl_provider_basic.rs +0 -15
- package/contracts/message-libs/simple-message-lib/src/test.rs +0 -280
- package/contracts/oapps/oapp/src/macro_tests/mod.rs +0 -1
- package/contracts/workers/dvn/src/tests/multisig/mod.rs +0 -3
- package/contracts/workers/dvn/src/tests/multisig/set_signer.rs +0 -132
- package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +0 -109
- package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +0 -106
- /package/contracts/oapps/oapp/src/{macro_tests → tests}/test_macros.rs +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
use quote::quote;
|
|
2
2
|
|
|
3
|
-
use crate::tests::test_helpers::{assert_panics_contains,
|
|
3
|
+
use crate::tests::test_helpers::{assert_panics_contains, filter_item_inputs_excluding_labels};
|
|
4
4
|
|
|
5
5
|
// ============================================
|
|
6
6
|
// Error Cases: Invalid Inputs
|
|
@@ -8,25 +8,13 @@ use crate::tests::test_helpers::{assert_panics_contains, non_enum_item_inputs};
|
|
|
8
8
|
|
|
9
9
|
#[test]
|
|
10
10
|
fn test_contract_error_rejects_non_enum_inputs() {
|
|
11
|
-
for (case, input) in
|
|
11
|
+
for (case, input) in filter_item_inputs_excluding_labels(&["enum"]) {
|
|
12
12
|
assert_panics_contains(case, "failed to parse enum", || {
|
|
13
|
-
crate::error::generate_error(
|
|
13
|
+
crate::error::generate_error(input.clone());
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
#[test]
|
|
19
|
-
fn test_contract_error_rejects_attr_arguments() {
|
|
20
|
-
let input = quote! {
|
|
21
|
-
pub enum MyError {
|
|
22
|
-
A,
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
assert_panics_contains("attr not empty", "contract_error attribute is not supported", || {
|
|
26
|
-
crate::error::generate_error(quote! { some_attr }, input);
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
|
|
30
18
|
#[test]
|
|
31
19
|
fn test_contract_error_requires_unit_variants() {
|
|
32
20
|
let cases = vec![("tuple variant", quote! { A(u32) }), ("struct variant", quote! { A { x: u32 } })];
|
|
@@ -38,7 +26,7 @@ fn test_contract_error_requires_unit_variants() {
|
|
|
38
26
|
}
|
|
39
27
|
};
|
|
40
28
|
assert_panics_contains(case, "Error enum variants must be unit variants", || {
|
|
41
|
-
crate::error::generate_error(
|
|
29
|
+
crate::error::generate_error(input.clone());
|
|
42
30
|
});
|
|
43
31
|
}
|
|
44
32
|
}
|
|
@@ -63,7 +51,7 @@ fn test_contract_error_discriminant_must_be_integer_literal() {
|
|
|
63
51
|
}
|
|
64
52
|
};
|
|
65
53
|
assert_panics_contains(case, "Error enum discriminant must be an integer literal", || {
|
|
66
|
-
crate::error::generate_error(
|
|
54
|
+
crate::error::generate_error(input.clone());
|
|
67
55
|
});
|
|
68
56
|
}
|
|
69
57
|
}
|
|
@@ -77,7 +65,7 @@ fn test_contract_error_discriminant_must_fit_u32() {
|
|
|
77
65
|
};
|
|
78
66
|
|
|
79
67
|
assert_panics_contains("u32::MAX + 1", "Error enum discriminant must be a valid u32 integer", || {
|
|
80
|
-
crate::error::generate_error(
|
|
68
|
+
crate::error::generate_error(input);
|
|
81
69
|
});
|
|
82
70
|
}
|
|
83
71
|
|
|
@@ -121,7 +109,7 @@ fn test_contract_error_discriminants_ordering_rejections_table_driven() {
|
|
|
121
109
|
}
|
|
122
110
|
};
|
|
123
111
|
assert_panics_contains(case, "Error enum discriminant must be greater than the previous discriminant", || {
|
|
124
|
-
crate::error::generate_error(
|
|
112
|
+
crate::error::generate_error(input.clone());
|
|
125
113
|
});
|
|
126
114
|
}
|
|
127
115
|
}
|
|
@@ -135,7 +123,7 @@ fn test_contract_error_max_not_last_panics_overflow() {
|
|
|
135
123
|
}
|
|
136
124
|
};
|
|
137
125
|
assert_panics_contains("max not last overflows", "attempt to add with overflow", || {
|
|
138
|
-
crate::error::generate_error(
|
|
126
|
+
crate::error::generate_error(input);
|
|
139
127
|
});
|
|
140
128
|
}
|
|
141
129
|
|
|
@@ -161,7 +149,7 @@ fn snapshot_generated_contract_error_code() {
|
|
|
161
149
|
}
|
|
162
150
|
};
|
|
163
151
|
|
|
164
|
-
let result = crate::error::generate_error(
|
|
152
|
+
let result = crate::error::generate_error(input);
|
|
165
153
|
let formatted = prettyplease::unparse(&syn::parse2::<syn::File>(result).expect("failed to parse generated code"));
|
|
166
154
|
|
|
167
155
|
insta::assert_snapshot!(formatted);
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
use proc_macro2::TokenStream;
|
|
2
|
+
use quote::quote;
|
|
3
|
+
|
|
4
|
+
use crate::tests::test_helpers::{assert_panics_contains, filter_item_inputs_excluding_labels};
|
|
5
|
+
|
|
6
|
+
// ============================================
|
|
7
|
+
// Snapshot Tests: lz_contract Code Generation
|
|
8
|
+
// ============================================
|
|
9
|
+
|
|
10
|
+
#[test]
|
|
11
|
+
fn snapshot_generated_lz_contract_code() {
|
|
12
|
+
let input = quote! {
|
|
13
|
+
pub struct MyContract;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
let default_result = crate::lz_contract::generate_lz_contract(TokenStream::new(), input.clone());
|
|
17
|
+
let default_formatted =
|
|
18
|
+
prettyplease::unparse(&syn::parse2::<syn::File>(default_result).expect("failed to parse generated code"));
|
|
19
|
+
|
|
20
|
+
let multisig_upgradeable_result = crate::lz_contract::generate_lz_contract(quote! { multisig, upgradeable }, input);
|
|
21
|
+
let multisig_upgradeable_formatted = prettyplease::unparse(
|
|
22
|
+
&syn::parse2::<syn::File>(multisig_upgradeable_result).expect("failed to parse generated code"),
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
let upgradeable_no_migration_result =
|
|
26
|
+
crate::lz_contract::generate_lz_contract(quote! { upgradeable(no_migration) }, quote! { pub struct MyContract; });
|
|
27
|
+
let upgradeable_no_migration_formatted = prettyplease::unparse(
|
|
28
|
+
&syn::parse2::<syn::File>(upgradeable_no_migration_result).expect("failed to parse generated code"),
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
let combined = format!(
|
|
32
|
+
"// === Default (ownable) ===\n\n{}\n\n// === MultiSig + Upgradeable ===\n\n{}\n\n// === Upgradeable (no_migration) ===\n\n{}",
|
|
33
|
+
default_formatted, multisig_upgradeable_formatted, upgradeable_no_migration_formatted
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
insta::assert_snapshot!(combined);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// ============================================
|
|
40
|
+
// Error Cases: Invalid Config
|
|
41
|
+
// ============================================
|
|
42
|
+
|
|
43
|
+
#[test]
|
|
44
|
+
fn test_lz_contract_invalid_config_table_driven() {
|
|
45
|
+
let input = quote! { pub struct MyContract; };
|
|
46
|
+
|
|
47
|
+
let cases: Vec<(&str, TokenStream, &str)> = vec![
|
|
48
|
+
(
|
|
49
|
+
"unknown option",
|
|
50
|
+
quote! { not_a_real_option },
|
|
51
|
+
"expected one of `upgradeable`, `multisig`",
|
|
52
|
+
),
|
|
53
|
+
("invalid attr syntax", quote! { 123 }, "failed to parse lz_contract config"),
|
|
54
|
+
("upgradeable(bad_inner)", quote! { upgradeable(not_migration) }, "expected `no_migration`"),
|
|
55
|
+
(
|
|
56
|
+
"upgradeable(extra_tokens)",
|
|
57
|
+
quote! { upgradeable(no_migration, extra) },
|
|
58
|
+
"unexpected tokens in `upgradeable(...)`",
|
|
59
|
+
),
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
for (case, attr, expected_substring) in cases {
|
|
63
|
+
assert_panics_contains(case, expected_substring, || {
|
|
64
|
+
crate::lz_contract::generate_lz_contract(attr.clone(), input.clone());
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// ============================================
|
|
70
|
+
// Error Cases: Non-Struct Input
|
|
71
|
+
// ============================================
|
|
72
|
+
|
|
73
|
+
#[test]
|
|
74
|
+
fn test_lz_contract_rejects_non_struct_inputs() {
|
|
75
|
+
for (case, input) in filter_item_inputs_excluding_labels(&["struct"]) {
|
|
76
|
+
assert_panics_contains(case, "failed to parse struct", || {
|
|
77
|
+
crate::lz_contract::generate_lz_contract(TokenStream::new(), input.clone());
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
source: contracts/common-macros/src/tests/auth.rs
|
|
3
|
-
expression:
|
|
3
|
+
expression: combined
|
|
4
4
|
---
|
|
5
|
+
// === Unit struct ===
|
|
6
|
+
|
|
5
7
|
pub struct MyContract;
|
|
6
|
-
use utils::{auth::Auth as _, multisig::
|
|
8
|
+
use utils::{auth::Auth as _, multisig::MultiSig as _};
|
|
7
9
|
#[common_macros::contract_impl]
|
|
8
10
|
impl utils::auth::Auth for MyContract {
|
|
9
11
|
fn authorizer(env: &soroban_sdk::Env) -> soroban_sdk::Address {
|
|
@@ -11,4 +13,19 @@ impl utils::auth::Auth for MyContract {
|
|
|
11
13
|
}
|
|
12
14
|
}
|
|
13
15
|
#[common_macros::contract_impl(contracttrait)]
|
|
14
|
-
impl utils::multisig::
|
|
16
|
+
impl utils::multisig::MultiSig for MyContract {}
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
// === Tuple struct ===
|
|
20
|
+
|
|
21
|
+
#[derive(Copy, Clone)]
|
|
22
|
+
pub struct MyContract(pub u32);
|
|
23
|
+
use utils::{auth::Auth as _, multisig::MultiSig as _};
|
|
24
|
+
#[common_macros::contract_impl]
|
|
25
|
+
impl utils::auth::Auth for MyContract {
|
|
26
|
+
fn authorizer(env: &soroban_sdk::Env) -> soroban_sdk::Address {
|
|
27
|
+
env.current_contract_address()
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
#[common_macros::contract_impl(contracttrait)]
|
|
31
|
+
impl utils::multisig::MultiSig for MyContract {}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
source: contracts/common-macros/src/tests/auth.rs
|
|
3
|
-
expression:
|
|
3
|
+
expression: combined
|
|
4
4
|
---
|
|
5
|
+
// === Unit struct ===
|
|
6
|
+
|
|
5
7
|
pub struct MyContract;
|
|
6
8
|
use utils::{
|
|
7
9
|
auth::Auth as _, option_ext::OptionExt as _,
|
|
@@ -17,3 +19,28 @@ impl utils::auth::Auth for MyContract {
|
|
|
17
19
|
}
|
|
18
20
|
#[common_macros::contract_impl(contracttrait)]
|
|
19
21
|
impl utils::ownable::Ownable for MyContract {}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
// === Generics + fields ===
|
|
25
|
+
|
|
26
|
+
#[derive(Clone, Debug)]
|
|
27
|
+
pub struct MyContract<T>
|
|
28
|
+
where
|
|
29
|
+
T: Clone,
|
|
30
|
+
{
|
|
31
|
+
pub value: T,
|
|
32
|
+
}
|
|
33
|
+
use utils::{
|
|
34
|
+
auth::Auth as _, option_ext::OptionExt as _,
|
|
35
|
+
ownable::{Ownable as _, OwnableInitializer as _},
|
|
36
|
+
};
|
|
37
|
+
impl utils::ownable::OwnableInitializer for MyContract {}
|
|
38
|
+
#[common_macros::contract_impl]
|
|
39
|
+
impl utils::auth::Auth for MyContract {
|
|
40
|
+
fn authorizer(env: &soroban_sdk::Env) -> soroban_sdk::Address {
|
|
41
|
+
<Self as utils::ownable::Ownable>::owner(env)
|
|
42
|
+
.unwrap_or_panic(env, utils::errors::OwnableError::OwnerNotSet)
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
#[common_macros::contract_impl(contracttrait)]
|
|
46
|
+
impl utils::ownable::Ownable for MyContract {}
|
|
@@ -1,43 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
source: contracts/common-macros/src/tests/contract_ttl.rs
|
|
3
|
-
assertion_line: 109
|
|
4
3
|
expression: combined
|
|
5
4
|
---
|
|
6
5
|
// === Inherent Impl (no attr) ===
|
|
7
6
|
|
|
8
7
|
#[soroban_sdk::contractimpl]
|
|
9
8
|
impl MyContract {
|
|
9
|
+
const A_CONST: u32 = 1;
|
|
10
|
+
type Alias = u32;
|
|
10
11
|
/// Public method with Env - should have TTL extension
|
|
11
12
|
pub fn public_with_env(env: Env, value: u32) -> u32 {
|
|
12
|
-
|
|
13
|
-
&env,
|
|
14
|
-
) {
|
|
15
|
-
env.storage()
|
|
16
|
-
.instance()
|
|
17
|
-
.extend_ttl(instance_ttl.threshold, instance_ttl.extend_to);
|
|
18
|
-
}
|
|
13
|
+
utils::ttl_configurable::extend_instance_ttl(&env);
|
|
19
14
|
value * 2
|
|
20
15
|
}
|
|
21
16
|
/// Public method with qualified Env path - should have TTL extension
|
|
22
17
|
pub fn with_qualified_env(env: soroban_sdk::Env) -> u32 {
|
|
23
|
-
|
|
24
|
-
&env,
|
|
25
|
-
) {
|
|
26
|
-
env.storage()
|
|
27
|
-
.instance()
|
|
28
|
-
.extend_ttl(instance_ttl.threshold, instance_ttl.extend_to);
|
|
29
|
-
}
|
|
18
|
+
utils::ttl_configurable::extend_instance_ttl(&env);
|
|
30
19
|
42
|
|
31
20
|
}
|
|
32
21
|
/// Public method with Env not as first parameter - should have TTL extension
|
|
33
22
|
pub fn env_second(value: u32, env: &Env) -> u32 {
|
|
34
|
-
|
|
35
|
-
env,
|
|
36
|
-
) {
|
|
37
|
-
env.storage()
|
|
38
|
-
.instance()
|
|
39
|
-
.extend_ttl(instance_ttl.threshold, instance_ttl.extend_to);
|
|
40
|
-
}
|
|
23
|
+
utils::ttl_configurable::extend_instance_ttl(env);
|
|
41
24
|
value * 2
|
|
42
25
|
}
|
|
43
26
|
/// Public method without Env - should NOT have TTL extension
|
|
@@ -66,13 +49,7 @@ impl MyContract {
|
|
|
66
49
|
impl SomeTrait for MyContract {
|
|
67
50
|
/// Trait method with Env - should have TTL extension
|
|
68
51
|
fn trait_method_with_env(env: Env, value: u32) -> u32 {
|
|
69
|
-
|
|
70
|
-
&env,
|
|
71
|
-
) {
|
|
72
|
-
env.storage()
|
|
73
|
-
.instance()
|
|
74
|
-
.extend_ttl(instance_ttl.threshold, instance_ttl.extend_to);
|
|
75
|
-
}
|
|
52
|
+
utils::ttl_configurable::extend_instance_ttl(&env);
|
|
76
53
|
value * 2
|
|
77
54
|
}
|
|
78
55
|
/// Trait method without Env - should NOT have TTL extension
|
|
@@ -82,13 +59,7 @@ impl SomeTrait for MyContract {
|
|
|
82
59
|
/// Trait method with macro attribute - should have TTL extension
|
|
83
60
|
#[common_macros::only_auth]
|
|
84
61
|
fn trait_method_with_only_auth_attribute(env: Env, value: u32) -> u32 {
|
|
85
|
-
|
|
86
|
-
&env,
|
|
87
|
-
) {
|
|
88
|
-
env.storage()
|
|
89
|
-
.instance()
|
|
90
|
-
.extend_ttl(instance_ttl.threshold, instance_ttl.extend_to);
|
|
91
|
-
}
|
|
62
|
+
utils::ttl_configurable::extend_instance_ttl(&env);
|
|
92
63
|
value * 5
|
|
93
64
|
}
|
|
94
65
|
}
|
|
@@ -100,13 +71,7 @@ impl SomeTrait for MyContract {
|
|
|
100
71
|
impl AnotherTrait for MyContract {
|
|
101
72
|
/// Trait method with contracttrait attr - should have TTL extension
|
|
102
73
|
fn contracttrait_method(env: &Env, value: u32) -> u32 {
|
|
103
|
-
|
|
104
|
-
env,
|
|
105
|
-
) {
|
|
106
|
-
env.storage()
|
|
107
|
-
.instance()
|
|
108
|
-
.extend_ttl(instance_ttl.threshold, instance_ttl.extend_to);
|
|
109
|
-
}
|
|
74
|
+
utils::ttl_configurable::extend_instance_ttl(env);
|
|
110
75
|
value * 3
|
|
111
76
|
}
|
|
112
77
|
}
|
|
@@ -1,43 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
source: contracts/common-macros/src/tests/contract_ttl.rs
|
|
3
|
-
assertion_line: 75
|
|
4
3
|
expression: combined
|
|
5
4
|
---
|
|
6
5
|
// === Trait (no attr) ===
|
|
7
6
|
|
|
8
7
|
#[soroban_sdk::contracttrait]
|
|
9
8
|
pub trait MyTrait: Sized {
|
|
9
|
+
const A_CONST: u32;
|
|
10
|
+
type Alias;
|
|
10
11
|
/// Default method with Env - should have TTL extension
|
|
11
12
|
fn default_with_env(env: Env, value: u32) -> u32 {
|
|
12
|
-
|
|
13
|
-
&env,
|
|
14
|
-
) {
|
|
15
|
-
env.storage()
|
|
16
|
-
.instance()
|
|
17
|
-
.extend_ttl(instance_ttl.threshold, instance_ttl.extend_to);
|
|
18
|
-
}
|
|
13
|
+
utils::ttl_configurable::extend_instance_ttl(&env);
|
|
19
14
|
value * 2
|
|
20
15
|
}
|
|
21
16
|
/// Default method with qualified Env path - should have TTL extension
|
|
22
17
|
fn with_qualified_env(env: soroban_sdk::Env) -> u32 {
|
|
23
|
-
|
|
24
|
-
&env,
|
|
25
|
-
) {
|
|
26
|
-
env.storage()
|
|
27
|
-
.instance()
|
|
28
|
-
.extend_ttl(instance_ttl.threshold, instance_ttl.extend_to);
|
|
29
|
-
}
|
|
18
|
+
utils::ttl_configurable::extend_instance_ttl(&env);
|
|
30
19
|
42
|
|
31
20
|
}
|
|
32
21
|
/// Default method with Env not as first parameter - should have TTL extension
|
|
33
22
|
fn env_second(value: u32, env: &Env) -> u32 {
|
|
34
|
-
|
|
35
|
-
env,
|
|
36
|
-
) {
|
|
37
|
-
env.storage()
|
|
38
|
-
.instance()
|
|
39
|
-
.extend_ttl(instance_ttl.threshold, instance_ttl.extend_to);
|
|
40
|
-
}
|
|
23
|
+
utils::ttl_configurable::extend_instance_ttl(env);
|
|
41
24
|
value * 2
|
|
42
25
|
}
|
|
43
26
|
/// Default method without Env - should NOT have TTL extension
|
|
@@ -57,13 +40,7 @@ pub trait MyTrait: Sized {
|
|
|
57
40
|
pub trait AnotherTrait {
|
|
58
41
|
/// Default method with Env - should have TTL extension
|
|
59
42
|
fn method_with_env(env: &Env, value: u32) -> u32 {
|
|
60
|
-
|
|
61
|
-
env,
|
|
62
|
-
) {
|
|
63
|
-
env.storage()
|
|
64
|
-
.instance()
|
|
65
|
-
.extend_ttl(instance_ttl.threshold, instance_ttl.extend_to);
|
|
66
|
-
}
|
|
43
|
+
utils::ttl_configurable::extend_instance_ttl(env);
|
|
67
44
|
value * 3
|
|
68
45
|
}
|
|
69
46
|
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
source: contracts/common-macros/src/tests/lz_contract.rs
|
|
3
|
+
expression: combined
|
|
4
|
+
---
|
|
5
|
+
// === Default (ownable) ===
|
|
6
|
+
|
|
7
|
+
#[soroban_sdk::contract]
|
|
8
|
+
#[common_macros::ttl_configurable]
|
|
9
|
+
#[common_macros::ttl_extendable]
|
|
10
|
+
#[common_macros::ownable]
|
|
11
|
+
pub struct MyContract;
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
// === MultiSig + Upgradeable ===
|
|
15
|
+
|
|
16
|
+
#[soroban_sdk::contract]
|
|
17
|
+
#[common_macros::ttl_configurable]
|
|
18
|
+
#[common_macros::ttl_extendable]
|
|
19
|
+
#[common_macros::multisig]
|
|
20
|
+
#[common_macros::upgradeable]
|
|
21
|
+
pub struct MyContract;
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
// === Upgradeable (no_migration) ===
|
|
25
|
+
|
|
26
|
+
#[soroban_sdk::contract]
|
|
27
|
+
#[common_macros::ttl_configurable]
|
|
28
|
+
#[common_macros::ttl_extendable]
|
|
29
|
+
#[common_macros::ownable]
|
|
30
|
+
#[common_macros::upgradeable(no_migration)]
|
|
31
|
+
pub struct MyContract;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
source: contracts/common-macros/src/tests/ttl_extendable.rs
|
|
3
|
+
expression: formatted
|
|
4
|
+
---
|
|
5
|
+
pub struct MyContract;
|
|
6
|
+
use utils::ttl_extendable::TtlExtendable as _;
|
|
7
|
+
#[soroban_sdk::contractimpl(contracttrait)]
|
|
8
|
+
impl utils::ttl_extendable::TtlExtendable for MyContract {}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
//! Unit tests for the `extract_fields` function.
|
|
2
|
+
|
|
3
|
+
use crate::storage::test::extract_fields_for_test;
|
|
4
|
+
use crate::tests::test_helpers::assert_panics_contains;
|
|
5
|
+
use quote::{quote, ToTokens};
|
|
6
|
+
|
|
7
|
+
use super::test_setup::parse_variant;
|
|
8
|
+
|
|
9
|
+
#[test]
|
|
10
|
+
fn test_unit_variant_returns_empty() {
|
|
11
|
+
let variant = parse_variant(quote! {
|
|
12
|
+
enum Test {
|
|
13
|
+
#[persistent(u32)]
|
|
14
|
+
UnitVariant,
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
let fields = extract_fields_for_test(&variant);
|
|
19
|
+
assert!(fields.is_empty(), "unit variant should have no fields");
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
#[test]
|
|
23
|
+
fn test_named_variant_single_field() {
|
|
24
|
+
let variant = parse_variant(quote! {
|
|
25
|
+
enum Test {
|
|
26
|
+
#[persistent(u32)]
|
|
27
|
+
NamedVariant { key: Address },
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
let fields = extract_fields_for_test(&variant);
|
|
32
|
+
assert_eq!(fields.len(), 1, "should have exactly one field");
|
|
33
|
+
assert_eq!(fields[0].0.to_string(), "key");
|
|
34
|
+
assert_eq!(fields[0].1.to_token_stream().to_string(), "Address");
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
#[test]
|
|
38
|
+
fn test_named_variant_multiple_fields() {
|
|
39
|
+
let variant = parse_variant(quote! {
|
|
40
|
+
enum Test {
|
|
41
|
+
#[persistent(u32)]
|
|
42
|
+
NamedVariant { first: u32, second: String, third: Address },
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
let fields = extract_fields_for_test(&variant);
|
|
47
|
+
assert_eq!(fields.len(), 3, "should have exactly three fields");
|
|
48
|
+
assert_eq!(fields[0].0.to_string(), "first");
|
|
49
|
+
assert_eq!(fields[1].0.to_string(), "second");
|
|
50
|
+
assert_eq!(fields[2].0.to_string(), "third");
|
|
51
|
+
|
|
52
|
+
assert_eq!(fields[0].1.to_token_stream().to_string(), "u32");
|
|
53
|
+
assert_eq!(fields[1].1.to_token_stream().to_string(), "String");
|
|
54
|
+
assert_eq!(fields[2].1.to_token_stream().to_string(), "Address");
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
#[test]
|
|
58
|
+
fn test_tuple_variant_panics() {
|
|
59
|
+
let variant = parse_variant(quote! {
|
|
60
|
+
enum Test {
|
|
61
|
+
TupleVariant(u32, String),
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
assert_panics_contains("tuple variant", "only unit variants or named fields are supported", || {
|
|
66
|
+
extract_fields_for_test(&variant);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
#[test]
|
|
71
|
+
fn test_preserves_field_order() {
|
|
72
|
+
let variant = parse_variant(quote! {
|
|
73
|
+
enum Test {
|
|
74
|
+
#[persistent(u32)]
|
|
75
|
+
OrderedVariant { alpha: u32, beta: String, gamma: Address, delta: bool },
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
let fields = extract_fields_for_test(&variant);
|
|
80
|
+
let names: Vec<_> = fields.iter().map(|(name, _)| name.to_string()).collect();
|
|
81
|
+
assert_eq!(names, vec!["alpha", "beta", "gamma", "delta"]);
|
|
82
|
+
|
|
83
|
+
assert_eq!(fields[0].1.to_token_stream().to_string(), "u32");
|
|
84
|
+
assert_eq!(fields[1].1.to_token_stream().to_string(), "String");
|
|
85
|
+
assert_eq!(fields[2].1.to_token_stream().to_string(), "Address");
|
|
86
|
+
assert_eq!(fields[3].1.to_token_stream().to_string(), "bool");
|
|
87
|
+
}
|