@layerzerolabs/protocol-stellar-v2 0.2.122 → 0.2.123

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.
Files changed (34) hide show
  1. package/endpoint-v2/src/tests/endpoint_v2/pay_messaging_fees.rs +7 -1
  2. package/endpoint-v2/src/tests/endpoint_v2/quote.rs +2 -2
  3. package/endpoint-v2/src/tests/endpoint_v2/ttl_config.rs +4 -1
  4. package/endpoint-v2/src/tests/endpoint_v2/verifiable.rs +0 -1
  5. package/endpoint-v2/src/tests/message_lib_manager/require_receive_lib_for_eid.rs +9 -3
  6. package/endpoint-v2/src/tests/message_lib_manager/require_send_lib_for_eid.rs +6 -2
  7. package/endpoint-v2/src/tests/message_lib_manager/require_supported_eid.rs +6 -2
  8. package/endpoint-v2/src/tests/messaging_channel/clear_payload.rs +1 -4
  9. package/endpoint-v2/src/tests/messaging_channel/inbound.rs +1 -4
  10. package/endpoint-v2/src/tests/messaging_channel/mod.rs +1 -1
  11. package/endpoint-v2/src/tests/messaging_channel/nilify.rs +3 -12
  12. package/endpoint-v2/src/tests/messaging_channel/pending_inbound_nonces.rs +0 -1
  13. package/endpoint-v2/src/tests/messaging_composer/lz_compose_alert.rs +1 -0
  14. package/message-libs/uln-302/src/tests/send_uln302/send.rs +20 -4
  15. package/message-libs/uln-302/src/tests/uln302/get_app_receive_uln_config.rs +2 -2
  16. package/package.json +8 -8
  17. package/rustfmt.toml +8 -11
  18. package/upgrader/src/tests/mod.rs +1 -1
  19. package/workers/dvn/src/tests/auth.rs +12 -60
  20. package/workers/executor/src/auth.rs +3 -8
  21. package/workers/executor/src/storage.rs +1 -1
  22. package/workers/executor/src/tests/auth.rs +6 -1
  23. package/workers/executor/src/tests/executor.rs +5 -5
  24. package/workers/executor/src/tests/setup.rs +1 -2
  25. package/workers/executor-fee-lib/src/tests/executor_fee_lib.rs +5 -5
  26. package/workers/executor-fee-lib/src/tests/executor_option.rs +2 -2
  27. package/workers/executor-helper/src/executor_helper.rs +0 -1
  28. package/workers/executor-helper/src/tests/executor_helper.rs +0 -1
  29. package/workers/price-feed/src/tests/price_feed.rs +11 -11
  30. package/workers/worker/src/tests/worker.rs +27 -27
  31. package/docs/error-spec.md +0 -55
  32. package/docs/layerzero-v2-on-stellar.md +0 -511
  33. package/docs/oapp-guide.md +0 -5
  34. package/docs/oft-guide.md +0 -5
@@ -23,7 +23,13 @@ fn pay_messaging_fees(
23
23
  let env = &context.env;
24
24
  let endpoint_addr = &context.endpoint_client.address;
25
25
  env.as_contract(endpoint_addr, || {
26
- EndpointV2::pay_messaging_fees_for_test(env, pay_in_zro, native_fee_recipients, zro_fee_recipients, refund_address)
26
+ EndpointV2::pay_messaging_fees_for_test(
27
+ env,
28
+ pay_in_zro,
29
+ native_fee_recipients,
30
+ zro_fee_recipients,
31
+ refund_address,
32
+ )
27
33
  })
28
34
  }
29
35
 
@@ -304,8 +304,8 @@ fn test_quote_with_large_message() {
304
304
 
305
305
  // Create a large message (1024 bytes)
306
306
  let mut large_message_data = [0u8; 1024];
307
- for i in 0..1024 {
308
- large_message_data[i] = (i % 256) as u8;
307
+ for (i, byte) in large_message_data.iter_mut().enumerate() {
308
+ *byte = (i % 256) as u8;
309
309
  }
310
310
  let large_message = Bytes::from_array(env, &large_message_data);
311
311
 
@@ -141,7 +141,10 @@ fn test_freeze_ttl_configs_already_frozen() {
141
141
 
142
142
  // Try to freeze again
143
143
  context.mock_owner_auth("freeze_ttl_configs", ());
144
- assert_eq!(endpoint.try_freeze_ttl_configs().unwrap_err().unwrap(), TtlConfigurableError::TtlConfigAlreadyFrozen.into());
144
+ assert_eq!(
145
+ endpoint.try_freeze_ttl_configs().unwrap_err().unwrap(),
146
+ TtlConfigurableError::TtlConfigAlreadyFrozen.into()
147
+ );
145
148
  }
146
149
 
147
150
  #[test]
@@ -146,7 +146,6 @@ fn test_verifiable_upper_bound_is_enforced_when_inbound_nonce_nonzero() {
146
146
  assert!(!endpoint_client.verifiable(&too_far, &receiver));
147
147
  }
148
148
 
149
-
150
149
  #[test]
151
150
  fn test_verifiable_true_when_payload_hash_exists_even_if_nonce_outside_window() {
152
151
  let context = setup();
@@ -11,7 +11,9 @@ fn test_require_receive_lib_for_eid_unregistered_lib() {
11
11
  let endpoint_client = &context.endpoint_client;
12
12
 
13
13
  let lib = context.setup_mock_message_lib(MessageLibType::Receive, vec![env, context.eid]);
14
- env.as_contract(&endpoint_client.address, || EndpointV2::require_receive_lib_for_eid_for_test(env, &lib, context.eid));
14
+ env.as_contract(&endpoint_client.address, || {
15
+ EndpointV2::require_receive_lib_for_eid_for_test(env, &lib, context.eid)
16
+ });
15
17
  }
16
18
 
17
19
  #[test]
@@ -24,7 +26,9 @@ fn test_require_receive_lib_for_eid_wrong_lib_type() {
24
26
  let lib = context.setup_mock_message_lib(MessageLibType::Send, vec![env, context.eid]);
25
27
  context.register_library_with_auth(&lib);
26
28
 
27
- env.as_contract(&endpoint_client.address, || EndpointV2::require_receive_lib_for_eid_for_test(env, &lib, context.eid));
29
+ env.as_contract(&endpoint_client.address, || {
30
+ EndpointV2::require_receive_lib_for_eid_for_test(env, &lib, context.eid)
31
+ });
28
32
  }
29
33
 
30
34
  #[test]
@@ -38,7 +42,9 @@ fn test_require_receive_lib_for_eid_unsupported_eid() {
38
42
  let lib = context.setup_mock_message_lib(MessageLibType::Receive, vec![env, context.eid]);
39
43
  context.register_library_with_auth(&lib);
40
44
 
41
- env.as_contract(&endpoint_client.address, || EndpointV2::require_receive_lib_for_eid_for_test(env, &lib, unsupported_eid));
45
+ env.as_contract(&endpoint_client.address, || {
46
+ EndpointV2::require_receive_lib_for_eid_for_test(env, &lib, unsupported_eid)
47
+ });
42
48
  }
43
49
 
44
50
  #[test]
@@ -38,7 +38,9 @@ fn test_require_send_lib_for_eid_unsupported_eid() {
38
38
  let lib = context.setup_mock_message_lib(MessageLibType::Send, vec![env, context.eid]);
39
39
  context.register_library_with_auth(&lib);
40
40
 
41
- env.as_contract(&endpoint_client.address, || EndpointV2::require_send_lib_for_eid_for_test(env, &lib, unsupported_eid));
41
+ env.as_contract(&endpoint_client.address, || {
42
+ EndpointV2::require_send_lib_for_eid_for_test(env, &lib, unsupported_eid)
43
+ });
42
44
  }
43
45
 
44
46
  #[test]
@@ -49,7 +51,9 @@ fn test_require_send_lib_for_eid_success_for_send_and_send_and_receive() {
49
51
 
50
52
  let send_lib = context.setup_mock_message_lib(MessageLibType::Send, vec![env, context.eid]);
51
53
  context.register_library_with_auth(&send_lib);
52
- env.as_contract(&endpoint_client.address, || EndpointV2::require_send_lib_for_eid_for_test(env, &send_lib, context.eid));
54
+ env.as_contract(&endpoint_client.address, || {
55
+ EndpointV2::require_send_lib_for_eid_for_test(env, &send_lib, context.eid)
56
+ });
53
57
 
54
58
  let send_and_receive = context.setup_mock_message_lib(MessageLibType::SendAndReceive, vec![env, context.eid]);
55
59
  context.register_library_with_auth(&send_and_receive);
@@ -10,7 +10,9 @@ fn test_require_supported_eid_with_supported() {
10
10
  let endpoint_client = &context.endpoint_client;
11
11
 
12
12
  let send_lib = context.setup_mock_message_lib(MessageLibType::Send, vec![env, context.eid]);
13
- env.as_contract(&endpoint_client.address, || EndpointV2::require_supported_eid_for_test(env, &send_lib, context.eid));
13
+ env.as_contract(&endpoint_client.address, || {
14
+ EndpointV2::require_supported_eid_for_test(env, &send_lib, context.eid)
15
+ });
14
16
  }
15
17
 
16
18
  // The require_supported_eid rejects when the library does not support the EID
@@ -23,7 +25,9 @@ fn test_require_supported_eid_with_unsupported() {
23
25
 
24
26
  let unsupported_eid = context.eid + 1;
25
27
  let send_lib = context.setup_mock_message_lib(MessageLibType::Send, vec![env, context.eid]);
26
- env.as_contract(&endpoint_client.address, || EndpointV2::require_supported_eid_for_test(env, &send_lib, unsupported_eid));
28
+ env.as_contract(&endpoint_client.address, || {
29
+ EndpointV2::require_supported_eid_for_test(env, &send_lib, unsupported_eid)
30
+ });
27
31
  }
28
32
 
29
33
  // The require_supported_eid panics if the library address has no deployed contract
@@ -239,10 +239,7 @@ fn test_clear_payload_missing_intermediate_nonce() {
239
239
 
240
240
  // inbound_nonce should be 1 (nonce 2 is missing), and nonce 3 should be pending.
241
241
  assert_eq!(endpoint_client.inbound_nonce(&receiver, &src_eid, &sender), 1);
242
- assert_eq!(
243
- endpoint_client.pending_inbound_nonces(&receiver, &src_eid, &sender),
244
- soroban_sdk::vec![env, 3u64]
245
- );
242
+ assert_eq!(endpoint_client.pending_inbound_nonces(&receiver, &src_eid, &sender), soroban_sdk::vec![env, 3u64]);
246
243
 
247
244
  // Clearing nonce 1 succeeds.
248
245
  clear_payload(&context, &receiver, src_eid, &sender, 1, &payload1);
@@ -191,10 +191,7 @@ fn test_inbound_accepts_upper_bound_when_inbound_nonce_nonzero() {
191
191
 
192
192
  // Nonce 356 is not consecutive to 100, so it stays pending and inbound_nonce does not advance.
193
193
  assert_eq!(endpoint_client.inbound_nonce(&receiver, &src_eid, &sender), 100);
194
- assert_eq!(
195
- endpoint_client.pending_inbound_nonces(&receiver, &src_eid, &sender),
196
- soroban_sdk::vec![env, 356u64]
197
- );
194
+ assert_eq!(endpoint_client.pending_inbound_nonces(&receiver, &src_eid, &sender), soroban_sdk::vec![env, 356u64]);
198
195
  assert_eq!(endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &356u64), Some(hash));
199
196
  }
200
197
 
@@ -4,9 +4,9 @@ mod inbound;
4
4
  mod inbound_nonce;
5
5
  mod inbound_payload_hash;
6
6
  mod insert_and_drain_pending_nonces;
7
- mod pending_inbound_nonces;
8
7
  mod next_guid;
9
8
  mod nilify;
10
9
  mod outbound;
11
10
  mod outbound_nonce;
11
+ mod pending_inbound_nonces;
12
12
  mod skip;
@@ -193,24 +193,15 @@ fn test_nilify_closes_gap_and_drains_pending_nonces() {
193
193
  });
194
194
 
195
195
  assert_eq!(endpoint_client.inbound_nonce(&receiver, &src_eid, &sender), 1);
196
- assert_eq!(
197
- endpoint_client.pending_inbound_nonces(&receiver, &src_eid, &sender),
198
- soroban_sdk::vec![env, 3u64]
199
- );
196
+ assert_eq!(endpoint_client.pending_inbound_nonces(&receiver, &src_eid, &sender), soroban_sdk::vec![env, 3u64]);
200
197
 
201
198
  // Nilify nonce 2 with None closes the gap and should drain pending to advance inbound nonce to 3.
202
199
  nilify_with_auth(&context, &receiver, &receiver, src_eid, &sender, 2u64, &None);
203
200
 
204
201
  assert_eq!(endpoint_client.inbound_nonce(&receiver, &src_eid, &sender), 3);
205
202
  assert!(endpoint_client.pending_inbound_nonces(&receiver, &src_eid, &sender).is_empty());
206
- assert_eq!(
207
- endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &2u64),
208
- Some(nil_hash(&context))
209
- );
210
- assert_eq!(
211
- endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &3u64),
212
- Some(payload_hash_3)
213
- );
203
+ assert_eq!(endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &2u64), Some(nil_hash(&context)));
204
+ assert_eq!(endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &3u64), Some(payload_hash_3));
214
205
  }
215
206
 
216
207
  // Nilify is allowed when nonce <= inbound_nonce if an `inbound_payload_hash` exists
@@ -108,4 +108,3 @@ fn test_pending_inbound_nonces_isolated_by_path() {
108
108
  assert_eq!(endpoint_client.pending_inbound_nonces(&receiver_a, &src_eid_b, &sender_a), vec![env, 2u64]);
109
109
  assert_eq!(endpoint_client.pending_inbound_nonces(&receiver_a, &src_eid_a, &sender_b), vec![env, 2u64]);
110
110
  }
111
-
@@ -40,6 +40,7 @@ fn default_fixture(env: &Env) -> LzComposeAlertFixture {
40
40
  }
41
41
  }
42
42
 
43
+ #[allow(clippy::too_many_arguments)]
43
44
  fn invoke_lz_compose_alert_with_auth<'a>(
44
45
  context: &TestSetup,
45
46
  endpoint_client: &EndpointV2Client<'a>,
@@ -76,8 +76,16 @@ fn test_send_events_emittance() {
76
76
  &setup.env,
77
77
  &setup.uln302.address,
78
78
  &[
79
- &ExecutorFeePaid { guid: packet.guid.clone(),executor: executor.clone(), fee: native_fee_recipients.get(0).unwrap().clone() },
80
- &DVNFeePaid { guid: packet.guid.clone(),dvns: dvns.slice(0..2).clone(), fees: native_fee_recipients.slice(1..3).clone() },
79
+ &ExecutorFeePaid {
80
+ guid: packet.guid.clone(),
81
+ executor: executor.clone(),
82
+ fee: native_fee_recipients.get(0).unwrap().clone(),
83
+ },
84
+ &DVNFeePaid {
85
+ guid: packet.guid.clone(),
86
+ dvns: dvns.slice(0..2).clone(),
87
+ fees: native_fee_recipients.slice(1..3).clone(),
88
+ },
81
89
  ],
82
90
  );
83
91
 
@@ -164,8 +172,16 @@ fn test_send_events_emittance_with_zro() {
164
172
  &setup.env,
165
173
  &setup.uln302.address,
166
174
  &[
167
- &ExecutorFeePaid { guid: packet.guid.clone(), executor: executor.clone(), fee: native_fee_recipients.get(0).unwrap().clone() },
168
- &DVNFeePaid { guid: packet.guid.clone(), dvns: dvns.slice(0..2).clone(), fees: native_fee_recipients.slice(1..3).clone() },
175
+ &ExecutorFeePaid {
176
+ guid: packet.guid.clone(),
177
+ executor: executor.clone(),
178
+ fee: native_fee_recipients.get(0).unwrap().clone(),
179
+ },
180
+ &DVNFeePaid {
181
+ guid: packet.guid.clone(),
182
+ dvns: dvns.slice(0..2).clone(),
183
+ fees: native_fee_recipients.slice(1..3).clone(),
184
+ },
169
185
  ],
170
186
  );
171
187
 
@@ -34,8 +34,8 @@ fn test_get_oapp_receive_uln_config() {
34
34
  endpoint.set_config(&Address::generate(&env), &oapp, &uln302.address, &params);
35
35
 
36
36
  let oapp_config = uln302.oapp_receive_uln_config(&oapp, &eid).unwrap();
37
- assert_eq!(oapp_config.use_default_confirmations, true);
38
- assert_eq!(oapp_config.use_default_required_dvns, false);
37
+ assert!(oapp_config.use_default_confirmations);
38
+ assert!(!oapp_config.use_default_required_dvns);
39
39
  }
40
40
 
41
41
  #[test]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/protocol-stellar-v2",
3
- "version": "0.2.122",
3
+ "version": "0.2.123",
4
4
  "private": false,
5
5
  "license": "LZBL-1.3",
6
6
  "files": [
@@ -9,19 +9,18 @@
9
9
  "message-libs",
10
10
  "upgrader",
11
11
  "workers",
12
- "docs",
13
12
  "Cargo.toml",
14
13
  "rust-toolchain.toml",
15
14
  "rustfmt.toml",
16
15
  "clippy.toml"
17
16
  ],
18
17
  "dependencies": {
19
- "@layerzerolabs/common-utils-stellar-contracts": "0.2.122",
20
- "@layerzerolabs/common-utils-macros-stellar-contracts": "0.2.122"
18
+ "@layerzerolabs/common-utils-macros-stellar-contracts": "0.2.123",
19
+ "@layerzerolabs/common-utils-stellar-contracts": "0.2.123"
21
20
  },
22
21
  "devDependencies": {
23
- "@layerzerolabs/build-utils-rust": "0.2.122",
24
- "@layerzerolabs/vm-tooling-stellar": "0.2.122"
22
+ "@layerzerolabs/build-utils-rust": "0.2.123",
23
+ "@layerzerolabs/vm-tooling-stellar": "0.2.123"
25
24
  },
26
25
  "publishConfig": {
27
26
  "access": "public",
@@ -46,8 +45,9 @@
46
45
  "build:native": "pnpm build:contracts:native",
47
46
  "clean": "rm -rf ./dependencies ./target ./node_modules",
48
47
  "format": "pnpm exec lz-tool --script \"cargo fmt\" stellar",
49
- "lint": "pnpm resolve-dependencies && pnpm exec lz-tool --script \"cargo clippy -- -D warnings\" stellar",
50
- "lint:fix": "pnpm resolve-dependencies && pnpm exec lz-tool --script \"cargo clippy --fix --allow-dirty --allow-staged && cargo fmt\" stellar",
48
+ "format:check": "pnpm exec lz-tool --script \"cargo fmt -- --check\" stellar",
49
+ "lint": "pnpm resolve-dependencies && pnpm exec lz-tool --script \"cargo fmt -- --check && cargo clippy --all-targets -- -D warnings\" stellar",
50
+ "lint:fix": "pnpm resolve-dependencies && pnpm exec lz-tool --script \"cargo clippy --all-targets --fix --allow-dirty --allow-staged && cargo fmt\" stellar",
51
51
  "resolve-dependencies": "pnpm exec build-utils-rust resolve",
52
52
  "test": "pnpm resolve-dependencies && pnpm exec lz-tool --script \"cargo nextest run\" stellar",
53
53
  "test:snapshot:check": "pnpm exec turbo-snapshot check",
package/rustfmt.toml CHANGED
@@ -1,15 +1,12 @@
1
- format_macro_bodies = true
1
+ # Only stable rustfmt options are kept here: the Stellar docker toolchain runs
2
+ # rustfmt on the stable channel (rust 1.90.0), which silently drops unstable
3
+ # options (they only apply on nightly). Do not re-add unstable options unless the
4
+ # tooling is switched to a pinned nightly (see the Solana packages for that setup).
2
5
  max_width = 120
3
- format_macro_matchers = true
4
- format_strings = true
5
- imports_granularity = "Crate"
6
- match_arm_blocks = false
7
- reorder_impl_items = true
8
- group_imports = "StdExternalCrate"
9
6
  use_field_init_shorthand = true
10
7
  use_small_heuristics = "Max"
11
- wrap_comments = true
12
- format_code_in_doc_comments = true
13
8
 
14
- # most of these are unstable, so we enable them
15
- unstable_features = true
9
+ # style_edition is a stable option honored by the docker toolchain. Pin it to
10
+ # 2021 to match every crate's `edition = "2021"` so formatting stays stable
11
+ # across rustfmt versions (setting it to 2024 would reformat the code).
12
+ style_edition = "2021"
@@ -1 +1 @@
1
- pub mod test_upgrader;
1
+ pub mod test_upgrader;
@@ -6,7 +6,7 @@ use crate::{
6
6
  use ed25519_dalek::{Signer, SigningKey};
7
7
  use rand::thread_rng;
8
8
  use soroban_sdk::{
9
- auth::{ContractContext, Context},
9
+ auth::{Context, ContractContext},
10
10
  testutils::Address as _,
11
11
  vec, Address, BytesN, Env, IntoVal, Symbol, Val, Vec,
12
12
  };
@@ -35,10 +35,7 @@ impl Ed25519KeyPair {
35
35
  }
36
36
 
37
37
  /// Creates a single self-call auth context and matching Call for testing.
38
- fn make_self_call_context(
39
- env: &Env,
40
- contract_id: &soroban_sdk::Address,
41
- ) -> (Vec<Context>, Vec<Call>) {
38
+ fn make_self_call_context(env: &Env, contract_id: &soroban_sdk::Address) -> (Vec<Context>, Vec<Call>) {
42
39
  let fn_name = Symbol::new(env, "set_paused");
43
40
  let args: Vec<Val> = vec![env, true.into_val(env)];
44
41
 
@@ -67,12 +64,7 @@ fn make_upgrade_contexts(
67
64
  let upgrader_ctx = Context::Contract(ContractContext {
68
65
  contract: upgrader_id.clone(),
69
66
  fn_name: Symbol::new(env, "upgrade_and_migrate"),
70
- args: vec![
71
- env,
72
- contract_id.clone().into_val(env),
73
- wasm_hash_val.clone(),
74
- migration_data_val.clone(),
75
- ],
67
+ args: vec![env, contract_id.clone().into_val(env), wasm_hash_val, migration_data_val],
76
68
  });
77
69
  // [1]: upgrade self-call
78
70
  let upgrade_ctx = Context::Contract(ContractContext {
@@ -374,12 +366,7 @@ fn test_check_auth_sender_none_fails_when_admin_required() {
374
366
  let sig = setup.key_pairs[0].sign_bytes(&env, &hash);
375
367
 
376
368
  // Use Sender::None which should fail when admin is required
377
- let tx_auth = TransactionAuthData {
378
- vid: VID,
379
- expiration,
380
- signatures: vec![&env, sig],
381
- sender: Sender::None,
382
- };
369
+ let tx_auth = TransactionAuthData { vid: VID, expiration, signatures: vec![&env, sig], sender: Sender::None };
383
370
 
384
371
  let res = env.try_invoke_contract_check_auth::<DvnError>(
385
372
  &setup.contract_id,
@@ -410,26 +397,15 @@ fn test_check_auth_set_admin_bypasses_admin_verification() {
410
397
 
411
398
  let payload = BytesN::from_array(&env, &[0u8; 32]);
412
399
 
413
- let calls: Vec<Call> = vec![
414
- &env,
415
- Call {
416
- to: setup.contract_id.clone(),
417
- func: Symbol::new(&env, "set_admin"),
418
- args: Vec::new(&env),
419
- },
420
- ];
400
+ let calls: Vec<Call> =
401
+ vec![&env, Call { to: setup.contract_id.clone(), func: Symbol::new(&env, "set_admin"), args: Vec::new(&env) }];
421
402
 
422
403
  let dvn_client = LzDVNClient::new(&env, &setup.contract_id);
423
404
  let hash = dvn_client.hash_call_data(&VID, &expiration, &calls);
424
405
  let sig = setup.key_pairs[0].sign_bytes(&env, &hash);
425
406
 
426
407
  // Use Sender::None - should succeed for set_admin since it bypasses admin verification
427
- let tx_auth = TransactionAuthData {
428
- vid: VID,
429
- expiration,
430
- signatures: vec![&env, sig],
431
- sender: Sender::None,
432
- };
408
+ let tx_auth = TransactionAuthData { vid: VID, expiration, signatures: vec![&env, sig], sender: Sender::None };
433
409
 
434
410
  let res = env.try_invoke_contract_check_auth::<DvnError>(
435
411
  &setup.contract_id,
@@ -599,23 +575,14 @@ fn test_set_upgrader_requires_admin() {
599
575
 
600
576
  let calls: Vec<Call> = vec![
601
577
  &env,
602
- Call {
603
- to: setup.contract_id.clone(),
604
- func: Symbol::new(&env, "set_upgrader"),
605
- args: Vec::new(&env),
606
- },
578
+ Call { to: setup.contract_id.clone(), func: Symbol::new(&env, "set_upgrader"), args: Vec::new(&env) },
607
579
  ];
608
580
 
609
581
  let dvn_client = LzDVNClient::new(&env, &setup.contract_id);
610
582
  let hash = dvn_client.hash_call_data(&VID, &expiration, &calls);
611
583
  let sig = setup.key_pairs[0].sign_bytes(&env, &hash);
612
584
 
613
- let tx_auth = TransactionAuthData {
614
- vid: VID,
615
- expiration,
616
- signatures: vec![&env, sig],
617
- sender: Sender::None,
618
- };
585
+ let tx_auth = TransactionAuthData { vid: VID, expiration, signatures: vec![&env, sig], sender: Sender::None };
619
586
 
620
587
  let res = env.try_invoke_contract_check_auth::<DvnError>(
621
588
  &setup.contract_id,
@@ -692,12 +659,7 @@ fn test_check_auth_upgrade_no_upgrader_set() {
692
659
  let hash = dvn_client.hash_call_data(&VID, &expiration, &calls);
693
660
  let sig = setup.key_pairs[0].sign_bytes(&env, &hash);
694
661
 
695
- let tx_auth = TransactionAuthData {
696
- vid: VID,
697
- expiration,
698
- signatures: vec![&env, sig],
699
- sender: Sender::None,
700
- };
662
+ let tx_auth = TransactionAuthData { vid: VID, expiration, signatures: vec![&env, sig], sender: Sender::None };
701
663
 
702
664
  let res = env.try_invoke_contract_check_auth::<DvnError>(
703
665
  &setup.contract_id,
@@ -733,12 +695,7 @@ fn test_check_auth_upgrade_wrong_upgrader() {
733
695
  let hash = dvn_client.hash_call_data(&VID, &expiration, &calls);
734
696
  let sig = setup.key_pairs[0].sign_bytes(&env, &hash);
735
697
 
736
- let tx_auth = TransactionAuthData {
737
- vid: VID,
738
- expiration,
739
- signatures: vec![&env, sig],
740
- sender: Sender::None,
741
- };
698
+ let tx_auth = TransactionAuthData { vid: VID, expiration, signatures: vec![&env, sig], sender: Sender::None };
742
699
 
743
700
  let res = env.try_invoke_contract_check_auth::<DvnError>(
744
701
  &setup.contract_id,
@@ -784,12 +741,7 @@ fn test_check_auth_upgrade_missing_migrate() {
784
741
  let hash = dvn_client.hash_call_data(&VID, &expiration, &dummy_calls);
785
742
  let sig = setup.key_pairs[0].sign_bytes(&env, &hash);
786
743
 
787
- let tx_auth = TransactionAuthData {
788
- vid: VID,
789
- expiration,
790
- signatures: vec![&env, sig],
791
- sender: Sender::None,
792
- };
744
+ let tx_auth = TransactionAuthData { vid: VID, expiration, signatures: vec![&env, sig], sender: Sender::None };
793
745
 
794
746
  let res = env.try_invoke_contract_check_auth::<DvnError>(
795
747
  &setup.contract_id,
@@ -111,13 +111,10 @@ impl LzExecutor {
111
111
  }
112
112
 
113
113
  // Helper path: first context must be on the registered executor helper
114
- let helper_config =
115
- ExecutorStorage::executor_helper(env).ok_or(ExecutorError::UnauthorizedContext)?;
114
+ let helper_config = ExecutorStorage::executor_helper(env).ok_or(ExecutorError::UnauthorizedContext)?;
116
115
 
117
116
  // Validate first context: must be the helper address with an allowed function name
118
- if first_ctx.contract != helper_config.address
119
- || !helper_config.allowed_functions.contains(first_fn_name)
120
- {
117
+ if first_ctx.contract != helper_config.address || !helper_config.allowed_functions.contains(first_fn_name) {
121
118
  return Err(ExecutorError::UnauthorizedContext);
122
119
  }
123
120
 
@@ -128,9 +125,7 @@ impl LzExecutor {
128
125
  };
129
126
 
130
127
  let second_fn_name = &second_ctx.fn_name;
131
- if *second_fn_name != Symbol::new(env, "lz_receive")
132
- && *second_fn_name != Symbol::new(env, "lz_compose")
133
- {
128
+ if *second_fn_name != Symbol::new(env, "lz_receive") && *second_fn_name != Symbol::new(env, "lz_compose") {
134
129
  return Err(ExecutorError::UnauthorizedContext);
135
130
  }
136
131
 
@@ -1,5 +1,5 @@
1
1
  use common_macros::storage;
2
- use soroban_sdk::{contracttype, Address, Vec, Symbol};
2
+ use soroban_sdk::{contracttype, Address, Symbol, Vec};
3
3
 
4
4
  use crate::DstConfig;
5
5
 
@@ -252,7 +252,12 @@ fn test_check_auth_rejects_invalid_helper_fn_name() {
252
252
  let bad_addr: Vec<Context> = vec![
253
253
  &setup.env,
254
254
  contract_ctx(&setup.env, wrong_helper, "execute", Vec::new(&setup.env)),
255
- contract_ctx(&setup.env, Address::generate(&setup.env), "lz_receive", vec![&setup.env, 0i128.into_val(&setup.env)]),
255
+ contract_ctx(
256
+ &setup.env,
257
+ Address::generate(&setup.env),
258
+ "lz_receive",
259
+ vec![&setup.env, 0i128.into_val(&setup.env)],
260
+ ),
256
261
  ];
257
262
  assert_eq!(check_auth(&setup, &payload, sig, &bad_addr), Err(Ok(ExecutorError::UnauthorizedContext)));
258
263
  }
@@ -16,8 +16,8 @@ fn test_constructor_sets_endpoint_and_worker_config() {
16
16
 
17
17
  assert_eq!(setup.client.owner(), Some(setup.owner.clone()));
18
18
  assert_eq!(setup.client.admins(), setup.admins);
19
- assert_eq!(setup.client.is_admin(&setup.admins.get(0).unwrap()), true);
20
- assert_eq!(setup.client.is_supported_message_lib(&setup.send_lib), true);
19
+ assert!(setup.client.is_admin(&setup.admins.get(0).unwrap()));
20
+ assert!(setup.client.is_supported_message_lib(&setup.send_lib));
21
21
  assert_eq!(setup.client.message_libs(), vec![&setup.env, setup.send_lib.clone()]);
22
22
 
23
23
  assert_eq!(setup.client.endpoint(), setup.endpoint);
@@ -25,7 +25,7 @@ fn test_constructor_sets_endpoint_and_worker_config() {
25
25
  assert_eq!(setup.client.price_feed(), Some(setup.price_feed.clone()));
26
26
  assert_eq!(setup.client.worker_fee_lib(), Some(setup.worker_fee_lib.clone()));
27
27
  assert_eq!(setup.client.default_multiplier_bps(), setup.default_multiplier_bps);
28
- assert_eq!(setup.client.paused(), false);
28
+ assert!(!setup.client.paused());
29
29
  }
30
30
 
31
31
  // =============================================================================
@@ -71,12 +71,12 @@ fn test_set_admin_add_and_remove() {
71
71
  // Add new admin
72
72
  setup.mock_owner_auth("set_admin", (&new_admin, true));
73
73
  setup.client.set_admin(&new_admin, &true);
74
- assert_eq!(setup.client.is_admin(&new_admin), true);
74
+ assert!(setup.client.is_admin(&new_admin));
75
75
 
76
76
  // Remove that admin
77
77
  setup.mock_owner_auth("set_admin", (&new_admin, false));
78
78
  setup.client.set_admin(&new_admin, &false);
79
- assert_eq!(setup.client.is_admin(&new_admin), false);
79
+ assert!(!setup.client.is_admin(&new_admin));
80
80
  }
81
81
 
82
82
  #[test]
@@ -167,8 +167,7 @@ impl<'a> TestSetup<'a> {
167
167
 
168
168
  // Register executor helper config directly in storage
169
169
  let executor_helper = Address::generate(&env);
170
- let allowed_functions: Vec<Symbol> =
171
- vec![&env, Symbol::new(&env, "execute"), Symbol::new(&env, "compose")];
170
+ let allowed_functions: Vec<Symbol> = vec![&env, Symbol::new(&env, "execute"), Symbol::new(&env, "compose")];
172
171
  env.as_contract(&contract_id, || {
173
172
  crate::storage::ExecutorStorage::set_executor_helper(
174
173
  &env,
@@ -546,13 +546,13 @@ fn test_is_v1_eid() {
546
546
  let env = Env::default();
547
547
 
548
548
  // V1: eid < 30000
549
- assert_eq!(ExecutorFeeLib::is_v1_eid_for_test(&env, 0), true);
550
- assert_eq!(ExecutorFeeLib::is_v1_eid_for_test(&env, 1), true);
551
- assert_eq!(ExecutorFeeLib::is_v1_eid_for_test(&env, 29_999), true);
549
+ assert!(ExecutorFeeLib::is_v1_eid_for_test(&env, 0));
550
+ assert!(ExecutorFeeLib::is_v1_eid_for_test(&env, 1));
551
+ assert!(ExecutorFeeLib::is_v1_eid_for_test(&env, 29_999));
552
552
 
553
553
  // V2: eid >= 30000
554
- assert_eq!(ExecutorFeeLib::is_v1_eid_for_test(&env, 30_000), false);
555
- assert_eq!(ExecutorFeeLib::is_v1_eid_for_test(&env, 30_001), false);
554
+ assert!(!ExecutorFeeLib::is_v1_eid_for_test(&env, 30_000));
555
+ assert!(!ExecutorFeeLib::is_v1_eid_for_test(&env, 30_001));
556
556
  }
557
557
 
558
558
  #[test]
@@ -23,7 +23,7 @@ fn test_parse_executor_options_aggregates_values() {
23
23
  assert_eq!(agg.total_gas, 17); // 10 + 7
24
24
  assert_eq!(agg.total_value, 10); // 2 + 5 + 3
25
25
  assert_eq!(agg.num_lz_compose, 1);
26
- assert_eq!(agg.ordered, true);
26
+ assert!(agg.ordered);
27
27
  }
28
28
 
29
29
  #[test]
@@ -53,7 +53,7 @@ fn test_parse_executor_options_accumulates_multiple_lz_receive_gas_and_value() {
53
53
  assert_eq!(agg.total_gas, 30);
54
54
  assert_eq!(agg.total_value, 5);
55
55
  assert_eq!(agg.num_lz_compose, 0);
56
- assert_eq!(agg.ordered, false);
56
+ assert!(!agg.ordered);
57
57
  }
58
58
 
59
59
  #[test]
@@ -120,7 +120,6 @@ impl ExecutorHelper {
120
120
  ) {
121
121
  ExecutorClient::new(env, executor).native_drop(admin, origin, &dst_eid, oapp, params);
122
122
  }
123
-
124
123
  }
125
124
 
126
125
  #[inline]
@@ -338,4 +338,3 @@ fn test_lz_compose_alert_with_empty_reason() {
338
338
  assert!(record.is_some());
339
339
  assert_eq!(record.unwrap().reason.len(), 0);
340
340
  }
341
-