@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
|
@@ -17,7 +17,9 @@ use message_lib_common::{
|
|
|
17
17
|
interfaces::{LayerZeroDVNClient, LayerZeroExecutorClient, LayerZeroTreasuryClient},
|
|
18
18
|
packet_codec_v1, worker_options,
|
|
19
19
|
};
|
|
20
|
-
use soroban_sdk::{
|
|
20
|
+
use soroban_sdk::{
|
|
21
|
+
address_payload::AddressPayload, assert_with_error, bytes, vec, Address, Bytes, BytesN, Env, Map, Vec,
|
|
22
|
+
};
|
|
21
23
|
use utils::option_ext::OptionExt;
|
|
22
24
|
|
|
23
25
|
// ==============================================================================
|
|
@@ -101,11 +103,11 @@ impl ISendLib for Uln302 {
|
|
|
101
103
|
let mut zro_fee_recipients = vec![env];
|
|
102
104
|
if treasury_fee != 0 {
|
|
103
105
|
// The treasury contract address is used as the fixed fee recipient (rather than allowing
|
|
104
|
-
// the treasury admin to configure a custom receiver). This is because
|
|
105
|
-
//
|
|
106
|
-
//
|
|
107
|
-
//
|
|
108
|
-
//
|
|
106
|
+
// the treasury admin to configure a custom receiver). This is because a malicious treasury
|
|
107
|
+
// admin could set the recipient to an address that has not been created/initialized on Stellar.
|
|
108
|
+
// On Stellar, uninitialized accounts cannot receive any tokens, including native XLM. This
|
|
109
|
+
// would cause all fee payments to fail, effectively DOSing the OApp. Using the contract
|
|
110
|
+
// address ensures the recipient is always valid and can receive tokens.
|
|
109
111
|
let treasury_fee_recipient = FeeRecipient { to: treasury_addr, amount: treasury_fee };
|
|
110
112
|
if pay_in_zro {
|
|
111
113
|
zro_fee_recipients.push_back(treasury_fee_recipient);
|
|
@@ -338,6 +340,13 @@ fn prepare_packet_and_options(
|
|
|
338
340
|
packet: &OutboundPacket,
|
|
339
341
|
options: &Bytes,
|
|
340
342
|
) -> (Bytes, Map<u32, Bytes>, Bytes, BytesN<32>) {
|
|
343
|
+
// Only allow contract addresses (C-addresses) as senders
|
|
344
|
+
assert_with_error!(
|
|
345
|
+
env,
|
|
346
|
+
matches!(packet.sender.to_payload(), Some(AddressPayload::ContractIdHash(_))),
|
|
347
|
+
Uln302Error::InvalidSenderAddress
|
|
348
|
+
);
|
|
349
|
+
|
|
341
350
|
let (executor_options, dvn_options) = worker_options::split_worker_options(env, options);
|
|
342
351
|
let packet_header = packet_codec_v1::encode_packet_header(env, packet);
|
|
343
352
|
let payload_hash = packet_codec_v1::payload_hash(env, packet);
|
|
@@ -5,23 +5,23 @@ use soroban_sdk::{Address, BytesN};
|
|
|
5
5
|
/// Storage for the Uln302 message library.
|
|
6
6
|
#[storage]
|
|
7
7
|
pub enum UlnStorage {
|
|
8
|
-
/// The endpoint address
|
|
8
|
+
/// The endpoint address (set in constructor)
|
|
9
9
|
#[instance(Address)]
|
|
10
10
|
Endpoint,
|
|
11
11
|
|
|
12
|
-
/// The treasury address
|
|
12
|
+
/// The treasury address for fee collection (set in constructor)
|
|
13
13
|
#[instance(Address)]
|
|
14
14
|
Treasury,
|
|
15
15
|
|
|
16
|
-
/// The default executor configurations for a destination endpoint
|
|
16
|
+
/// The default executor configurations for a destination endpoint.
|
|
17
17
|
#[persistent(ExecutorConfig)]
|
|
18
18
|
DefaultExecutorConfigs { dst_eid: u32 },
|
|
19
19
|
|
|
20
|
-
/// The default send ULN configurations for a destination endpoint
|
|
20
|
+
/// The default send ULN configurations for a destination endpoint.
|
|
21
21
|
#[persistent(UlnConfig)]
|
|
22
22
|
DefaultSendUlnConfigs { dst_eid: u32 },
|
|
23
23
|
|
|
24
|
-
/// The default receive ULN configurations for a source endpoint
|
|
24
|
+
/// The default receive ULN configurations for a source endpoint.
|
|
25
25
|
#[persistent(UlnConfig)]
|
|
26
26
|
DefaultReceiveUlnConfigs { src_eid: u32 },
|
|
27
27
|
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
extern crate std;
|
|
2
|
+
|
|
3
|
+
use soroban_sdk::{testutils::Address as _, xdr::FromXdr, Address};
|
|
4
|
+
|
|
5
|
+
use crate::{
|
|
6
|
+
errors::Uln302Error,
|
|
7
|
+
interfaces::{ExecutorConfig, UlnConfig},
|
|
8
|
+
tests::setup::{setup, TestSetup},
|
|
9
|
+
uln302::{CONFIG_TYPE_EXECUTOR, CONFIG_TYPE_RECEIVE_ULN, CONFIG_TYPE_SEND_ULN},
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
#[test]
|
|
13
|
+
fn test_get_config_invalid_config_type_should_fail() {
|
|
14
|
+
let setup = setup();
|
|
15
|
+
let eid = 100u32;
|
|
16
|
+
|
|
17
|
+
// Must set defaults so the EID is considered supported.
|
|
18
|
+
setup.set_default_configs(eid, UlnConfig::generate(&setup.env, 10, 1, 0, 0));
|
|
19
|
+
|
|
20
|
+
let TestSetup { env, uln302, .. } = setup;
|
|
21
|
+
let oapp = Address::generate(&env);
|
|
22
|
+
|
|
23
|
+
let invalid_config_type = 999u32;
|
|
24
|
+
let res = uln302.try_get_config(&eid, &oapp, &invalid_config_type);
|
|
25
|
+
assert_eq!(res.err().unwrap().ok().unwrap(), Uln302Error::InvalidConfigType.into());
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
#[test]
|
|
29
|
+
fn test_get_config_executor_returns_effective_executor_config_xdr() {
|
|
30
|
+
let setup = setup();
|
|
31
|
+
let eid = 100u32;
|
|
32
|
+
setup.set_default_configs(eid, UlnConfig::generate(&setup.env, 10, 1, 0, 0));
|
|
33
|
+
|
|
34
|
+
let TestSetup { env, uln302, .. } = setup;
|
|
35
|
+
let oapp = Address::generate(&env);
|
|
36
|
+
|
|
37
|
+
let xdr = uln302.get_config(&eid, &oapp, &CONFIG_TYPE_EXECUTOR);
|
|
38
|
+
let decoded = ExecutorConfig::from_xdr(&env, &xdr).ok().unwrap();
|
|
39
|
+
|
|
40
|
+
assert_eq!(decoded, uln302.effective_executor_config(&oapp, &eid));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
#[test]
|
|
44
|
+
fn test_get_config_send_uln_returns_effective_send_uln_config_xdr() {
|
|
45
|
+
let setup = setup();
|
|
46
|
+
let eid = 100u32;
|
|
47
|
+
setup.set_default_configs(eid, UlnConfig::generate(&setup.env, 10, 1, 0, 0));
|
|
48
|
+
|
|
49
|
+
let TestSetup { env, uln302, .. } = setup;
|
|
50
|
+
let oapp = Address::generate(&env);
|
|
51
|
+
|
|
52
|
+
let xdr = uln302.get_config(&eid, &oapp, &CONFIG_TYPE_SEND_ULN);
|
|
53
|
+
let decoded = UlnConfig::from_xdr(&env, &xdr).ok().unwrap();
|
|
54
|
+
|
|
55
|
+
assert_eq!(decoded, uln302.effective_send_uln_config(&oapp, &eid));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
#[test]
|
|
59
|
+
fn test_get_config_receive_uln_returns_effective_receive_uln_config_xdr() {
|
|
60
|
+
let setup = setup();
|
|
61
|
+
let eid = 100u32;
|
|
62
|
+
setup.set_default_configs(eid, UlnConfig::generate(&setup.env, 10, 1, 0, 0));
|
|
63
|
+
|
|
64
|
+
let TestSetup { env, uln302, .. } = setup;
|
|
65
|
+
let oapp = Address::generate(&env);
|
|
66
|
+
|
|
67
|
+
let xdr = uln302.get_config(&eid, &oapp, &CONFIG_TYPE_RECEIVE_ULN);
|
|
68
|
+
let decoded = UlnConfig::from_xdr(&env, &xdr).ok().unwrap();
|
|
69
|
+
|
|
70
|
+
assert_eq!(decoded, uln302.effective_receive_uln_config(&oapp, &eid));
|
|
71
|
+
}
|
|
@@ -12,8 +12,11 @@ use soroban_sdk::{
|
|
|
12
12
|
};
|
|
13
13
|
use utils::option_ext::OptionExt;
|
|
14
14
|
|
|
15
|
+
/// Configuration type for executor settings (max message size, executor address)
|
|
15
16
|
pub const CONFIG_TYPE_EXECUTOR: u32 = 1;
|
|
17
|
+
/// Configuration type for send-side ULN settings (DVNs, confirmations)
|
|
16
18
|
pub const CONFIG_TYPE_SEND_ULN: u32 = 2;
|
|
19
|
+
/// Configuration type for receive-side ULN settings (DVNs, confirmations)
|
|
17
20
|
pub const CONFIG_TYPE_RECEIVE_ULN: u32 = 3;
|
|
18
21
|
|
|
19
22
|
#[lz_contract]
|
|
@@ -18,7 +18,9 @@ oapp-macros = { workspace = true }
|
|
|
18
18
|
|
|
19
19
|
[dev-dependencies]
|
|
20
20
|
soroban-sdk = { workspace = true, features = ["testutils"] }
|
|
21
|
+
utils = { workspace = true, features = ["testutils"] }
|
|
21
22
|
simple-message-lib = { workspace = true }
|
|
23
|
+
blocked-message-lib = { workspace = true }
|
|
22
24
|
message-lib-common = { workspace = true, features = ["testutils"] }
|
|
23
25
|
endpoint-v2 = { workspace = true, features = ["testutils"] }
|
|
24
26
|
executor = { workspace = true, features = ["testutils"] }
|
|
@@ -63,11 +63,16 @@ pub struct TestSetup<'a> {
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
fn setup_chain<'a>(env: &Env, owner: &Address) -> ChainSetup<'a> {
|
|
66
|
+
// Create native token for endpoint fees
|
|
67
|
+
let native_sac = env.register_stellar_asset_contract_v2(owner.clone());
|
|
68
|
+
let native_token = native_sac.address();
|
|
69
|
+
|
|
66
70
|
// Create ZRO token for endpoint fees
|
|
67
71
|
let zro_sac = env.register_stellar_asset_contract_v2(owner.clone());
|
|
68
72
|
let zro_token = zro_sac.address();
|
|
69
73
|
|
|
70
|
-
let
|
|
74
|
+
let eid: u32 = 30400; // Test EID
|
|
75
|
+
let endpoint_address = env.register(EndpointV2, (owner, eid, &native_token));
|
|
71
76
|
let fee_recipient = Address::generate(env);
|
|
72
77
|
let sml_address = env.register(SimpleMessageLib, (owner, &endpoint_address, &fee_recipient));
|
|
73
78
|
let counter_address = env.register(Counter, (owner, &endpoint_address, owner));
|
|
@@ -78,9 +83,6 @@ fn setup_chain<'a>(env: &Env, owner: &Address) -> ChainSetup<'a> {
|
|
|
78
83
|
|
|
79
84
|
set_zro(env, owner, &endpoint, &zro_token);
|
|
80
85
|
register_library(env, owner, &endpoint, &sml.address);
|
|
81
|
-
|
|
82
|
-
let eid = endpoint.eid();
|
|
83
|
-
let native_token = endpoint.native_token();
|
|
84
86
|
ChainSetup { owner: owner.clone(), endpoint, sml, counter, eid, native_token }
|
|
85
87
|
}
|
|
86
88
|
|
|
@@ -352,6 +352,7 @@ pub struct TestSetup<'a> {
|
|
|
352
352
|
|
|
353
353
|
/// Intermediate structure to hold chain infrastructure before DVN/Executor creation
|
|
354
354
|
struct ChainInfra {
|
|
355
|
+
eid: u32,
|
|
355
356
|
endpoint_address: Address,
|
|
356
357
|
uln302_address: Address,
|
|
357
358
|
#[allow(dead_code)]
|
|
@@ -359,6 +360,7 @@ struct ChainInfra {
|
|
|
359
360
|
price_feed_address: Address,
|
|
360
361
|
dvn_fee_lib_address: Address,
|
|
361
362
|
executor_fee_lib_address: Address,
|
|
363
|
+
native_token: Address,
|
|
362
364
|
zro_token: Address,
|
|
363
365
|
admin: Address,
|
|
364
366
|
deposit_address: Address,
|
|
@@ -368,12 +370,17 @@ struct ChainInfra {
|
|
|
368
370
|
|
|
369
371
|
/// Phase 1: Create basic chain infrastructure (Endpoint, ULN302, Treasury, etc.)
|
|
370
372
|
fn setup_chain_infrastructure(env: &Env, owner: &Address) -> ChainInfra {
|
|
373
|
+
// Create native token for endpoint fees
|
|
374
|
+
let native_sac = env.register_stellar_asset_contract_v2(owner.clone());
|
|
375
|
+
let native_token = native_sac.address();
|
|
376
|
+
|
|
371
377
|
// Create ZRO token
|
|
372
378
|
let zro_sac = env.register_stellar_asset_contract_v2(owner.clone());
|
|
373
379
|
let zro_token = zro_sac.address();
|
|
374
380
|
|
|
375
381
|
// Register endpoint
|
|
376
|
-
let
|
|
382
|
+
let eid: u32 = 30400; // Test EID
|
|
383
|
+
let endpoint_address = env.register(EndpointV2, (owner, eid, &native_token));
|
|
377
384
|
|
|
378
385
|
// Register Treasury (real)
|
|
379
386
|
let treasury_address = env.register(Treasury, (owner,));
|
|
@@ -399,12 +406,14 @@ fn setup_chain_infrastructure(env: &Env, owner: &Address) -> ChainInfra {
|
|
|
399
406
|
let dvn_credentials = DvnCredentials::generate(1);
|
|
400
407
|
|
|
401
408
|
ChainInfra {
|
|
409
|
+
eid,
|
|
402
410
|
endpoint_address,
|
|
403
411
|
uln302_address,
|
|
404
412
|
treasury_address: treasury_address.clone(),
|
|
405
413
|
price_feed_address,
|
|
406
414
|
dvn_fee_lib_address,
|
|
407
415
|
executor_fee_lib_address,
|
|
416
|
+
native_token,
|
|
408
417
|
zro_token,
|
|
409
418
|
admin,
|
|
410
419
|
deposit_address,
|
|
@@ -502,16 +511,14 @@ fn finalize_chain_setup<'a>(
|
|
|
502
511
|
|
|
503
512
|
// Create clients
|
|
504
513
|
let endpoint = EndpointV2Client::new(env, &infra.endpoint_address);
|
|
505
|
-
|
|
506
|
-
let native_token = endpoint.native_token();
|
|
507
|
-
|
|
508
514
|
let uln302 = Uln302Client::new(env, &infra.uln302_address);
|
|
509
515
|
let counter = CounterClient::new(env, &counter_address);
|
|
510
516
|
|
|
511
517
|
set_zro(env, owner, &endpoint, &infra.zro_token);
|
|
512
518
|
register_library(env, owner, &endpoint, &uln302.address);
|
|
513
519
|
|
|
514
|
-
let eid =
|
|
520
|
+
let eid = infra.eid;
|
|
521
|
+
let native_token = infra.native_token.clone();
|
|
515
522
|
|
|
516
523
|
// Set up price feed with initial prices for this chain's eid
|
|
517
524
|
setup_price_feed(env, owner, &infra.price_feed_address, eid);
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
use crate::{
|
|
2
|
+
codec::MsgType,
|
|
3
|
+
integration_tests::{setup_sml::*, utils::*},
|
|
4
|
+
};
|
|
5
|
+
use blocked_message_lib::{BlockedMessageLib, BlockedMessageLibError};
|
|
6
|
+
use endpoint_v2::MessagingFee;
|
|
7
|
+
use soroban_sdk::{
|
|
8
|
+
testutils::{Address as _, MockAuth, MockAuthInvoke},
|
|
9
|
+
Address, Bytes, IntoVal,
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
#[test]
|
|
13
|
+
fn test_blocked_message_lib_quote_fails() {
|
|
14
|
+
let TestSetup { env, chain_a, chain_b } = wired_setup();
|
|
15
|
+
|
|
16
|
+
// Deploy and configure BlockedMessageLib as Chain A's send library to Chain B.
|
|
17
|
+
let blocked_lib = env.register(BlockedMessageLib, ());
|
|
18
|
+
register_library(&env, &chain_a.owner, &chain_a.endpoint, &blocked_lib);
|
|
19
|
+
set_default_send_library(&env, &chain_a.owner, &chain_a.endpoint, chain_b.eid, &blocked_lib);
|
|
20
|
+
|
|
21
|
+
let options = Bytes::new(&env);
|
|
22
|
+
let msg_type = MsgType::Vanilla as u32;
|
|
23
|
+
|
|
24
|
+
let result = chain_a.counter.try_quote(&chain_b.eid, &msg_type, &options, &false);
|
|
25
|
+
assert_eq!(result.unwrap_err().unwrap(), BlockedMessageLibError::NotImplemented.into());
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
#[test]
|
|
29
|
+
fn test_blocked_message_lib_send_fails() {
|
|
30
|
+
let TestSetup { env, chain_a, chain_b } = wired_setup();
|
|
31
|
+
|
|
32
|
+
// Deploy and configure BlockedMessageLib as Chain A's send library to Chain B.
|
|
33
|
+
let blocked_lib = env.register(BlockedMessageLib, ());
|
|
34
|
+
register_library(&env, &chain_a.owner, &chain_a.endpoint, &blocked_lib);
|
|
35
|
+
set_default_send_library(&env, &chain_a.owner, &chain_a.endpoint, chain_b.eid, &blocked_lib);
|
|
36
|
+
|
|
37
|
+
let sender = Address::generate(&env);
|
|
38
|
+
let options = Bytes::new(&env);
|
|
39
|
+
let msg_type = MsgType::Vanilla as u32;
|
|
40
|
+
|
|
41
|
+
// We can't quote (blocked), so pass a zero-fee payment. The send should still fail inside the send library.
|
|
42
|
+
let fee = MessagingFee { native_fee: 0, zro_fee: 0 };
|
|
43
|
+
|
|
44
|
+
env.mock_auths(&[MockAuth {
|
|
45
|
+
address: &sender,
|
|
46
|
+
invoke: &MockAuthInvoke {
|
|
47
|
+
contract: &chain_a.counter.address,
|
|
48
|
+
fn_name: "increment",
|
|
49
|
+
args: (&sender, &chain_b.eid, &msg_type, &options, &fee).into_val(&env),
|
|
50
|
+
sub_invokes: &[MockAuthInvoke {
|
|
51
|
+
contract: &chain_a.native_token,
|
|
52
|
+
fn_name: "transfer",
|
|
53
|
+
args: (&sender, &chain_a.endpoint.address, &fee.native_fee).into_val(&env),
|
|
54
|
+
sub_invokes: &[],
|
|
55
|
+
}],
|
|
56
|
+
},
|
|
57
|
+
}]);
|
|
58
|
+
|
|
59
|
+
let result = chain_a.counter.try_increment(&sender, &chain_b.eid, &msg_type, &options, &fee);
|
|
60
|
+
assert_eq!(result.unwrap_err().unwrap(), BlockedMessageLibError::NotImplemented.into());
|
|
61
|
+
|
|
62
|
+
// Ensure no packet was emitted.
|
|
63
|
+
assert!(scan_packet_sent_event(&env, &chain_a.endpoint.address).is_none());
|
|
64
|
+
|
|
65
|
+
// State should be rolled back (outbound count unchanged).
|
|
66
|
+
assert_eq!(chain_a.counter.outbound_count(&chain_b.eid), 0);
|
|
67
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
use crate::u256_ext::U256Ext;
|
|
2
|
+
use soroban_sdk::{Env, U256};
|
|
3
|
+
|
|
4
|
+
#[test]
|
|
5
|
+
fn test_to_i128_with_small_value() {
|
|
6
|
+
let env = Env::default();
|
|
7
|
+
let val = U256::from_u128(&env, 100);
|
|
8
|
+
assert_eq!(val.to_i128(), Some(100i128));
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
#[test]
|
|
12
|
+
fn test_to_i128_with_zero() {
|
|
13
|
+
let env = Env::default();
|
|
14
|
+
let val = U256::from_u128(&env, 0);
|
|
15
|
+
assert_eq!(val.to_i128(), Some(0i128));
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
#[test]
|
|
19
|
+
fn test_to_i128_with_i128_max() {
|
|
20
|
+
let env = Env::default();
|
|
21
|
+
let val = U256::from_u128(&env, i128::MAX as u128);
|
|
22
|
+
assert_eq!(val.to_i128(), Some(i128::MAX));
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
#[test]
|
|
26
|
+
fn test_to_i128_with_value_larger_than_i128_max_returns_none() {
|
|
27
|
+
let env = Env::default();
|
|
28
|
+
// i128::MAX + 1 should not fit in i128
|
|
29
|
+
let val = U256::from_u128(&env, (i128::MAX as u128) + 1);
|
|
30
|
+
assert_eq!(val.to_i128(), None);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
#[test]
|
|
34
|
+
fn test_to_i128_with_u128_max_returns_none() {
|
|
35
|
+
let env = Env::default();
|
|
36
|
+
let val = U256::from_u128(&env, u128::MAX);
|
|
37
|
+
assert_eq!(val.to_i128(), None);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
#[test]
|
|
41
|
+
fn test_to_i128_with_high_bits_set_returns_none() {
|
|
42
|
+
let env = Env::default();
|
|
43
|
+
// Create a U256 with high 128 bits set (value > u128::MAX)
|
|
44
|
+
// from_parts takes (hi_hi, hi_lo, lo_hi, lo_lo) where each is u64
|
|
45
|
+
// Setting hi_hi or hi_lo to non-zero makes it > u128::MAX
|
|
46
|
+
let val = U256::from_parts(&env, 1, 0, 0, 0); // Sets bits 192-255
|
|
47
|
+
assert_eq!(val.to_i128(), None);
|
|
48
|
+
}
|
|
@@ -76,7 +76,8 @@ fn setup_chain<'a>(env: &Env) -> ChainSetup<'a> {
|
|
|
76
76
|
let oft_sac = env.register_stellar_asset_contract_v2(owner.clone());
|
|
77
77
|
let oft_token = oft_sac.address();
|
|
78
78
|
|
|
79
|
-
let
|
|
79
|
+
let eid: u32 = 30400; // Test EID
|
|
80
|
+
let endpoint_address = env.register(EndpointV2, (&owner, eid, &native_token));
|
|
80
81
|
let fee_recipient = Address::generate(env);
|
|
81
82
|
let sml_address = env.register(SimpleMessageLib, (&owner, &endpoint_address, &fee_recipient));
|
|
82
83
|
let delegate: Option<Address> = Some(owner.clone());
|
|
@@ -101,8 +102,6 @@ fn setup_chain<'a>(env: &Env) -> ChainSetup<'a> {
|
|
|
101
102
|
endpoint.set_zro(&zro_token);
|
|
102
103
|
|
|
103
104
|
register_library(env, &owner, &endpoint, &sml.address);
|
|
104
|
-
|
|
105
|
-
let eid = endpoint.eid();
|
|
106
105
|
ChainSetup { eid, owner, native_token, zro_token, oft_token, endpoint, sml, oft, fee_collector }
|
|
107
106
|
}
|
|
108
107
|
|