@layerzerolabs/protocol-stellar-v2 0.2.19 → 0.2.21
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 +795 -791
- package/.turbo/turbo-lint.log +325 -155
- package/.turbo/turbo-test.log +1398 -1277
- package/Cargo.lock +122 -111
- package/Cargo.toml +32 -16
- package/contracts/common-macros/Cargo.toml +7 -7
- package/contracts/common-macros/src/auth.rs +18 -37
- package/contracts/common-macros/src/contract_ttl.rs +18 -7
- package/contracts/common-macros/src/lib.rs +31 -14
- package/contracts/common-macros/src/lz_contract.rs +38 -7
- package/contracts/common-macros/src/storage.rs +251 -292
- package/contracts/common-macros/src/tests/contract_ttl.rs +1 -1
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_multisig_code.snap +6 -12
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_ownable_code.snap +12 -17
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contractimpl_code.snap +2 -1
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +2 -7
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__upgradeable__snapshot_generated_upgradeable_code.snap +20 -14
- package/contracts/common-macros/src/tests/upgradeable.rs +26 -4
- package/contracts/common-macros/src/ttl_configurable.rs +2 -10
- package/contracts/common-macros/src/ttl_extendable.rs +2 -10
- package/contracts/common-macros/src/upgradeable.rs +61 -26
- package/contracts/common-macros/src/utils.rs +0 -9
- package/contracts/endpoint-v2/src/lib.rs +3 -2
- package/contracts/endpoint-v2/src/tests/endpoint_v2/clear.rs +2 -2
- package/contracts/endpoint-v2/src/tests/endpoint_v2/lz_receive_alert.rs +3 -3
- package/contracts/endpoint-v2/src/tests/endpoint_v2/send.rs +4 -4
- package/contracts/endpoint-v2/src/tests/endpoint_v2/set_delegate.rs +17 -5
- package/contracts/endpoint-v2/src/tests/endpoint_v2/set_zro.rs +4 -4
- package/contracts/endpoint-v2/src/tests/endpoint_v2/verify.rs +2 -2
- package/contracts/endpoint-v2/src/tests/message_lib_manager/register_library.rs +2 -2
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_lib_timeout.rs +6 -6
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_library.rs +67 -37
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_send_library.rs +5 -5
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library.rs +44 -54
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library_timeout.rs +7 -7
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_send_library.rs +8 -8
- package/contracts/endpoint-v2/src/tests/messaging_channel/burn.rs +3 -3
- package/contracts/endpoint-v2/src/tests/messaging_channel/nilify.rs +4 -4
- package/contracts/endpoint-v2/src/tests/messaging_channel/skip.rs +3 -3
- package/contracts/endpoint-v2/src/tests/messaging_composer/clear_compose.rs +2 -2
- package/contracts/endpoint-v2/src/tests/messaging_composer/lz_compose_alert.rs +3 -3
- package/contracts/endpoint-v2/src/tests/messaging_composer/send_compose.rs +2 -2
- package/contracts/layerzero-views/Cargo.toml +0 -1
- package/contracts/layerzero-views/src/layerzero_view.rs +1 -13
- package/contracts/macro-integration-tests/Cargo.toml +5 -15
- package/contracts/macro-integration-tests/tests/runtime/oapp/mod.rs +48 -0
- package/contracts/macro-integration-tests/tests/runtime/oapp/oapp_core.rs +170 -0
- package/contracts/macro-integration-tests/tests/runtime/oapp/options_type3.rs +154 -0
- package/contracts/macro-integration-tests/tests/runtime/oapp/receiver.rs +338 -0
- package/contracts/macro-integration-tests/tests/runtime/oapp/sender.rs +435 -0
- package/contracts/macro-integration-tests/tests/runtime.rs +1 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/custom_wrong_value.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/custom_wrong_value.stderr +5 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.stderr +71 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/non_struct_input.rs +10 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/non_struct_input.stderr +5 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/unknown_custom_option.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/unknown_custom_option.stderr +5 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/wrong_key.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/wrong_key.stderr +5 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_all.rs +38 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_single_trait.rs +96 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/minimal_contract.rs +64 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/struct_with_fields.rs +46 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_env.stderr +8 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +1 -1
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/only_auth_env_param_variants.rs +1 -1
- package/contracts/macro-integration-tests/tests/ui_oapp.rs +11 -0
- package/contracts/message-libs/message-lib-common/Cargo.toml +0 -1
- package/contracts/message-libs/message-lib-common/src/errors.rs +1 -1
- package/contracts/message-libs/treasury/Cargo.toml +0 -2
- package/contracts/message-libs/treasury/src/tests/treasury_tests.rs +2 -2
- package/contracts/message-libs/uln-302/src/events.rs +4 -0
- package/contracts/message-libs/uln-302/src/send_uln.rs +22 -6
- package/contracts/message-libs/uln-302/src/tests/receive_uln302/effective_receive_uln_config.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/receive_uln302/set_default_receive_uln_configs.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/receive_uln302/verify.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_executor_config.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_send_uln_config.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/send_uln302/send.rs +21 -67
- 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 +2 -2
- package/contracts/oapps/counter/Cargo.toml +5 -6
- package/contracts/oapps/counter/integration_tests/setup_uln.rs +1 -1
- package/contracts/oapps/counter/integration_tests/utils.rs +19 -12
- package/contracts/oapps/oapp/src/errors.rs +1 -1
- package/contracts/oapps/oapp/src/interfaces/mod.rs +3 -0
- package/contracts/oapps/oapp/src/interfaces/oapp_msg_inspector.rs +47 -0
- package/contracts/oapps/oapp/src/lib.rs +1 -0
- package/contracts/oapps/oapp/src/macro_tests/test_macros.rs +4 -4
- package/contracts/oapps/oapp/src/oapp_core.rs +5 -5
- package/contracts/oapps/oapp/src/oapp_options_type3.rs +12 -4
- package/contracts/oapps/oapp/src/oapp_receiver.rs +14 -9
- package/contracts/oapps/oapp/src/tests/mod.rs +4 -4
- package/contracts/oapps/oapp/src/tests/oapp_core.rs +223 -0
- package/contracts/oapps/oapp/src/tests/oapp_options_type3.rs +240 -0
- package/contracts/oapps/oapp/src/tests/oapp_receiver.rs +381 -0
- package/contracts/oapps/oapp/src/tests/oapp_sender.rs +569 -0
- package/contracts/oapps/oapp-macros/Cargo.toml +8 -4
- package/contracts/oapps/oapp-macros/src/generators.rs +9 -34
- package/contracts/oapps/oapp-macros/src/lib.rs +3 -0
- package/contracts/oapps/oapp-macros/src/tests/mod.rs +2 -0
- package/contracts/oapps/oapp-macros/src/tests/oapp.rs +88 -0
- package/contracts/oapps/oapp-macros/src/tests/parse_custom_impls.rs +86 -0
- package/contracts/oapps/oapp-macros/src/tests/snapshots/oapp_macros__tests__oapp__snapshot_generate_oapp.snap +103 -0
- package/contracts/oapps/oft/integration-tests/utils.rs +28 -8
- package/contracts/oapps/oft/src/extensions/oft_fee.rs +153 -75
- package/contracts/oapps/oft/src/extensions/pausable.rs +61 -12
- package/contracts/oapps/oft/src/extensions/rate_limiter.rs +198 -134
- package/contracts/oapps/oft/src/oft.rs +45 -50
- package/contracts/oapps/oft/src/oft_types/lock_unlock.rs +1 -1
- package/contracts/oapps/oft/src/oft_types/mint_burn.rs +4 -26
- package/contracts/oapps/oft-core/Cargo.toml +1 -4
- package/contracts/oapps/oft-core/integration-tests/setup.rs +3 -3
- package/contracts/oapps/oft-core/integration-tests/utils.rs +21 -3
- package/contracts/oapps/oft-core/src/errors.rs +3 -2
- package/contracts/oapps/oft-core/src/events.rs +6 -0
- package/contracts/oapps/oft-core/src/lib.rs +1 -1
- package/contracts/oapps/oft-core/src/oft_core.rs +341 -246
- package/contracts/oapps/oft-core/src/storage.rs +7 -3
- package/contracts/oapps/oft-core/src/tests/mod.rs +1 -0
- package/contracts/oapps/oft-core/src/tests/test_decimals.rs +37 -2
- package/contracts/oapps/oft-core/src/tests/test_lz_receive.rs +2 -2
- package/contracts/oapps/oft-core/src/tests/test_msg_inspector.rs +323 -0
- package/contracts/oapps/oft-core/src/tests/test_send.rs +2 -2
- package/contracts/oapps/oft-core/src/tests/test_utils.rs +61 -16
- package/contracts/upgrader/src/lib.rs +30 -57
- 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 +44 -35
- package/contracts/utils/Cargo.toml +0 -1
- package/contracts/utils/src/buffer_reader.rs +1 -0
- package/contracts/utils/src/errors.rs +4 -2
- package/contracts/utils/src/multisig.rs +17 -8
- package/contracts/utils/src/ownable.rs +6 -6
- package/contracts/utils/src/testing_utils.rs +124 -54
- package/contracts/utils/src/tests/multisig.rs +12 -12
- package/contracts/utils/src/tests/ownable.rs +6 -6
- package/contracts/utils/src/tests/testing_utils.rs +50 -167
- package/contracts/utils/src/tests/ttl_configurable.rs +5 -5
- package/contracts/utils/src/tests/upgradeable.rs +372 -175
- package/contracts/utils/src/ttl_configurable.rs +13 -7
- package/contracts/utils/src/upgradeable.rs +48 -23
- package/contracts/workers/dvn/Cargo.toml +6 -6
- package/contracts/workers/dvn/src/auth.rs +12 -42
- package/contracts/workers/dvn/src/dvn.rs +15 -40
- package/contracts/workers/dvn/src/errors.rs +0 -1
- package/contracts/workers/dvn/src/interfaces/dvn.rs +35 -0
- package/contracts/workers/dvn/src/lib.rs +4 -3
- package/contracts/workers/dvn/src/tests/auth.rs +1 -1
- package/contracts/workers/dvn/src/tests/dvn.rs +19 -15
- package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +2 -4
- package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +1 -3
- package/contracts/workers/dvn/src/tests/setup.rs +5 -9
- package/contracts/workers/dvn-fee-lib/Cargo.toml +2 -2
- package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +38 -22
- package/contracts/workers/dvn-fee-lib/src/lib.rs +12 -2
- package/contracts/workers/dvn-fee-lib/src/tests/dvn_fee_lib.rs +17 -16
- package/contracts/workers/executor/Cargo.toml +4 -0
- package/contracts/workers/executor/src/executor.rs +15 -36
- package/contracts/workers/executor/src/lib.rs +2 -2
- package/contracts/workers/executor/src/tests/auth.rs +394 -0
- package/contracts/workers/executor/src/tests/executor.rs +410 -0
- package/contracts/workers/executor/src/tests/mod.rs +3 -0
- package/contracts/workers/executor/src/tests/setup.rs +250 -0
- package/contracts/workers/executor-fee-lib/Cargo.toml +7 -1
- package/contracts/workers/executor-fee-lib/src/executor_fee_lib.rs +62 -15
- package/contracts/workers/executor-fee-lib/src/executor_option.rs +28 -1
- package/contracts/workers/executor-fee-lib/src/lib.rs +11 -2
- package/contracts/workers/executor-fee-lib/src/tests/executor_fee_lib.rs +701 -0
- package/contracts/workers/executor-fee-lib/src/tests/executor_option.rs +370 -0
- package/contracts/workers/executor-fee-lib/src/tests/mod.rs +4 -0
- package/contracts/workers/executor-fee-lib/src/tests/setup.rs +60 -0
- package/contracts/workers/executor-helper/Cargo.toml +0 -1
- package/contracts/workers/executor-helper/src/lib.rs +3 -0
- package/contracts/workers/executor-helper/src/tests/executor_helper.rs +184 -0
- package/contracts/workers/executor-helper/src/tests/mod.rs +2 -0
- package/contracts/workers/executor-helper/src/tests/setup.rs +366 -0
- package/contracts/workers/fee-lib-interfaces/Cargo.toml +14 -0
- package/contracts/workers/{worker/src/interfaces/mod.rs → fee-lib-interfaces/src/lib.rs} +4 -3
- package/contracts/workers/price-feed/Cargo.toml +7 -1
- package/contracts/workers/price-feed/src/events.rs +1 -1
- package/contracts/workers/price-feed/src/lib.rs +12 -4
- package/contracts/workers/price-feed/src/price_feed.rs +5 -21
- package/contracts/workers/price-feed/src/storage.rs +1 -1
- package/contracts/workers/price-feed/src/tests/mod.rs +2 -0
- package/contracts/workers/price-feed/src/tests/price_feed.rs +869 -0
- package/contracts/workers/price-feed/src/tests/setup.rs +70 -0
- package/contracts/workers/price-feed/src/types.rs +1 -1
- package/contracts/workers/worker/src/errors.rs +1 -4
- package/contracts/workers/worker/src/lib.rs +0 -2
- package/contracts/workers/worker/src/storage.rs +32 -29
- package/contracts/workers/worker/src/tests/setup.rs +2 -8
- package/contracts/workers/worker/src/tests/worker.rs +96 -74
- package/contracts/workers/worker/src/worker.rs +75 -75
- package/docs/error-spec.md +55 -0
- package/docs/layerzero-v2-on-stellar.md +447 -0
- package/docs/oapp-guide.md +212 -0
- package/docs/oft-guide.md +314 -0
- package/package.json +3 -3
- package/sdk/.turbo/turbo-test.log +268 -263
- package/sdk/dist/generated/bml.d.ts +12 -4
- package/sdk/dist/generated/bml.js +9 -7
- package/sdk/dist/generated/counter.d.ts +306 -298
- package/sdk/dist/generated/counter.js +48 -46
- package/sdk/dist/generated/dvn.d.ts +450 -411
- package/sdk/dist/generated/dvn.js +66 -64
- package/sdk/dist/generated/dvn_fee_lib.d.ts +294 -338
- package/sdk/dist/generated/dvn_fee_lib.js +33 -64
- package/sdk/dist/generated/endpoint.d.ts +108 -100
- package/sdk/dist/generated/endpoint.js +21 -19
- package/sdk/dist/generated/executor.d.ts +414 -370
- package/sdk/dist/generated/executor.js +58 -55
- package/sdk/dist/generated/executor_fee_lib.d.ts +333 -377
- package/sdk/dist/generated/executor_fee_lib.js +34 -65
- package/sdk/dist/generated/executor_helper.d.ts +26 -190
- package/sdk/dist/generated/executor_helper.js +23 -28
- package/sdk/dist/generated/layerzero_view.d.ts +1271 -0
- package/sdk/dist/generated/layerzero_view.js +294 -0
- package/sdk/dist/generated/oft.d.ts +408 -385
- package/sdk/dist/generated/oft.js +89 -92
- package/sdk/dist/generated/price_feed.d.ts +385 -429
- package/sdk/dist/generated/price_feed.js +50 -81
- package/sdk/dist/generated/sml.d.ts +108 -100
- package/sdk/dist/generated/sml.js +21 -19
- package/sdk/dist/generated/treasury.d.ts +108 -100
- package/sdk/dist/generated/treasury.js +21 -19
- package/sdk/dist/generated/uln302.d.ts +108 -100
- package/sdk/dist/generated/uln302.js +23 -21
- package/sdk/dist/generated/upgrader.d.ts +189 -18
- package/sdk/dist/generated/upgrader.js +84 -4
- package/sdk/dist/index.d.ts +1 -0
- package/sdk/dist/index.js +2 -0
- package/sdk/package.json +1 -1
- package/sdk/src/index.ts +3 -0
- package/sdk/test/oft-sml.test.ts +4 -4
- package/sdk/test/suites/localnet.ts +84 -20
- package/sdk/test/upgrader.test.ts +2 -3
- package/tools/ts-bindings-gen/src/main.rs +2 -1
- package/contracts/ERROR_SPEC.md +0 -44
- package/contracts/endpoint-v2/ARCHITECTURE.md +0 -233
- package/contracts/oapps/oapp/src/tests/test_oapp_core.rs +0 -175
- package/contracts/oapps/oapp/src/tests/test_oapp_options_type3.rs +0 -212
- package/contracts/oapps/oapp/src/tests/test_oapp_receiver.rs +0 -153
- package/contracts/oapps/oapp/src/tests/test_oapp_sender.rs +0 -294
- /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/dvn_fee_lib.rs +0 -0
- /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/executor_fee_lib.rs +0 -0
- /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/price_feed.rs +0 -0
|
@@ -9,6 +9,8 @@ use soroban_sdk::{
|
|
|
9
9
|
vec, Address, BytesN, Env, IntoVal, Symbol, TryIntoVal, Val, Vec,
|
|
10
10
|
};
|
|
11
11
|
|
|
12
|
+
use crate::testing_utils::decode_event_topics_data;
|
|
13
|
+
|
|
12
14
|
// Test contract implementing Multisig + Auth (self-owning)
|
|
13
15
|
#[contract]
|
|
14
16
|
pub struct TestContract;
|
|
@@ -60,14 +62,13 @@ fn assert_auth(env: &Env, contract: &Address, func: &str, expected_args: Vec<Val
|
|
|
60
62
|
|
|
61
63
|
fn assert_signer_set_event(env: &Env, contract: &Address, signer: &BytesN<20>, active: bool) {
|
|
62
64
|
use soroban_sdk::Map;
|
|
63
|
-
let events = env.events().all();
|
|
65
|
+
let events = env.events().all().filter_by_contract(contract);
|
|
64
66
|
// Find the signer_set event for this contract (snake_case event name)
|
|
65
|
-
let found = events.iter().any(|event| {
|
|
66
|
-
|
|
67
|
+
let found = events.events().iter().any(|event| {
|
|
68
|
+
let Some((topics, data)) = decode_event_topics_data(env, event) else {
|
|
67
69
|
return false;
|
|
68
|
-
}
|
|
70
|
+
};
|
|
69
71
|
// Check topics: ["signer_set", signer]
|
|
70
|
-
let topics = &event.1;
|
|
71
72
|
if topics.len() != 2 {
|
|
72
73
|
return false;
|
|
73
74
|
}
|
|
@@ -77,7 +78,7 @@ fn assert_signer_set_event(env: &Env, contract: &Address, signer: &BytesN<20>, a
|
|
|
77
78
|
return false;
|
|
78
79
|
}
|
|
79
80
|
// Check data is a map with "active" field
|
|
80
|
-
let data_map: Map<Symbol, bool> =
|
|
81
|
+
let data_map: Map<Symbol, bool> = data.try_into_val(env).unwrap();
|
|
81
82
|
data_map.get(Symbol::new(env, "active")) == Some(active)
|
|
82
83
|
});
|
|
83
84
|
assert!(found, "signer_set event not found");
|
|
@@ -85,14 +86,13 @@ fn assert_signer_set_event(env: &Env, contract: &Address, signer: &BytesN<20>, a
|
|
|
85
86
|
|
|
86
87
|
fn assert_threshold_set_event(env: &Env, contract: &Address, threshold: u32) {
|
|
87
88
|
use soroban_sdk::Map;
|
|
88
|
-
let events = env.events().all();
|
|
89
|
+
let events = env.events().all().filter_by_contract(contract);
|
|
89
90
|
// Find the threshold_set event for this contract (snake_case event name)
|
|
90
|
-
let found = events.iter().any(|event| {
|
|
91
|
-
|
|
91
|
+
let found = events.events().iter().any(|event| {
|
|
92
|
+
let Some((topics, data)) = decode_event_topics_data(env, event) else {
|
|
92
93
|
return false;
|
|
93
|
-
}
|
|
94
|
+
};
|
|
94
95
|
// Check topics: ["threshold_set"]
|
|
95
|
-
let topics = &event.1;
|
|
96
96
|
if topics.len() != 1 {
|
|
97
97
|
return false;
|
|
98
98
|
}
|
|
@@ -101,7 +101,7 @@ fn assert_threshold_set_event(env: &Env, contract: &Address, threshold: u32) {
|
|
|
101
101
|
return false;
|
|
102
102
|
}
|
|
103
103
|
// Check data is a map with "threshold" field
|
|
104
|
-
let data_map: Map<Symbol, u32> =
|
|
104
|
+
let data_map: Map<Symbol, u32> = data.try_into_val(env).unwrap();
|
|
105
105
|
data_map.get(Symbol::new(env, "threshold")) == Some(threshold)
|
|
106
106
|
});
|
|
107
107
|
assert!(found, "threshold_set event not found");
|
|
@@ -6,7 +6,7 @@ use crate::{
|
|
|
6
6
|
self, Ownable, OwnableInitializer, OwnableStorage, OwnershipRenounced, OwnershipTransferred,
|
|
7
7
|
OwnershipTransferring,
|
|
8
8
|
},
|
|
9
|
-
testing_utils::
|
|
9
|
+
testing_utils::assert_eq_event,
|
|
10
10
|
};
|
|
11
11
|
use soroban_sdk::{
|
|
12
12
|
contract, contractimpl,
|
|
@@ -137,7 +137,7 @@ fn transfer_ownership_with_event() {
|
|
|
137
137
|
}]);
|
|
138
138
|
client.transfer_ownership(&new_owner);
|
|
139
139
|
|
|
140
|
-
|
|
140
|
+
assert_eq_event(&env, &contract, OwnershipTransferred { old_owner: owner, new_owner: new_owner.clone() });
|
|
141
141
|
assert_eq!(client.owner(), Some(new_owner));
|
|
142
142
|
}
|
|
143
143
|
|
|
@@ -163,7 +163,7 @@ fn transfer_ownership_to_same_owner() {
|
|
|
163
163
|
client.transfer_ownership(&owner);
|
|
164
164
|
|
|
165
165
|
// Should still emit event and update (even if same owner)
|
|
166
|
-
|
|
166
|
+
assert_eq_event(&env, &contract, OwnershipTransferred { old_owner: owner.clone(), new_owner: owner.clone() });
|
|
167
167
|
assert_eq!(client.owner(), Some(owner));
|
|
168
168
|
}
|
|
169
169
|
|
|
@@ -270,7 +270,7 @@ fn propose_ownership_transfer_initiate_and_accept() {
|
|
|
270
270
|
}]);
|
|
271
271
|
client.propose_ownership_transfer(&new_owner, &ttl);
|
|
272
272
|
|
|
273
|
-
|
|
273
|
+
assert_eq_event(
|
|
274
274
|
&env,
|
|
275
275
|
&contract,
|
|
276
276
|
OwnershipTransferring { old_owner: owner.clone(), new_owner: new_owner.clone(), ttl },
|
|
@@ -290,7 +290,7 @@ fn propose_ownership_transfer_initiate_and_accept() {
|
|
|
290
290
|
}]);
|
|
291
291
|
client.accept_ownership();
|
|
292
292
|
|
|
293
|
-
|
|
293
|
+
assert_eq_event(&env, &contract, OwnershipTransferred { old_owner: owner, new_owner: new_owner.clone() });
|
|
294
294
|
assert_eq!(client.owner(), Some(new_owner)); // Now new owner
|
|
295
295
|
assert_eq!(client.pending_owner(), None);
|
|
296
296
|
}
|
|
@@ -564,7 +564,7 @@ fn renounce_ownership_with_event() {
|
|
|
564
564
|
}]);
|
|
565
565
|
client.renounce_ownership();
|
|
566
566
|
|
|
567
|
-
|
|
567
|
+
assert_eq_event(&env, &contract, OwnershipRenounced { old_owner: owner });
|
|
568
568
|
assert_eq!(client.owner(), None);
|
|
569
569
|
}
|
|
570
570
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
use crate::testing_utils::{
|
|
2
|
-
use soroban_sdk::{contract, contractevent, contractimpl, testutils::Address as _, Address, Env
|
|
1
|
+
use crate::testing_utils::{assert_contains_event, assert_contains_events, assert_eq_event, assert_eq_events};
|
|
2
|
+
use soroban_sdk::{contract, contractevent, contractimpl, testutils::Address as _, Address, Env};
|
|
3
3
|
|
|
4
4
|
// ============================================
|
|
5
5
|
// Test Fixtures
|
|
@@ -78,7 +78,7 @@ impl TestingUtilsContract {
|
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
// ============================================
|
|
81
|
-
//
|
|
81
|
+
// assert_eq_event
|
|
82
82
|
// ============================================
|
|
83
83
|
|
|
84
84
|
// Basic functionality
|
|
@@ -91,7 +91,7 @@ fn test_assert_event_found() {
|
|
|
91
91
|
|
|
92
92
|
client.emit_event1(&42);
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
assert_eq_event(&env, &contract_id, TestEvent1 { value: 42 });
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
#[test]
|
|
@@ -102,7 +102,7 @@ fn test_assert_event_with_multiple_fields() {
|
|
|
102
102
|
|
|
103
103
|
client.emit_event2(&123, &456);
|
|
104
104
|
|
|
105
|
-
|
|
105
|
+
assert_eq_event(&env, &contract_id, TestEvent2 { name: 123, count: 456 });
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
#[test]
|
|
@@ -114,7 +114,7 @@ fn test_assert_event_with_address() {
|
|
|
114
114
|
let addr = Address::generate(&env);
|
|
115
115
|
client.emit_event3(&addr);
|
|
116
116
|
|
|
117
|
-
|
|
117
|
+
assert_eq_event(&env, &contract_id, TestEvent3 { address: addr });
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
#[test]
|
|
@@ -125,8 +125,8 @@ fn test_assert_event_among_multiple() {
|
|
|
125
125
|
|
|
126
126
|
client.emit_multiple_events(&10, &20);
|
|
127
127
|
|
|
128
|
-
|
|
129
|
-
|
|
128
|
+
assert_contains_event(&env, &contract_id, TestEvent1 { value: 10 });
|
|
129
|
+
assert_contains_event(&env, &contract_id, TestEvent1 { value: 20 });
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
// Edge cases
|
|
@@ -139,7 +139,7 @@ fn test_assert_event_finds_first_matching_event() {
|
|
|
139
139
|
|
|
140
140
|
client.emit_multiple_events(&42, &42);
|
|
141
141
|
|
|
142
|
-
|
|
142
|
+
assert_contains_event(&env, &contract_id, TestEvent1 { value: 42 });
|
|
143
143
|
}
|
|
144
144
|
|
|
145
145
|
#[test]
|
|
@@ -151,23 +151,23 @@ fn test_assert_event_finds_correct_event_among_many() {
|
|
|
151
151
|
// Use single contract call that emits all events (events don't accumulate across calls)
|
|
152
152
|
client.emit_mixed_four_events(&1, &100, &200, &2, &3);
|
|
153
153
|
|
|
154
|
-
|
|
155
|
-
|
|
154
|
+
assert_contains_event(&env, &contract_id, TestEvent1 { value: 2 });
|
|
155
|
+
assert_contains_event(&env, &contract_id, TestEvent2 { name: 100, count: 200 });
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
// Error cases
|
|
159
159
|
|
|
160
160
|
#[test]
|
|
161
|
-
#[should_panic(expected = "Expected
|
|
161
|
+
#[should_panic(expected = "Expected exactly one event")]
|
|
162
162
|
fn test_assert_event_no_events_emitted() {
|
|
163
163
|
let env = Env::default();
|
|
164
164
|
let contract_id = env.register(TestingUtilsContract, ());
|
|
165
165
|
|
|
166
|
-
|
|
166
|
+
assert_eq_event(&env, &contract_id, TestEvent1 { value: 42 });
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
#[test]
|
|
170
|
-
#[should_panic(expected = "Expected
|
|
170
|
+
#[should_panic(expected = "Expected exactly one event")]
|
|
171
171
|
fn test_assert_event_not_found() {
|
|
172
172
|
let env = Env::default();
|
|
173
173
|
let contract_id = env.register(TestingUtilsContract, ());
|
|
@@ -175,11 +175,11 @@ fn test_assert_event_not_found() {
|
|
|
175
175
|
|
|
176
176
|
client.emit_event1(&42);
|
|
177
177
|
|
|
178
|
-
|
|
178
|
+
assert_eq_event(&env, &contract_id, TestEvent1 { value: 100 });
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
#[test]
|
|
182
|
-
#[should_panic(expected = "Expected
|
|
182
|
+
#[should_panic(expected = "Expected exactly one event")]
|
|
183
183
|
fn test_assert_event_wrong_contract() {
|
|
184
184
|
let env = Env::default();
|
|
185
185
|
let contract_id = env.register(TestingUtilsContract, ());
|
|
@@ -188,11 +188,11 @@ fn test_assert_event_wrong_contract() {
|
|
|
188
188
|
|
|
189
189
|
client.emit_event1(&42);
|
|
190
190
|
|
|
191
|
-
|
|
191
|
+
assert_eq_event(&env, &other_contract_id, TestEvent1 { value: 42 });
|
|
192
192
|
}
|
|
193
193
|
|
|
194
194
|
#[test]
|
|
195
|
-
#[should_panic(expected = "Expected
|
|
195
|
+
#[should_panic(expected = "Expected exactly one event")]
|
|
196
196
|
fn test_assert_event_topics_length_mismatch() {
|
|
197
197
|
let env = Env::default();
|
|
198
198
|
let contract_id = env.register(TestingUtilsContract, ());
|
|
@@ -200,11 +200,11 @@ fn test_assert_event_topics_length_mismatch() {
|
|
|
200
200
|
|
|
201
201
|
client.emit_event1(&42);
|
|
202
202
|
|
|
203
|
-
|
|
203
|
+
assert_eq_event(&env, &contract_id, TestEvent2 { name: 42, count: 0 });
|
|
204
204
|
}
|
|
205
205
|
|
|
206
206
|
#[test]
|
|
207
|
-
#[should_panic(expected = "Expected
|
|
207
|
+
#[should_panic(expected = "Expected exactly one event")]
|
|
208
208
|
fn test_assert_event_data_mismatch() {
|
|
209
209
|
let env = Env::default();
|
|
210
210
|
let contract_id = env.register(TestingUtilsContract, ());
|
|
@@ -212,11 +212,11 @@ fn test_assert_event_data_mismatch() {
|
|
|
212
212
|
|
|
213
213
|
client.emit_event2(&123, &456);
|
|
214
214
|
|
|
215
|
-
|
|
215
|
+
assert_eq_event(&env, &contract_id, TestEvent2 { name: 123, count: 789 });
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
// ============================================
|
|
219
|
-
//
|
|
219
|
+
// assert_eq_events
|
|
220
220
|
// ============================================
|
|
221
221
|
|
|
222
222
|
// Basic functionality
|
|
@@ -229,7 +229,7 @@ fn test_assert_events_single() {
|
|
|
229
229
|
|
|
230
230
|
client.emit_event1(&42);
|
|
231
231
|
|
|
232
|
-
|
|
232
|
+
assert_eq_events(&env, &contract_id, &[&TestEvent1 { value: 42 }]);
|
|
233
233
|
}
|
|
234
234
|
|
|
235
235
|
#[test]
|
|
@@ -240,11 +240,7 @@ fn test_assert_events_multiple_same_type() {
|
|
|
240
240
|
|
|
241
241
|
client.emit_multiple_events(&10, &20);
|
|
242
242
|
|
|
243
|
-
|
|
244
|
-
&env,
|
|
245
|
-
&contract_id,
|
|
246
|
-
&[TestEvent1 { value: 10 }.expected(&env), TestEvent1 { value: 20 }.expected(&env)],
|
|
247
|
-
);
|
|
243
|
+
assert_eq_events(&env, &contract_id, &[&TestEvent1 { value: 10 }, &TestEvent1 { value: 20 }]);
|
|
248
244
|
}
|
|
249
245
|
|
|
250
246
|
#[test]
|
|
@@ -255,11 +251,7 @@ fn test_assert_events_multiple_different_types() {
|
|
|
255
251
|
|
|
256
252
|
client.emit_both_events(&42, &123, &456);
|
|
257
253
|
|
|
258
|
-
|
|
259
|
-
&env,
|
|
260
|
-
&contract_id,
|
|
261
|
-
&[TestEvent1 { value: 42 }.expected(&env), TestEvent2 { name: 123, count: 456 }.expected(&env)],
|
|
262
|
-
);
|
|
254
|
+
assert_eq_events(&env, &contract_id, &[&TestEvent1 { value: 42 }, &TestEvent2 { name: 123, count: 456 }]);
|
|
263
255
|
}
|
|
264
256
|
|
|
265
257
|
#[test]
|
|
@@ -270,11 +262,7 @@ fn test_assert_events_order_independent() {
|
|
|
270
262
|
|
|
271
263
|
client.emit_both_events(&42, &123, &456);
|
|
272
264
|
|
|
273
|
-
|
|
274
|
-
&env,
|
|
275
|
-
&contract_id,
|
|
276
|
-
&[TestEvent2 { name: 123, count: 456 }.expected(&env), TestEvent1 { value: 42 }.expected(&env)],
|
|
277
|
-
);
|
|
265
|
+
assert_eq_events(&env, &contract_id, &[&TestEvent1 { value: 42 }, &TestEvent2 { name: 123, count: 456 }]);
|
|
278
266
|
}
|
|
279
267
|
|
|
280
268
|
#[test]
|
|
@@ -282,7 +270,7 @@ fn test_assert_events_empty_list() {
|
|
|
282
270
|
let env = Env::default();
|
|
283
271
|
let contract_id = env.register(TestingUtilsContract, ());
|
|
284
272
|
|
|
285
|
-
|
|
273
|
+
assert_eq_events(&env, &contract_id, &[]);
|
|
286
274
|
}
|
|
287
275
|
|
|
288
276
|
#[test]
|
|
@@ -293,11 +281,7 @@ fn test_assert_events_with_duplicates() {
|
|
|
293
281
|
|
|
294
282
|
client.emit_multiple_events(&42, &42);
|
|
295
283
|
|
|
296
|
-
|
|
297
|
-
&env,
|
|
298
|
-
&contract_id,
|
|
299
|
-
&[TestEvent1 { value: 42 }.expected(&env), TestEvent1 { value: 42 }.expected(&env)],
|
|
300
|
-
);
|
|
284
|
+
assert_eq_events(&env, &contract_id, &[&TestEvent1 { value: 42 }, &TestEvent1 { value: 42 }]);
|
|
301
285
|
}
|
|
302
286
|
|
|
303
287
|
// Edge cases
|
|
@@ -311,7 +295,7 @@ fn test_assert_events_partial_match() {
|
|
|
311
295
|
// Use single contract call that emits all events (events don't accumulate across calls)
|
|
312
296
|
client.emit_two_plus_event2(&10, &20, &100, &200);
|
|
313
297
|
|
|
314
|
-
|
|
298
|
+
assert_contains_events(&env, &contract_id, &[&TestEvent1 { value: 10 }]);
|
|
315
299
|
}
|
|
316
300
|
|
|
317
301
|
#[test]
|
|
@@ -323,14 +307,10 @@ fn test_assert_events_three_events() {
|
|
|
323
307
|
// Use single contract call that emits all events (events don't accumulate across calls)
|
|
324
308
|
client.emit_three_events(&1, &2, &3);
|
|
325
309
|
|
|
326
|
-
|
|
310
|
+
assert_eq_events(
|
|
327
311
|
&env,
|
|
328
312
|
&contract_id,
|
|
329
|
-
&[
|
|
330
|
-
TestEvent1 { value: 1 }.expected(&env),
|
|
331
|
-
TestEvent1 { value: 2 }.expected(&env),
|
|
332
|
-
TestEvent1 { value: 3 }.expected(&env),
|
|
333
|
-
],
|
|
313
|
+
&[&TestEvent1 { value: 1 }, &TestEvent1 { value: 2 }, &TestEvent1 { value: 3 }],
|
|
334
314
|
);
|
|
335
315
|
}
|
|
336
316
|
|
|
@@ -345,14 +325,10 @@ fn test_assert_events_mixed_event_types_three() {
|
|
|
345
325
|
// Use single contract call that emits all events (events don't accumulate across calls)
|
|
346
326
|
client.emit_mixed_three_types(&42, &100, &200, &addr);
|
|
347
327
|
|
|
348
|
-
|
|
328
|
+
assert_eq_events(
|
|
349
329
|
&env,
|
|
350
330
|
&contract_id,
|
|
351
|
-
&[
|
|
352
|
-
TestEvent3 { address: addr.clone() }.expected(&env),
|
|
353
|
-
TestEvent1 { value: 42 }.expected(&env),
|
|
354
|
-
TestEvent2 { name: 100, count: 200 }.expected(&env),
|
|
355
|
-
],
|
|
331
|
+
&[&TestEvent1 { value: 42 }, &TestEvent2 { name: 100, count: 200 }, &TestEvent3 { address: addr.clone() }],
|
|
356
332
|
);
|
|
357
333
|
}
|
|
358
334
|
|
|
@@ -368,21 +344,17 @@ fn test_assert_events_from_specific_contract_ignores_others() {
|
|
|
368
344
|
client1.emit_multiple_events(&10, &30);
|
|
369
345
|
|
|
370
346
|
// Assert events from contract1 are found when using contract1's address
|
|
371
|
-
|
|
372
|
-
&env,
|
|
373
|
-
&contract_id1,
|
|
374
|
-
&[TestEvent1 { value: 10 }.expected(&env), TestEvent1 { value: 30 }.expected(&env)],
|
|
375
|
-
);
|
|
347
|
+
assert_eq_events(&env, &contract_id1, &[&TestEvent1 { value: 10 }, &TestEvent1 { value: 30 }]);
|
|
376
348
|
|
|
377
349
|
// Verify that using contract2's address doesn't match contract1's events
|
|
378
350
|
// (this tests the filtering logic - events should not be found for wrong contract)
|
|
379
|
-
|
|
351
|
+
assert_contains_events(&env, &contract_id2, &[]);
|
|
380
352
|
}
|
|
381
353
|
|
|
382
354
|
// Error cases
|
|
383
355
|
|
|
384
356
|
#[test]
|
|
385
|
-
#[should_panic(expected = "Expected
|
|
357
|
+
#[should_panic(expected = "Expected events to match exactly")]
|
|
386
358
|
fn test_assert_events_first_not_found() {
|
|
387
359
|
let env = Env::default();
|
|
388
360
|
let contract_id = env.register(TestingUtilsContract, ());
|
|
@@ -390,11 +362,11 @@ fn test_assert_events_first_not_found() {
|
|
|
390
362
|
|
|
391
363
|
client.emit_event1(&42);
|
|
392
364
|
|
|
393
|
-
|
|
365
|
+
assert_eq_events(&env, &contract_id, &[&TestEvent1 { value: 100 }]);
|
|
394
366
|
}
|
|
395
367
|
|
|
396
368
|
#[test]
|
|
397
|
-
#[should_panic(expected = "Expected
|
|
369
|
+
#[should_panic(expected = "Expected events to match exactly")]
|
|
398
370
|
fn test_assert_events_second_not_found() {
|
|
399
371
|
let env = Env::default();
|
|
400
372
|
let contract_id = env.register(TestingUtilsContract, ());
|
|
@@ -402,15 +374,11 @@ fn test_assert_events_second_not_found() {
|
|
|
402
374
|
|
|
403
375
|
client.emit_event1(&42);
|
|
404
376
|
|
|
405
|
-
|
|
406
|
-
&env,
|
|
407
|
-
&contract_id,
|
|
408
|
-
&[TestEvent1 { value: 42 }.expected(&env), TestEvent1 { value: 100 }.expected(&env)],
|
|
409
|
-
);
|
|
377
|
+
assert_eq_events(&env, &contract_id, &[&TestEvent1 { value: 42 }, &TestEvent1 { value: 100 }]);
|
|
410
378
|
}
|
|
411
379
|
|
|
412
380
|
#[test]
|
|
413
|
-
#[should_panic(expected = "Expected
|
|
381
|
+
#[should_panic(expected = "Expected events to match exactly")]
|
|
414
382
|
fn test_assert_events_third_not_found() {
|
|
415
383
|
let env = Env::default();
|
|
416
384
|
let contract_id = env.register(TestingUtilsContract, ());
|
|
@@ -418,19 +386,15 @@ fn test_assert_events_third_not_found() {
|
|
|
418
386
|
|
|
419
387
|
client.emit_multiple_events(&10, &20);
|
|
420
388
|
|
|
421
|
-
|
|
389
|
+
assert_eq_events(
|
|
422
390
|
&env,
|
|
423
391
|
&contract_id,
|
|
424
|
-
&[
|
|
425
|
-
TestEvent1 { value: 10 }.expected(&env),
|
|
426
|
-
TestEvent1 { value: 20 }.expected(&env),
|
|
427
|
-
TestEvent1 { value: 30 }.expected(&env),
|
|
428
|
-
],
|
|
392
|
+
&[&TestEvent1 { value: 10 }, &TestEvent1 { value: 20 }, &TestEvent1 { value: 30 }],
|
|
429
393
|
);
|
|
430
394
|
}
|
|
431
395
|
|
|
432
396
|
#[test]
|
|
433
|
-
#[should_panic(expected = "Expected
|
|
397
|
+
#[should_panic(expected = "Expected events to match exactly")]
|
|
434
398
|
fn test_assert_events_duplicate_expected_but_not_emitted() {
|
|
435
399
|
let env = Env::default();
|
|
436
400
|
let contract_id = env.register(TestingUtilsContract, ());
|
|
@@ -438,24 +402,20 @@ fn test_assert_events_duplicate_expected_but_not_emitted() {
|
|
|
438
402
|
|
|
439
403
|
client.emit_event1(&42);
|
|
440
404
|
|
|
441
|
-
|
|
442
|
-
&env,
|
|
443
|
-
&contract_id,
|
|
444
|
-
&[TestEvent1 { value: 42 }.expected(&env), TestEvent1 { value: 42 }.expected(&env)],
|
|
445
|
-
);
|
|
405
|
+
assert_eq_events(&env, &contract_id, &[&TestEvent1 { value: 42 }, &TestEvent1 { value: 42 }]);
|
|
446
406
|
}
|
|
447
407
|
|
|
448
408
|
#[test]
|
|
449
|
-
#[should_panic(expected = "Expected
|
|
409
|
+
#[should_panic(expected = "Expected events to match exactly")]
|
|
450
410
|
fn test_assert_events_no_events_emitted() {
|
|
451
411
|
let env = Env::default();
|
|
452
412
|
let contract_id = env.register(TestingUtilsContract, ());
|
|
453
413
|
|
|
454
|
-
|
|
414
|
+
assert_eq_events(&env, &contract_id, &[&TestEvent1 { value: 42 }]);
|
|
455
415
|
}
|
|
456
416
|
|
|
457
417
|
#[test]
|
|
458
|
-
#[should_panic(expected = "Expected
|
|
418
|
+
#[should_panic(expected = "Expected events to match exactly")]
|
|
459
419
|
fn test_assert_events_wrong_contract() {
|
|
460
420
|
let env = Env::default();
|
|
461
421
|
let contract_id1 = env.register(TestingUtilsContract, ());
|
|
@@ -464,27 +424,11 @@ fn test_assert_events_wrong_contract() {
|
|
|
464
424
|
|
|
465
425
|
client1.emit_event1(&42);
|
|
466
426
|
|
|
467
|
-
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
#[test]
|
|
471
|
-
#[should_panic(expected = "Expected event #0 not found")]
|
|
472
|
-
fn test_assert_events_topics_length_mismatch() {
|
|
473
|
-
let env = Env::default();
|
|
474
|
-
let contract_id = env.register(TestingUtilsContract, ());
|
|
475
|
-
let client = TestingUtilsContractClient::new(&env, &contract_id);
|
|
476
|
-
|
|
477
|
-
client.emit_event1(&42);
|
|
478
|
-
|
|
479
|
-
let empty_topics: Vec<Val> = Vec::new(&env);
|
|
480
|
-
let data: Val = 42u32.into_val(&env);
|
|
481
|
-
let expected_with_empty_topics = ExpectedEvent { topics: empty_topics, data };
|
|
482
|
-
|
|
483
|
-
assert_events(&env, &contract_id, &[expected_with_empty_topics]);
|
|
427
|
+
assert_eq_events(&env, &contract_id2, &[&TestEvent1 { value: 42 }]);
|
|
484
428
|
}
|
|
485
429
|
|
|
486
430
|
#[test]
|
|
487
|
-
#[should_panic(expected = "Expected
|
|
431
|
+
#[should_panic(expected = "Expected events to match exactly")]
|
|
488
432
|
fn test_assert_events_data_mismatch() {
|
|
489
433
|
let env = Env::default();
|
|
490
434
|
let contract_id = env.register(TestingUtilsContract, ());
|
|
@@ -492,66 +436,5 @@ fn test_assert_events_data_mismatch() {
|
|
|
492
436
|
|
|
493
437
|
client.emit_event2(&100, &200);
|
|
494
438
|
|
|
495
|
-
|
|
496
|
-
}
|
|
497
|
-
|
|
498
|
-
// ============================================
|
|
499
|
-
// ExpectedEvent & IntoExpectedEvent
|
|
500
|
-
// ============================================
|
|
501
|
-
|
|
502
|
-
#[test]
|
|
503
|
-
fn test_into_expected_event() {
|
|
504
|
-
let env = Env::default();
|
|
505
|
-
|
|
506
|
-
let event = TestEvent1 { value: 42 };
|
|
507
|
-
let expected = event.expected(&env);
|
|
508
|
-
|
|
509
|
-
assert!(!expected.topics.is_empty());
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
#[test]
|
|
513
|
-
fn test_into_expected_event_with_multiple_fields() {
|
|
514
|
-
let env = Env::default();
|
|
515
|
-
|
|
516
|
-
let event = TestEvent2 { name: 123, count: 456 };
|
|
517
|
-
let expected = event.expected(&env);
|
|
518
|
-
|
|
519
|
-
assert!(!expected.topics.is_empty());
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
#[test]
|
|
523
|
-
fn test_into_expected_event_with_address() {
|
|
524
|
-
let env = Env::default();
|
|
525
|
-
|
|
526
|
-
let addr = Address::generate(&env);
|
|
527
|
-
let event = TestEvent3 { address: addr };
|
|
528
|
-
let expected = event.expected(&env);
|
|
529
|
-
|
|
530
|
-
assert!(!expected.topics.is_empty());
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
#[test]
|
|
534
|
-
fn test_expected_event_struct() {
|
|
535
|
-
let env = Env::default();
|
|
536
|
-
|
|
537
|
-
let topics: Vec<Val> = Vec::new(&env);
|
|
538
|
-
let data: Val = 42u32.into_val(&env);
|
|
539
|
-
|
|
540
|
-
let expected = ExpectedEvent { topics, data };
|
|
541
|
-
|
|
542
|
-
assert_eq!(expected.topics.len(), 0);
|
|
543
|
-
}
|
|
544
|
-
|
|
545
|
-
#[test]
|
|
546
|
-
fn test_expected_event_with_topics() {
|
|
547
|
-
let env = Env::default();
|
|
548
|
-
|
|
549
|
-
let mut topics: Vec<Val> = Vec::new(&env);
|
|
550
|
-
topics.push_back(42u32.into_val(&env));
|
|
551
|
-
topics.push_back(100u64.into_val(&env));
|
|
552
|
-
let data: Val = 999u32.into_val(&env);
|
|
553
|
-
|
|
554
|
-
let expected = ExpectedEvent { topics, data };
|
|
555
|
-
|
|
556
|
-
assert_eq!(expected.topics.len(), 2);
|
|
439
|
+
assert_eq_events(&env, &contract_id, &[&TestEvent2 { name: 100, count: 999 }]);
|
|
557
440
|
}
|
|
@@ -5,7 +5,7 @@ use crate::{
|
|
|
5
5
|
errors::{OwnableError, TtlConfigurableError},
|
|
6
6
|
option_ext::OptionExt,
|
|
7
7
|
ownable::{Ownable, OwnableInitializer},
|
|
8
|
-
testing_utils::
|
|
8
|
+
testing_utils::assert_eq_event,
|
|
9
9
|
ttl_configurable::{
|
|
10
10
|
TtlConfig, TtlConfigStorage, TtlConfigsFrozen, TtlConfigsSet, TtlConfigurable, LEDGERS_PER_DAY, MAX_TTL,
|
|
11
11
|
},
|
|
@@ -314,7 +314,7 @@ fn test_default_ttl_configurable_set_all() {
|
|
|
314
314
|
let persistent = Some(persistent_cfg);
|
|
315
315
|
owner_set_ttl_configs(&env, &contract_id, &owner, &client, &instance, &persistent);
|
|
316
316
|
|
|
317
|
-
|
|
317
|
+
assert_eq_event(&env, &contract_id, TtlConfigsSet { instance, persistent });
|
|
318
318
|
|
|
319
319
|
let (instance, persistent) = client.configurable_ttl_configs();
|
|
320
320
|
assert_eq!(instance, Some(instance_cfg));
|
|
@@ -331,7 +331,7 @@ fn test_default_ttl_configurable_set_partial() {
|
|
|
331
331
|
let instance = Some(instance_cfg);
|
|
332
332
|
let persistent = None;
|
|
333
333
|
owner_set_ttl_configs(&env, &contract_id, &owner, &client, &instance, &persistent);
|
|
334
|
-
|
|
334
|
+
assert_eq_event(&env, &contract_id, TtlConfigsSet { instance, persistent });
|
|
335
335
|
|
|
336
336
|
let (instance, persistent) = client.configurable_ttl_configs();
|
|
337
337
|
assert_eq!(instance, Some(instance_cfg));
|
|
@@ -375,7 +375,7 @@ fn test_default_ttl_configurable_freeze() {
|
|
|
375
375
|
|
|
376
376
|
assert!(!client.is_ttl_configs_frozen());
|
|
377
377
|
owner_freeze_ttl_configs(&env, &contract_id, &owner, &client);
|
|
378
|
-
|
|
378
|
+
assert_eq_event(&env, &contract_id, TtlConfigsFrozen {});
|
|
379
379
|
assert!(client.is_ttl_configs_frozen());
|
|
380
380
|
}
|
|
381
381
|
|
|
@@ -398,7 +398,7 @@ fn test_default_ttl_configurable_freeze_when_already_frozen() {
|
|
|
398
398
|
let (env, contract_id, owner, client) = setup_contract();
|
|
399
399
|
|
|
400
400
|
owner_freeze_ttl_configs(&env, &contract_id, &owner, &client);
|
|
401
|
-
|
|
401
|
+
assert_eq_event(&env, &contract_id, TtlConfigsFrozen {});
|
|
402
402
|
owner_freeze_ttl_configs(&env, &contract_id, &owner, &client);
|
|
403
403
|
}
|
|
404
404
|
|