@layerzerolabs/protocol-stellar-v2 0.2.13 → 0.2.15
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 +384 -278
- package/.turbo/turbo-lint.log +110 -78
- package/.turbo/turbo-test.log +1248 -1014
- package/Cargo.lock +130 -3
- package/Cargo.toml +2 -1
- package/contracts/common-macros/src/contract_impl.rs +6 -1
- package/contracts/common-macros/src/lib.rs +47 -8
- package/contracts/common-macros/src/ownable.rs +7 -25
- package/contracts/common-macros/src/storage.rs +1 -1
- package/contracts/common-macros/src/tests/contract_impl.rs +5 -0
- package/contracts/common-macros/src/tests/mod.rs +1 -0
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_impl__snapshot_generated_contract_impl_code.snap +23 -7
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ownable__snapshot_generated_ownable_code.snap +5 -25
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__storage__snapshot_generated_storage_code.snap +48 -48
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +5 -25
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__upgradeable__snapshot_generated_upgradeable_code.snap +21 -0
- package/contracts/common-macros/src/tests/upgradeable.rs +31 -0
- package/contracts/common-macros/src/ttl_configurable.rs +14 -44
- package/contracts/common-macros/src/upgradeable.rs +76 -0
- package/contracts/endpoint-v2/src/endpoint_v2.rs +25 -1
- package/contracts/endpoint-v2/src/tests/endpoint_setup.rs +175 -8
- package/contracts/endpoint-v2/src/tests/endpoint_v2/build_outbound_packet.rs +76 -0
- package/contracts/endpoint-v2/src/tests/endpoint_v2/clear.rs +342 -159
- package/contracts/endpoint-v2/src/tests/endpoint_v2/delegate.rs +3 -15
- package/contracts/endpoint-v2/src/tests/endpoint_v2/initializable.rs +20 -31
- package/contracts/endpoint-v2/src/tests/endpoint_v2/lz_receive_alert.rs +126 -164
- package/contracts/endpoint-v2/src/tests/endpoint_v2/mod.rs +1 -0
- package/contracts/endpoint-v2/src/tests/endpoint_v2/native_token.rs +0 -1
- package/contracts/endpoint-v2/src/tests/endpoint_v2/owner.rs +0 -1
- package/contracts/endpoint-v2/src/tests/endpoint_v2/pay_messaging_fees.rs +311 -304
- package/contracts/endpoint-v2/src/tests/endpoint_v2/quote.rs +423 -96
- package/contracts/endpoint-v2/src/tests/endpoint_v2/recover_token.rs +1 -1
- package/contracts/endpoint-v2/src/tests/endpoint_v2/require_oapp_auth.rs +47 -20
- package/contracts/endpoint-v2/src/tests/endpoint_v2/send.rs +373 -403
- package/contracts/endpoint-v2/src/tests/endpoint_v2/set_delegate.rs +96 -22
- package/contracts/endpoint-v2/src/tests/endpoint_v2/set_zro.rs +61 -9
- package/contracts/endpoint-v2/src/tests/endpoint_v2/transfer_ownership.rs +4 -4
- package/contracts/endpoint-v2/src/tests/endpoint_v2/ttl_config.rs +8 -11
- package/contracts/endpoint-v2/src/tests/endpoint_v2/verifiable.rs +81 -30
- package/contracts/endpoint-v2/src/tests/endpoint_v2/verify.rs +209 -76
- package/contracts/endpoint-v2/src/tests/endpoint_v2/zro.rs +0 -1
- package/contracts/endpoint-v2/src/tests/message_lib_manager/default_receive_library.rs +24 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/default_receive_library_timeout.rs +40 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/default_send_library.rs +24 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/get_config.rs +108 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/get_library_index.rs +52 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/get_receive_library.rs +92 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/get_registered_libraries.rs +74 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/get_send_library.rs +83 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/is_registered_library.rs +32 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/is_supported_eid.rs +28 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/is_valid_receive_library.rs +261 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/mod.rs +16 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/receive_library_timeout.rs +62 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/register_library.rs +65 -43
- package/contracts/endpoint-v2/src/tests/message_lib_manager/registered_libraries_count.rs +42 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_receive_lib_for_eid.rs +61 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_registered.rs +3 -5
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_send_lib_for_eid.rs +59 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_supported_eid.rs +15 -1
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_config.rs +155 -51
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_lib_timeout.rs +114 -92
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_library.rs +235 -132
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_send_library.rs +93 -87
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library.rs +346 -245
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library_timeout.rs +406 -60
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_send_library.rs +252 -78
- package/contracts/endpoint-v2/src/tests/message_lib_manager/timeout.rs +102 -0
- package/contracts/endpoint-v2/src/tests/messaging_channel/burn.rs +212 -273
- package/contracts/endpoint-v2/src/tests/messaging_channel/clear_payload.rs +203 -0
- package/contracts/endpoint-v2/src/tests/messaging_channel/inbound.rs +94 -0
- package/contracts/endpoint-v2/src/tests/messaging_channel/inbound_nonce.rs +78 -248
- package/contracts/endpoint-v2/src/tests/messaging_channel/inbound_payload_hash.rs +7 -282
- package/contracts/endpoint-v2/src/tests/messaging_channel/lazy_inbound_nonce.rs +6 -274
- package/contracts/endpoint-v2/src/tests/messaging_channel/mod.rs +3 -2
- package/contracts/endpoint-v2/src/tests/messaging_channel/next_guid.rs +86 -178
- package/contracts/endpoint-v2/src/tests/messaging_channel/nilify.rs +328 -212
- package/contracts/endpoint-v2/src/tests/messaging_channel/outbound.rs +68 -0
- package/contracts/endpoint-v2/src/tests/messaging_channel/outbound_nonce.rs +6 -209
- package/contracts/endpoint-v2/src/tests/messaging_channel/skip.rs +207 -159
- package/contracts/endpoint-v2/src/tests/messaging_composer/clear_compose.rs +142 -153
- package/contracts/endpoint-v2/src/tests/messaging_composer/compose_queue.rs +6 -179
- package/contracts/endpoint-v2/src/tests/messaging_composer/lz_compose_alert.rs +163 -221
- package/contracts/endpoint-v2/src/tests/messaging_composer/send_compose.rs +90 -121
- package/contracts/endpoint-v2/src/tests/mock.rs +18 -4
- package/contracts/endpoint-v2/src/tests/util/build_payload.rs +4 -70
- package/contracts/endpoint-v2/src/tests/util/compute_guid.rs +2 -1
- package/contracts/endpoint-v2/src/tests/util/keccak256.rs +17 -106
- package/contracts/layerzero-views/Cargo.toml +35 -0
- package/contracts/layerzero-views/src/errors.rs +10 -0
- package/contracts/layerzero-views/src/layerzero_view.rs +229 -0
- package/contracts/layerzero-views/src/lib.rs +38 -0
- package/contracts/layerzero-views/src/storage.rs +18 -0
- package/contracts/layerzero-views/src/tests/layerzero_view_tests.rs +423 -0
- package/contracts/layerzero-views/src/tests/mod.rs +4 -0
- package/contracts/layerzero-views/src/tests/setup.rs +377 -0
- package/contracts/layerzero-views/src/types.rs +50 -0
- package/contracts/macro-integration-tests/Cargo.toml +30 -0
- package/contracts/macro-integration-tests/src/lib.rs +1 -0
- package/contracts/macro-integration-tests/tests/runtime/ownable/initialization.rs +62 -0
- package/contracts/macro-integration-tests/tests/runtime/ownable/mod.rs +22 -0
- package/contracts/macro-integration-tests/tests/runtime/ownable/only_owner_guard.rs +97 -0
- package/contracts/macro-integration-tests/tests/runtime/ownable/ownership_transfer.rs +101 -0
- package/contracts/macro-integration-tests/tests/runtime/storage/keyed_roundtrip.rs +225 -0
- package/contracts/macro-integration-tests/tests/runtime/storage/mod.rs +4 -0
- package/contracts/macro-integration-tests/tests/runtime/storage/name_override_runtime.rs +52 -0
- package/contracts/macro-integration-tests/tests/runtime/storage/ttl_extension.rs +261 -0
- package/contracts/macro-integration-tests/tests/runtime/storage/unkeyed_roundtrip.rs +137 -0
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/configuration.rs +113 -0
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/extend_instance_ttl.rs +50 -0
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/freeze.rs +139 -0
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/mod.rs +3 -0
- package/contracts/macro-integration-tests/tests/runtime.rs +5 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/attr_not_empty.rs +12 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/attr_not_empty.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/decreasing_discriminant.rs +12 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/decreasing_discriminant.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/non_int_discriminant.rs +21 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/non_int_discriminant.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/non_unit_variant.rs +13 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/non_unit_variant.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/error/pass/attr_on_variant_allowed.rs +20 -0
- package/contracts/macro-integration-tests/tests/ui/error/pass/basic_auto_discriminants.rs +15 -0
- package/contracts/macro-integration-tests/tests/ui/error/pass/mixed_discriminants.rs +16 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_owner_missing_env.rs +22 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_owner_missing_env.stderr +16 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/minimal_contract.rs +26 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +22 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/only_owner_env_param_variants.rs +46 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/invalid_storage_type_param.rs +13 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/invalid_storage_type_param.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/missing_storage_type_param.rs +13 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/missing_storage_type_param.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_storage_kinds.rs +10 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_storage_kinds.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_type_params.rs +12 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_type_params.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/no_ttl_extension_on_non_persistent.rs +10 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/no_ttl_extension_on_non_persistent.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/non_enum_input.rs +10 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/non_enum_input.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/storage_attr_rejects_args.rs +12 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/storage_attr_rejects_args.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/tuple_variant_rejected.rs +13 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/tuple_variant_rejected.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/unknown_variant_attr.rs +13 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/unknown_variant_attr.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/default_value_on_variant.rs +14 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_instance_unit_basic.rs +14 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_persistent_named_fields_keyed.rs +16 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_temporary_unit_option.rs +15 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/name_override.rs +14 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/no_auto_ttl_extension.rs +19 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/ttl_provider_basic.rs +15 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/minimal_contract.rs +44 -0
- package/contracts/macro-integration-tests/tests/ui_error.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui_ownable.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui_storage.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui_ttl_configurable.rs +12 -0
- package/contracts/message-libs/blocked-message-lib/src/lib.rs +17 -17
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/decode_packet_header.rs +64 -0
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/encode_packet.rs +58 -0
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/encode_packet_header.rs +138 -0
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/mod.rs +6 -0
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/payload.rs +30 -0
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/payload_hash.rs +15 -0
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/test_helper.rs +39 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_dvn_option.rs +57 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_lz_receive_option.rs +50 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_native_drop_option.rs +74 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/convert_legacy_options.rs +280 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/extract_type_3_options.rs +126 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/left_pad_to_bytes32.rs +48 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/mod.rs +7 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/split_worker_options.rs +139 -0
- package/contracts/message-libs/message-lib-common/src/worker_options.rs +31 -1
- package/contracts/message-libs/simple-message-lib/src/simple_message_lib.rs +2 -2
- package/contracts/message-libs/treasury/src/errors.rs +0 -1
- package/contracts/message-libs/treasury/src/lib.rs +3 -3
- package/contracts/message-libs/treasury/src/storage.rs +2 -0
- package/contracts/message-libs/treasury/src/treasury.rs +12 -13
- package/contracts/message-libs/uln-302/Cargo.toml +1 -1
- package/contracts/message-libs/uln-302/src/errors.rs +0 -5
- package/contracts/message-libs/uln-302/src/events.rs +5 -6
- package/contracts/message-libs/uln-302/src/receive_uln.rs +24 -54
- package/contracts/message-libs/uln-302/src/send_uln.rs +89 -135
- package/contracts/message-libs/uln-302/src/storage.rs +5 -5
- package/contracts/message-libs/uln-302/src/tests/receive_uln302/effective_receive_uln_config.rs +5 -7
- package/contracts/message-libs/uln-302/src/tests/receive_uln302/set_default_receive_uln_configs.rs +3 -3
- package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_send_uln_config.rs +6 -9
- package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_executor_configs.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_send_uln_configs.rs +3 -3
- package/contracts/message-libs/uln-302/src/tests/setup.rs +9 -0
- package/contracts/message-libs/uln-302/src/tests/testing_utils.rs +5 -0
- package/contracts/message-libs/uln-302/src/tests/uln302/get_app_receive_uln_config.rs +1 -2
- package/contracts/message-libs/uln-302/src/tests/uln302/get_app_send_uln_config.rs +1 -2
- package/contracts/message-libs/uln-302/src/tests/uln302/set_config.rs +37 -55
- package/contracts/message-libs/uln-302/src/uln302.rs +8 -5
- package/contracts/oapps/counter/src/counter.rs +0 -1
- package/contracts/oapps/oapp/src/macro_tests/test_macros.rs +306 -224
- package/contracts/oapps/oapp/src/tests/test_oapp_core.rs +0 -1
- package/contracts/oapps/oapp/src/tests/test_oapp_options_type3.rs +0 -1
- package/contracts/oapps/oapp/src/tests/test_oapp_receiver.rs +0 -1
- package/contracts/oapps/oapp/src/tests/test_oapp_sender.rs +0 -1
- package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_core.rs +1 -0
- package/contracts/oapps/oft/integration-tests/setup.rs +10 -3
- package/contracts/oapps/oft/integration-tests/utils.rs +1 -1
- package/contracts/oapps/oft/src/default_oft_impl.rs +9 -3
- package/contracts/oapps/oft/src/extensions/oft_fee.rs +5 -5
- package/contracts/oapps/oft/src/extensions/pausable.rs +1 -1
- package/contracts/oapps/oft/src/extensions/rate_limiter.rs +18 -18
- package/contracts/oapps/oft/src/oft.rs +9 -9
- package/contracts/oapps/oft/src/oft_types/lock_unlock.rs +1 -1
- package/contracts/oapps/oft/src/tests/extensions/setup.rs +26 -11
- package/contracts/oapps/oft/src/tests/extensions/test_rate_limiter.rs +1 -1
- package/contracts/oapps/oft/src/tests/test_send.rs +4 -4
- package/contracts/oapps/oft/src/tests/test_utils.rs +93 -74
- package/contracts/oapps/oft-std/Cargo.toml +6 -0
- package/contracts/oapps/oft-std/integration-tests/extensions/mod.rs +3 -0
- package/contracts/oapps/oft-std/integration-tests/extensions/test_oft_fee.rs +157 -0
- package/contracts/oapps/oft-std/integration-tests/extensions/test_pausable.rs +162 -0
- package/contracts/oapps/oft-std/integration-tests/extensions/test_rate_limiter.rs +186 -0
- package/contracts/oapps/oft-std/integration-tests/mod.rs +3 -0
- package/contracts/oapps/oft-std/integration-tests/setup.rs +245 -0
- package/contracts/oapps/oft-std/integration-tests/utils.rs +427 -0
- package/contracts/oapps/oft-std/src/lib.rs +12 -1
- package/contracts/oapps/oft-std/src/oft.rs +122 -25
- package/contracts/upgrader/Cargo.toml +19 -0
- package/contracts/upgrader/src/lib.rs +96 -0
- package/contracts/upgrader/src/tests/mod.rs +1 -0
- package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract1.wasm +0 -0
- package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract2.wasm +0 -0
- package/contracts/upgrader/src/tests/test_upgrader.rs +120 -0
- package/contracts/utils/src/errors.rs +6 -1
- package/contracts/utils/src/lib.rs +2 -1
- package/contracts/utils/src/ownable.rs +49 -61
- package/contracts/utils/src/tests/mod.rs +3 -1
- package/contracts/utils/src/tests/option_ext.rs +21 -0
- package/contracts/utils/src/tests/ownable.rs +10 -69
- package/contracts/utils/src/tests/ttl_configurable.rs +596 -0
- package/contracts/utils/src/tests/upgradeable.rs +288 -0
- package/contracts/utils/src/{ttl.rs → ttl_configurable.rs} +67 -52
- package/contracts/utils/src/upgradeable.rs +54 -0
- package/contracts/workers/dvn/Cargo.toml +1 -1
- package/contracts/workers/dvn/src/auth.rs +21 -32
- package/contracts/workers/dvn/src/dvn.rs +40 -3
- package/contracts/workers/dvn/src/errors.rs +1 -0
- package/contracts/workers/dvn/src/multisig.rs +10 -6
- package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +2 -2
- package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +4 -4
- package/contracts/workers/dvn-fee-lib/Cargo.toml +1 -2
- package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +46 -14
- package/contracts/workers/dvn-fee-lib/src/errors.rs +3 -2
- package/contracts/workers/dvn-fee-lib/src/lib.rs +5 -11
- package/contracts/workers/dvn-fee-lib/src/tests/dvn_fee_lib.rs +30 -16
- package/contracts/workers/executor/src/executor.rs +16 -2
- package/contracts/workers/executor-fee-lib/src/errors.rs +9 -7
- package/contracts/workers/executor-fee-lib/src/executor_fee_lib.rs +154 -119
- package/contracts/workers/executor-helper/Cargo.toml +0 -5
- package/contracts/workers/executor-helper/src/lib.rs +1 -7
- package/contracts/workers/price-feed/Cargo.toml +0 -1
- package/contracts/workers/price-feed/src/errors.rs +3 -2
- package/contracts/workers/price-feed/src/lib.rs +5 -6
- package/contracts/workers/price-feed/src/price_feed.rs +39 -17
- package/contracts/workers/worker/Cargo.toml +4 -0
- package/contracts/workers/worker/src/interfaces/price_feed.rs +3 -3
- package/contracts/workers/worker/src/lib.rs +2 -2
- package/contracts/workers/worker/src/tests/mod.rs +4 -0
- package/contracts/workers/worker/src/tests/setup.rs +147 -0
- package/contracts/workers/worker/src/tests/worker.rs +501 -0
- package/contracts/workers/worker/src/worker.rs +10 -16
- package/package.json +3 -3
- package/sdk/dist/generated/bml.d.ts +40 -30
- package/sdk/dist/generated/bml.js +16 -11
- package/sdk/dist/generated/counter.d.ts +168 -134
- package/sdk/dist/generated/counter.js +26 -21
- package/sdk/dist/generated/dvn.d.ts +1932 -0
- package/sdk/dist/generated/dvn.js +288 -0
- package/sdk/dist/generated/dvn_fee_lib.d.ts +615 -0
- package/sdk/dist/generated/dvn_fee_lib.js +123 -0
- package/sdk/dist/generated/endpoint.d.ts +75 -41
- package/sdk/dist/generated/endpoint.js +22 -17
- package/sdk/dist/generated/executor.d.ts +1809 -0
- package/sdk/dist/generated/executor.js +269 -0
- package/sdk/dist/generated/executor_fee_lib.d.ts +999 -0
- package/sdk/dist/generated/executor_fee_lib.js +208 -0
- package/sdk/dist/generated/executor_helper.d.ts +869 -0
- package/sdk/dist/generated/executor_helper.js +187 -0
- package/sdk/dist/generated/oft_std.d.ts +1544 -0
- package/sdk/dist/generated/oft_std.js +271 -0
- package/sdk/dist/generated/price_feed.d.ts +1002 -0
- package/sdk/dist/generated/price_feed.js +170 -0
- package/sdk/dist/generated/sml.d.ts +75 -41
- package/sdk/dist/generated/sml.js +22 -17
- package/sdk/dist/generated/uln302.d.ts +79 -60
- package/sdk/dist/generated/uln302.js +37 -37
- package/sdk/dist/generated/upgrader.d.ts +70 -0
- package/sdk/dist/generated/upgrader.js +19 -0
- package/sdk/dist/index.d.ts +8 -0
- package/sdk/dist/index.js +11 -0
- package/sdk/package.json +4 -3
- package/sdk/src/index.ts +13 -0
- package/sdk/test/index.test.ts +0 -1
- package/sdk/test/oft.test.ts +12 -23
- package/sdk/test/suites/testUpgradeable.ts +169 -0
- package/sdk/test/upgrader.test.ts +309 -0
- package/tools/ts-bindings-gen/src/main.rs +11 -1
- package/contracts/endpoint-v2/src/tests/messaging_channel/clear.rs +0 -316
- package/contracts/endpoint-v2/src/tests/messaging_channel/internal.rs +0 -388
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1.rs +0 -162
- package/contracts/message-libs/message-lib-common/src/tests/worker_options.rs +0 -319
- package/contracts/utils/src/tests/ttl.rs +0 -421
- /package/contracts/{oapp-macros → oapps/oapp-macros}/Cargo.toml +0 -0
- /package/contracts/{oapp-macros → oapps/oapp-macros}/src/lib.rs +0 -0
- /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_full.rs +0 -0
- /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_options_type3.rs +0 -0
- /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_receiver.rs +0 -0
- /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_sender.rs +0 -0
- /package/contracts/{oapp-macros → oapps/oapp-macros}/src/util.rs +0 -0
|
@@ -2,130 +2,98 @@ use soroban_sdk::{
|
|
|
2
2
|
testutils::{Address as _, Ledger},
|
|
3
3
|
vec, Address,
|
|
4
4
|
};
|
|
5
|
+
use utils::testing_utils::assert_event;
|
|
5
6
|
|
|
6
7
|
use crate::{
|
|
7
8
|
errors::EndpointError,
|
|
8
9
|
events::{DefaultReceiveLibTimeoutSet, DefaultReceiveLibrarySet},
|
|
9
|
-
|
|
10
|
-
tests::endpoint_setup::setup,
|
|
10
|
+
tests::endpoint_setup::{setup, TestSetup},
|
|
11
11
|
MessageLibType, Timeout,
|
|
12
12
|
};
|
|
13
|
-
use utils::testing_utils::assert_event;
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
fn try_set_default_receive_library_with_auth(
|
|
15
|
+
context: &TestSetup,
|
|
16
|
+
src_eid: u32,
|
|
17
|
+
receive_lib: &Address,
|
|
18
|
+
grace_period: u64,
|
|
19
|
+
) -> Result<(), Result<soroban_sdk::Error, soroban_sdk::InvokeError>> {
|
|
20
|
+
context.mock_owner_auth("set_default_receive_library", (&src_eid, receive_lib, &grace_period));
|
|
21
|
+
context
|
|
22
|
+
.endpoint_client
|
|
23
|
+
.try_set_default_receive_library(&src_eid, receive_lib, &grace_period)
|
|
24
|
+
.map(|r| r.expect("conversion error"))
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Unsupported EID rejection (library must support src_eid)
|
|
16
28
|
#[test]
|
|
17
29
|
fn test_set_default_receive_library_unsupported_eid() {
|
|
18
30
|
let context = setup();
|
|
19
31
|
let env = &context.env;
|
|
20
|
-
let endpoint_client = &context.endpoint_client;
|
|
21
32
|
|
|
22
33
|
let unsupported_eid = context.eid + 1;
|
|
23
34
|
|
|
24
|
-
// Create and register a receive lib that only supports
|
|
35
|
+
// Create and register a receive lib that only supports `context.eid`.
|
|
25
36
|
let receive_lib = context.setup_mock_message_lib(MessageLibType::Receive, vec![env, context.eid]);
|
|
26
37
|
|
|
27
|
-
|
|
28
|
-
context.mock_owner_auth("register_library", (&receive_lib,));
|
|
29
|
-
endpoint_client.register_library(&receive_lib);
|
|
30
|
-
|
|
31
|
-
// Mock owner auth for set_default_receive_library
|
|
32
|
-
context.mock_owner_auth("set_default_receive_library", (&unsupported_eid, &receive_lib, &0u64));
|
|
33
|
-
|
|
34
|
-
// Try to set it as default for unsupported eid
|
|
35
|
-
let result = endpoint_client.try_set_default_receive_library(&unsupported_eid, &receive_lib, &0u64);
|
|
38
|
+
context.register_library_with_auth(&receive_lib);
|
|
36
39
|
|
|
40
|
+
let result = try_set_default_receive_library_with_auth(&context, unsupported_eid, &receive_lib, 0);
|
|
37
41
|
assert_eq!(result.err().unwrap().ok().unwrap(), EndpointError::UnsupportedEid.into());
|
|
38
42
|
}
|
|
39
43
|
|
|
44
|
+
// Wrong library type rejection (must be Receive)
|
|
40
45
|
#[test]
|
|
41
46
|
fn test_set_default_receive_library_wrong_lib_type() {
|
|
42
47
|
let context = setup();
|
|
43
48
|
let env = &context.env;
|
|
44
|
-
let endpoint_client = &context.endpoint_client;
|
|
45
49
|
|
|
46
|
-
// Create and register a send-only lib that supports eid
|
|
50
|
+
// Create and register a send-only lib that supports `context.eid`.
|
|
47
51
|
let send_lib = context.setup_mock_message_lib(MessageLibType::Send, vec![env, context.eid]);
|
|
48
52
|
|
|
49
|
-
|
|
50
|
-
context.mock_owner_auth("register_library", (&send_lib,));
|
|
51
|
-
endpoint_client.register_library(&send_lib);
|
|
52
|
-
|
|
53
|
-
// Mock owner auth for set_default_receive_library
|
|
54
|
-
context.mock_owner_auth("set_default_receive_library", (&context.eid, &send_lib, &0u64));
|
|
55
|
-
|
|
56
|
-
// Try to set it as default receive library
|
|
57
|
-
let result = endpoint_client.try_set_default_receive_library(&context.eid, &send_lib, &0u64);
|
|
53
|
+
context.register_library_with_auth(&send_lib);
|
|
58
54
|
|
|
55
|
+
let result = try_set_default_receive_library_with_auth(&context, context.eid, &send_lib, 0);
|
|
59
56
|
assert_eq!(result.err().unwrap().ok().unwrap(), EndpointError::OnlyReceiveLib.into());
|
|
60
57
|
}
|
|
61
58
|
|
|
59
|
+
// Unregistered library rejection
|
|
62
60
|
#[test]
|
|
63
61
|
fn test_set_default_receive_library_unregistered_lib() {
|
|
64
62
|
let context = setup();
|
|
65
63
|
let env = &context.env;
|
|
66
|
-
let endpoint_client = &context.endpoint_client;
|
|
67
64
|
|
|
68
|
-
// Create but
|
|
65
|
+
// Create but do not register a valid receive lib.
|
|
69
66
|
let receive_lib = context.setup_mock_message_lib(MessageLibType::Receive, vec![env, context.eid]);
|
|
70
67
|
|
|
71
|
-
//
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
//
|
|
75
|
-
let result =
|
|
76
|
-
|
|
68
|
+
// Try to set it as default without registering (should panic).
|
|
69
|
+
//
|
|
70
|
+
// Note: a non-deployed address is also "not registered" from the endpoint's perspective, so it
|
|
71
|
+
// will fail with the same error as well.
|
|
72
|
+
let result = try_set_default_receive_library_with_auth(&context, context.eid, &receive_lib, 0);
|
|
77
73
|
assert_eq!(result.err().unwrap().ok().unwrap(), EndpointError::OnlyRegisteredLib.into());
|
|
78
74
|
}
|
|
79
75
|
|
|
80
|
-
|
|
81
|
-
fn test_set_default_receive_library_non_deployed_lib() {
|
|
82
|
-
let context = setup();
|
|
83
|
-
let env = &context.env;
|
|
84
|
-
let endpoint_client = &context.endpoint_client;
|
|
85
|
-
|
|
86
|
-
// Address without any contract deployed
|
|
87
|
-
let non_existent_lib = Address::generate(env);
|
|
88
|
-
|
|
89
|
-
// Mock owner auth for set_default_receive_library
|
|
90
|
-
context.mock_owner_auth("set_default_receive_library", (&context.eid, &non_existent_lib, &0u64));
|
|
91
|
-
|
|
92
|
-
// Try to set a non-existent contract as default
|
|
93
|
-
let result = endpoint_client.try_set_default_receive_library(&context.eid, &non_existent_lib, &0u64);
|
|
94
|
-
|
|
95
|
-
assert!(result.is_err());
|
|
96
|
-
}
|
|
97
|
-
|
|
76
|
+
// Successful update (state update + event emission)
|
|
98
77
|
#[test]
|
|
99
78
|
fn test_set_default_receive_library_success() {
|
|
100
79
|
let context = setup();
|
|
101
80
|
let env = &context.env;
|
|
102
81
|
let endpoint_client = &context.endpoint_client;
|
|
103
82
|
|
|
104
|
-
// Create and register a valid receive lib that supports eid
|
|
83
|
+
// Create and register a valid receive lib that supports `context.eid`.
|
|
105
84
|
let receive_lib = context.setup_mock_message_lib(MessageLibType::Receive, vec![env, context.eid]);
|
|
106
85
|
|
|
107
|
-
|
|
108
|
-
context.mock_owner_auth("register_library", (&receive_lib,));
|
|
109
|
-
endpoint_client.register_library(&receive_lib);
|
|
86
|
+
context.register_library_with_auth(&receive_lib);
|
|
110
87
|
|
|
111
|
-
// Verify initial state
|
|
88
|
+
// Verify initial state via public interface.
|
|
112
89
|
assert_eq!(endpoint_client.default_receive_library(&context.eid), None);
|
|
113
|
-
let initial_lib = env
|
|
114
|
-
.as_contract(&endpoint_client.address, || storage::EndpointStorage::default_receive_library(env, context.eid));
|
|
115
|
-
assert_eq!(initial_lib, None, "Initial default receive library should be None");
|
|
116
90
|
|
|
117
|
-
|
|
118
|
-
storage::EndpointStorage::default_receive_library_timeout(env, context.eid)
|
|
119
|
-
});
|
|
120
|
-
assert_eq!(initial_timeout, None, "Initial default receive library timeout should be None");
|
|
121
|
-
|
|
122
|
-
// Mock owner auth for set_default_receive_library
|
|
123
|
-
context.mock_owner_auth("set_default_receive_library", (&context.eid, &receive_lib, &0u64));
|
|
91
|
+
assert_eq!(endpoint_client.default_receive_library_timeout(&context.eid), None);
|
|
124
92
|
|
|
125
|
-
// Should succeed
|
|
126
|
-
|
|
93
|
+
// Should succeed.
|
|
94
|
+
context.set_default_receive_library_with_auth(context.eid, &receive_lib, 0);
|
|
127
95
|
|
|
128
|
-
// Verify
|
|
96
|
+
// Verify event emission.
|
|
129
97
|
assert_event(
|
|
130
98
|
env,
|
|
131
99
|
&endpoint_client.address,
|
|
@@ -133,20 +101,13 @@ fn test_set_default_receive_library_success() {
|
|
|
133
101
|
);
|
|
134
102
|
assert_event(env, &endpoint_client.address, DefaultReceiveLibTimeoutSet { src_eid: context.eid, timeout: None });
|
|
135
103
|
|
|
136
|
-
// Verify
|
|
104
|
+
// Verify state update via public interface.
|
|
137
105
|
assert_eq!(endpoint_client.default_receive_library(&context.eid), Some(receive_lib.clone()));
|
|
138
106
|
|
|
139
|
-
|
|
140
|
-
let stored_lib = env
|
|
141
|
-
.as_contract(&endpoint_client.address, || storage::EndpointStorage::default_receive_library(env, context.eid));
|
|
142
|
-
assert_eq!(stored_lib, Some(receive_lib), "Storage should contain the default receive library");
|
|
143
|
-
|
|
144
|
-
let stored_timeout = env.as_contract(&endpoint_client.address, || {
|
|
145
|
-
storage::EndpointStorage::default_receive_library_timeout(env, context.eid)
|
|
146
|
-
});
|
|
147
|
-
assert_eq!(stored_timeout, None, "Storage timeout should be None when grace_period is 0");
|
|
107
|
+
assert_eq!(endpoint_client.default_receive_library_timeout(&context.eid), None);
|
|
148
108
|
}
|
|
149
109
|
|
|
110
|
+
// Successful update with grace period (timeout should be set)
|
|
150
111
|
#[test]
|
|
151
112
|
fn test_set_default_receive_library_success_with_grace_period() {
|
|
152
113
|
let context = setup();
|
|
@@ -160,27 +121,22 @@ fn test_set_default_receive_library_success_with_grace_period() {
|
|
|
160
121
|
li.timestamp = current_timestamp;
|
|
161
122
|
});
|
|
162
123
|
|
|
163
|
-
// Create and register
|
|
124
|
+
// Create and register valid receive libs that support `context.eid`.
|
|
164
125
|
let receive_lib = context.setup_mock_message_lib(MessageLibType::Receive, vec![env, context.eid]);
|
|
165
126
|
let new_receive_lib = context.setup_mock_message_lib(MessageLibType::Receive, vec![env, context.eid]);
|
|
166
127
|
|
|
167
|
-
|
|
168
|
-
context.
|
|
169
|
-
endpoint_client.register_library(&receive_lib);
|
|
170
|
-
context.mock_owner_auth("register_library", (&new_receive_lib,));
|
|
171
|
-
endpoint_client.register_library(&new_receive_lib);
|
|
128
|
+
context.register_library_with_auth(&receive_lib);
|
|
129
|
+
context.register_library_with_auth(&new_receive_lib);
|
|
172
130
|
|
|
173
|
-
//
|
|
174
|
-
context.
|
|
175
|
-
endpoint_client.set_default_receive_library(&context.eid, &receive_lib, &0u64);
|
|
131
|
+
// First set the default receive library.
|
|
132
|
+
context.set_default_receive_library_with_auth(context.eid, &receive_lib, 0);
|
|
176
133
|
|
|
177
|
-
//
|
|
178
|
-
context.
|
|
179
|
-
endpoint_client.set_default_receive_library(&context.eid, &new_receive_lib, &grace_period);
|
|
134
|
+
// Then set the default receive library with the grace period.
|
|
135
|
+
context.set_default_receive_library_with_auth(context.eid, &new_receive_lib, grace_period);
|
|
180
136
|
|
|
181
137
|
let expected_timeout = Some(Timeout { lib: receive_lib.clone(), expiry: current_timestamp + grace_period });
|
|
182
138
|
|
|
183
|
-
// Verify the
|
|
139
|
+
// Verify event emission (from the second call).
|
|
184
140
|
assert_event(
|
|
185
141
|
env,
|
|
186
142
|
&endpoint_client.address,
|
|
@@ -192,21 +148,177 @@ fn test_set_default_receive_library_success_with_grace_period() {
|
|
|
192
148
|
DefaultReceiveLibTimeoutSet { src_eid: context.eid, timeout: expected_timeout.clone() },
|
|
193
149
|
);
|
|
194
150
|
|
|
195
|
-
// Verify
|
|
151
|
+
// Verify state update via public interface.
|
|
196
152
|
assert_eq!(endpoint_client.default_receive_library(&context.eid), Some(new_receive_lib.clone()));
|
|
197
153
|
assert_eq!(endpoint_client.default_receive_library_timeout(&context.eid), expected_timeout.clone());
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// Grace period > 0 with no previous default (timeout must remain None)
|
|
157
|
+
#[test]
|
|
158
|
+
fn test_set_default_receive_library_grace_period_with_no_previous_default_sets_no_timeout() {
|
|
159
|
+
let context = setup();
|
|
160
|
+
let env = &context.env;
|
|
161
|
+
let endpoint_client = &context.endpoint_client;
|
|
162
|
+
|
|
163
|
+
let grace_period = 1_000u64;
|
|
164
|
+
|
|
165
|
+
// Create and register a valid receive lib that supports `context.eid`.
|
|
166
|
+
let receive_lib = context.setup_mock_message_lib(MessageLibType::Receive, vec![env, context.eid]);
|
|
167
|
+
context.register_library_with_auth(&receive_lib);
|
|
168
|
+
|
|
169
|
+
// First-time set with grace period (no old default exists).
|
|
170
|
+
context.set_default_receive_library_with_auth(context.eid, &receive_lib, grace_period);
|
|
171
|
+
|
|
172
|
+
// Timeout must be None because there was no previous default to keep alive.
|
|
173
|
+
assert_event(
|
|
174
|
+
env,
|
|
175
|
+
&endpoint_client.address,
|
|
176
|
+
DefaultReceiveLibrarySet { src_eid: context.eid, new_lib: receive_lib.clone() },
|
|
177
|
+
);
|
|
178
|
+
assert_event(env, &endpoint_client.address, DefaultReceiveLibTimeoutSet { src_eid: context.eid, timeout: None });
|
|
179
|
+
|
|
180
|
+
assert_eq!(endpoint_client.default_receive_library(&context.eid), Some(receive_lib));
|
|
181
|
+
assert_eq!(endpoint_client.default_receive_library_timeout(&context.eid), None);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Clearing an existing timeout by rotating with grace_period = 0
|
|
185
|
+
#[test]
|
|
186
|
+
fn test_set_default_receive_library_grace_period_zero_clears_timeout() {
|
|
187
|
+
let context = setup();
|
|
188
|
+
let env = &context.env;
|
|
189
|
+
let endpoint_client = &context.endpoint_client;
|
|
190
|
+
|
|
191
|
+
let current_timestamp = 1_700_000_000u64;
|
|
192
|
+
env.ledger().with_mut(|li| {
|
|
193
|
+
li.timestamp = current_timestamp;
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
let src_eid = context.eid;
|
|
197
|
+
let grace_period = 1_000u64;
|
|
198
|
+
|
|
199
|
+
let lib_a = context.setup_mock_message_lib(MessageLibType::Receive, vec![env, src_eid]);
|
|
200
|
+
let lib_b = context.setup_mock_message_lib(MessageLibType::Receive, vec![env, src_eid]);
|
|
201
|
+
let lib_c = context.setup_mock_message_lib(MessageLibType::Receive, vec![env, src_eid]);
|
|
198
202
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
assert_eq!(stored_lib, Some(new_receive_lib), "Storage should contain the new default receive library");
|
|
203
|
+
context.register_library_with_auth(&lib_a);
|
|
204
|
+
context.register_library_with_auth(&lib_b);
|
|
205
|
+
context.register_library_with_auth(&lib_c);
|
|
203
206
|
|
|
204
|
-
|
|
205
|
-
|
|
207
|
+
// A: initial set (no timeout).
|
|
208
|
+
context.set_default_receive_library_with_auth(src_eid, &lib_a, 0);
|
|
209
|
+
assert_event(env, &endpoint_client.address, DefaultReceiveLibrarySet { src_eid, new_lib: lib_a.clone() });
|
|
210
|
+
assert_event(env, &endpoint_client.address, DefaultReceiveLibTimeoutSet { src_eid, timeout: None });
|
|
211
|
+
|
|
212
|
+
// B: rotate with grace -> timeout for A must be set.
|
|
213
|
+
context.set_default_receive_library_with_auth(src_eid, &lib_b, grace_period);
|
|
214
|
+
let expected_timeout_b = Some(Timeout { lib: lib_a.clone(), expiry: current_timestamp + grace_period });
|
|
215
|
+
assert_event(env, &endpoint_client.address, DefaultReceiveLibrarySet { src_eid, new_lib: lib_b.clone() });
|
|
216
|
+
assert_event(
|
|
217
|
+
env,
|
|
218
|
+
&endpoint_client.address,
|
|
219
|
+
DefaultReceiveLibTimeoutSet { src_eid, timeout: expected_timeout_b.clone() },
|
|
220
|
+
);
|
|
221
|
+
|
|
222
|
+
// C: rotate with grace=0 -> timeout must be cleared (None).
|
|
223
|
+
context.set_default_receive_library_with_auth(src_eid, &lib_c, 0);
|
|
224
|
+
assert_event(env, &endpoint_client.address, DefaultReceiveLibrarySet { src_eid, new_lib: lib_c.clone() });
|
|
225
|
+
assert_event(env, &endpoint_client.address, DefaultReceiveLibTimeoutSet { src_eid, timeout: None });
|
|
226
|
+
|
|
227
|
+
assert_eq!(endpoint_client.default_receive_library(&src_eid), Some(lib_c));
|
|
228
|
+
assert_eq!(endpoint_client.default_receive_library_timeout(&src_eid), None);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Multi-rotation timeout references the immediate previous default (B -> C keeps B)
|
|
232
|
+
#[test]
|
|
233
|
+
fn test_set_default_receive_library_multi_rotation_timeout_uses_immediate_previous_default() {
|
|
234
|
+
let context = setup();
|
|
235
|
+
let env = &context.env;
|
|
236
|
+
let endpoint_client = &context.endpoint_client;
|
|
237
|
+
|
|
238
|
+
let src_eid = context.eid;
|
|
239
|
+
|
|
240
|
+
let t0 = 1_700_000_000u64;
|
|
241
|
+
env.ledger().with_mut(|li| {
|
|
242
|
+
li.timestamp = t0;
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
let lib_a = context.setup_mock_message_lib(MessageLibType::Receive, vec![env, src_eid]);
|
|
246
|
+
let lib_b = context.setup_mock_message_lib(MessageLibType::Receive, vec![env, src_eid]);
|
|
247
|
+
let lib_c = context.setup_mock_message_lib(MessageLibType::Receive, vec![env, src_eid]);
|
|
248
|
+
|
|
249
|
+
context.register_library_with_auth(&lib_a);
|
|
250
|
+
context.register_library_with_auth(&lib_b);
|
|
251
|
+
context.register_library_with_auth(&lib_c);
|
|
252
|
+
|
|
253
|
+
// A initial.
|
|
254
|
+
context.set_default_receive_library_with_auth(src_eid, &lib_a, 0);
|
|
255
|
+
assert_event(env, &endpoint_client.address, DefaultReceiveLibrarySet { src_eid, new_lib: lib_a.clone() });
|
|
256
|
+
assert_event(env, &endpoint_client.address, DefaultReceiveLibTimeoutSet { src_eid, timeout: None });
|
|
257
|
+
|
|
258
|
+
// Rotate A -> B with grace=1000 => keep A.
|
|
259
|
+
context.set_default_receive_library_with_auth(src_eid, &lib_b, 1_000);
|
|
260
|
+
let expected_timeout_b = Some(Timeout { lib: lib_a.clone(), expiry: t0 + 1_000 });
|
|
261
|
+
assert_event(env, &endpoint_client.address, DefaultReceiveLibrarySet { src_eid, new_lib: lib_b.clone() });
|
|
262
|
+
assert_event(env, &endpoint_client.address, DefaultReceiveLibTimeoutSet { src_eid, timeout: expected_timeout_b });
|
|
263
|
+
|
|
264
|
+
// Advance time, then rotate B -> C with grace=500 => must keep B (not A).
|
|
265
|
+
let t1 = t0 + 10;
|
|
266
|
+
env.ledger().with_mut(|li| {
|
|
267
|
+
li.timestamp = t1;
|
|
206
268
|
});
|
|
207
|
-
|
|
269
|
+
context.set_default_receive_library_with_auth(src_eid, &lib_c, 500);
|
|
270
|
+
let expected_timeout_c = Some(Timeout { lib: lib_b.clone(), expiry: t1 + 500 });
|
|
271
|
+
assert_event(env, &endpoint_client.address, DefaultReceiveLibrarySet { src_eid, new_lib: lib_c.clone() });
|
|
272
|
+
assert_event(
|
|
273
|
+
env,
|
|
274
|
+
&endpoint_client.address,
|
|
275
|
+
DefaultReceiveLibTimeoutSet { src_eid, timeout: expected_timeout_c.clone() },
|
|
276
|
+
);
|
|
277
|
+
|
|
278
|
+
assert_eq!(endpoint_client.default_receive_library(&src_eid), Some(lib_c));
|
|
279
|
+
assert_eq!(endpoint_client.default_receive_library_timeout(&src_eid), expected_timeout_c);
|
|
208
280
|
}
|
|
209
281
|
|
|
282
|
+
// EID scoping (defaults/timeouts must be independent per src_eid)
|
|
283
|
+
#[test]
|
|
284
|
+
fn test_set_default_receive_library_is_scoped_by_src_eid() {
|
|
285
|
+
let context = setup();
|
|
286
|
+
let env = &context.env;
|
|
287
|
+
let endpoint_client = &context.endpoint_client;
|
|
288
|
+
|
|
289
|
+
let src_eid_1 = context.eid;
|
|
290
|
+
let src_eid_2 = context.eid + 1;
|
|
291
|
+
|
|
292
|
+
let lib_1 = context.setup_mock_message_lib(MessageLibType::Receive, vec![env, src_eid_1]);
|
|
293
|
+
let lib_2 = context.setup_mock_message_lib(MessageLibType::Receive, vec![env, src_eid_2]);
|
|
294
|
+
|
|
295
|
+
context.register_library_with_auth(&lib_1);
|
|
296
|
+
context.register_library_with_auth(&lib_2);
|
|
297
|
+
|
|
298
|
+
context.set_default_receive_library_with_auth(src_eid_1, &lib_1, 0);
|
|
299
|
+
assert_event(
|
|
300
|
+
env,
|
|
301
|
+
&endpoint_client.address,
|
|
302
|
+
DefaultReceiveLibrarySet { src_eid: src_eid_1, new_lib: lib_1.clone() },
|
|
303
|
+
);
|
|
304
|
+
assert_event(env, &endpoint_client.address, DefaultReceiveLibTimeoutSet { src_eid: src_eid_1, timeout: None });
|
|
305
|
+
|
|
306
|
+
context.set_default_receive_library_with_auth(src_eid_2, &lib_2, 0);
|
|
307
|
+
assert_event(
|
|
308
|
+
env,
|
|
309
|
+
&endpoint_client.address,
|
|
310
|
+
DefaultReceiveLibrarySet { src_eid: src_eid_2, new_lib: lib_2.clone() },
|
|
311
|
+
);
|
|
312
|
+
assert_event(env, &endpoint_client.address, DefaultReceiveLibTimeoutSet { src_eid: src_eid_2, timeout: None });
|
|
313
|
+
|
|
314
|
+
assert_eq!(endpoint_client.default_receive_library(&src_eid_1), Some(lib_1));
|
|
315
|
+
assert_eq!(endpoint_client.default_receive_library_timeout(&src_eid_1), None);
|
|
316
|
+
|
|
317
|
+
assert_eq!(endpoint_client.default_receive_library(&src_eid_2), Some(lib_2));
|
|
318
|
+
assert_eq!(endpoint_client.default_receive_library_timeout(&src_eid_2), None);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
// Authorization (only owner)
|
|
210
322
|
#[test]
|
|
211
323
|
#[should_panic(expected = "Error(Auth, InvalidAction)")]
|
|
212
324
|
fn test_set_default_receive_library_requires_owner_auth() {
|
|
@@ -216,66 +328,57 @@ fn test_set_default_receive_library_requires_owner_auth() {
|
|
|
216
328
|
|
|
217
329
|
let non_owner = Address::generate(env);
|
|
218
330
|
|
|
219
|
-
// Create and register a valid receive lib
|
|
331
|
+
// Create and register a valid receive lib.
|
|
220
332
|
let receive_lib = context.setup_mock_message_lib(MessageLibType::Receive, vec![env, context.eid]);
|
|
221
333
|
|
|
222
|
-
|
|
223
|
-
context.mock_owner_auth("register_library", (&receive_lib,));
|
|
224
|
-
endpoint_client.register_library(&receive_lib);
|
|
334
|
+
context.register_library_with_auth(&receive_lib);
|
|
225
335
|
|
|
226
|
-
// Mock auth for the non-owner (not the owner)
|
|
336
|
+
// Mock auth for the non-owner (not the owner).
|
|
227
337
|
context.mock_auth(&non_owner, "set_default_receive_library", (&context.eid, &receive_lib, &0u64));
|
|
228
338
|
|
|
229
|
-
// Should fail when non-owner tries to set
|
|
339
|
+
// Should fail when a non-owner tries to set.
|
|
230
340
|
endpoint_client.set_default_receive_library(&context.eid, &receive_lib, &0u64);
|
|
231
341
|
}
|
|
232
342
|
|
|
343
|
+
// Same value rejection (no-op is not allowed)
|
|
233
344
|
#[test]
|
|
234
345
|
fn test_set_default_receive_library_same_value() {
|
|
235
346
|
let context = setup();
|
|
236
347
|
let env = &context.env;
|
|
237
|
-
let endpoint_client = &context.endpoint_client;
|
|
238
348
|
|
|
239
|
-
// Create and register a valid receive lib that supports eid
|
|
349
|
+
// Create and register a valid receive lib that supports `context.eid`.
|
|
240
350
|
let receive_lib = context.setup_mock_message_lib(MessageLibType::Receive, vec![env, context.eid]);
|
|
241
351
|
|
|
242
|
-
|
|
243
|
-
context.
|
|
244
|
-
endpoint_client.register_library(&receive_lib);
|
|
245
|
-
|
|
246
|
-
// Mock owner auth for first set_default_receive_library
|
|
247
|
-
context.mock_owner_auth("set_default_receive_library", (&context.eid, &receive_lib, &0u64));
|
|
248
|
-
endpoint_client.set_default_receive_library(&context.eid, &receive_lib, &0u64);
|
|
249
|
-
|
|
250
|
-
// Mock owner auth for second set_default_receive_library (same value)
|
|
251
|
-
context.mock_owner_auth("set_default_receive_library", (&context.eid, &receive_lib, &0u64));
|
|
252
|
-
|
|
253
|
-
// Try to set the same library again
|
|
254
|
-
let result = endpoint_client.try_set_default_receive_library(&context.eid, &receive_lib, &0u64);
|
|
352
|
+
context.register_library_with_auth(&receive_lib);
|
|
353
|
+
context.set_default_receive_library_with_auth(context.eid, &receive_lib, 0);
|
|
255
354
|
|
|
355
|
+
let result = try_set_default_receive_library_with_auth(&context, context.eid, &receive_lib, 0);
|
|
256
356
|
assert_eq!(result.err().unwrap().ok().unwrap(), EndpointError::SameValue.into());
|
|
257
357
|
}
|
|
258
358
|
|
|
259
|
-
//
|
|
359
|
+
// Successful update with SendAndReceive library type (valid for receive)
|
|
260
360
|
#[test]
|
|
261
361
|
fn test_set_default_receive_library_with_send_and_receive_type() {
|
|
262
362
|
let context = setup();
|
|
263
363
|
let env = &context.env;
|
|
264
364
|
let endpoint_client = &context.endpoint_client;
|
|
265
365
|
|
|
266
|
-
// Create and register a SendAndReceive lib that supports eid
|
|
366
|
+
// Create and register a SendAndReceive lib that supports `context.eid`.
|
|
267
367
|
let send_and_receive_lib = context.setup_mock_message_lib(MessageLibType::SendAndReceive, vec![env, context.eid]);
|
|
268
368
|
|
|
269
|
-
|
|
270
|
-
context.mock_owner_auth("register_library", (&send_and_receive_lib,));
|
|
271
|
-
endpoint_client.register_library(&send_and_receive_lib);
|
|
369
|
+
context.register_library_with_auth(&send_and_receive_lib);
|
|
272
370
|
|
|
273
|
-
//
|
|
274
|
-
context.
|
|
371
|
+
// Should succeed.
|
|
372
|
+
context.set_default_receive_library_with_auth(context.eid, &send_and_receive_lib, 0);
|
|
275
373
|
|
|
276
|
-
//
|
|
277
|
-
|
|
374
|
+
// Verify event emission.
|
|
375
|
+
assert_event(
|
|
376
|
+
env,
|
|
377
|
+
&endpoint_client.address,
|
|
378
|
+
DefaultReceiveLibrarySet { src_eid: context.eid, new_lib: send_and_receive_lib.clone() },
|
|
379
|
+
);
|
|
380
|
+
assert_event(env, &endpoint_client.address, DefaultReceiveLibTimeoutSet { src_eid: context.eid, timeout: None });
|
|
278
381
|
|
|
279
|
-
// Verify
|
|
382
|
+
// Verify state update via public interface.
|
|
280
383
|
assert_eq!(endpoint_client.default_receive_library(&context.eid), Some(send_and_receive_lib));
|
|
281
384
|
}
|