diff --git a/wasm/wasm_source/src/vp_implicit.rs b/wasm/wasm_source/src/vp_implicit.rs index 95dc6db562c..785fdd6af27 100644 --- a/wasm/wasm_source/src/vp_implicit.rs +++ b/wasm/wasm_source/src/vp_implicit.rs @@ -364,6 +364,8 @@ fn validate_pos_changes( #[cfg(test)] mod tests { + use std::panic; + // Use this as `#[test]` annotation to enable logging use namada::core::dec::Dec; use namada::core::storage::Epoch; @@ -635,8 +637,13 @@ mod tests { let verifiers: BTreeSet
= BTreeSet::default(); vp_host_env::set(vp_env); assert!( - validate_tx(&CTX, tx_data, vp_owner, keys_changed, verifiers) - .is_err() + panic::catch_unwind(|| { + validate_tx(&CTX, tx_data, vp_owner, keys_changed, verifiers) + }) + .err() + .map(|a| a.downcast_ref::().cloned().unwrap()) + .unwrap() + .contains("InvalidSectionSignature") ); } @@ -789,8 +796,13 @@ mod tests { let verifiers: BTreeSet
= BTreeSet::default(); vp_host_env::set(vp_env); assert!( - validate_tx(&CTX, tx_data, vp_owner, keys_changed, verifiers) - .is_err() + panic::catch_unwind(|| { + validate_tx(&CTX, tx_data, vp_owner, keys_changed, verifiers) + }) + .err() + .map(|a| a.downcast_ref::().cloned().unwrap()) + .unwrap() + .contains("InvalidSectionSignature") ); } @@ -977,7 +989,15 @@ mod tests { vp_env.all_touched_storage_keys(); let verifiers: BTreeSet
= BTreeSet::default(); vp_host_env::set(vp_env); - assert!(validate_tx(&CTX, tx_data, vp_owner, keys_changed, verifiers).is_err()); + assert!( + panic::catch_unwind(|| { + validate_tx(&CTX, tx_data, vp_owner, keys_changed, verifiers) + }) + .err() + .map(|a| a.downcast_ref::().cloned().unwrap()) + .unwrap() + .contains("InvalidSectionSignature") + ); } fn test_signed_arb_storage_write( @@ -1061,8 +1081,13 @@ mod tests { let verifiers: BTreeSet
= BTreeSet::default(); vp_host_env::set(vp_env); assert!( - validate_tx(&CTX, tx_data, vp_owner, keys_changed, verifiers) - .is_err() + panic::catch_unwind(|| { + validate_tx(&CTX, tx_data, vp_owner, keys_changed, verifiers) + }) + .err() + .map(|a| a.downcast_ref::().cloned().unwrap()) + .unwrap() + .contains("InvalidSectionSignature") ); } } diff --git a/wasm/wasm_source/src/vp_user.rs b/wasm/wasm_source/src/vp_user.rs index 2da43825d21..af81d0892e8 100644 --- a/wasm/wasm_source/src/vp_user.rs +++ b/wasm/wasm_source/src/vp_user.rs @@ -412,6 +412,8 @@ fn validate_pos_changes( #[cfg(test)] mod tests { + use std::panic; + use address::testing::arb_non_internal_address; use namada::core::dec::Dec; use namada::core::storage::Epoch; @@ -556,8 +558,13 @@ mod tests { let verifiers: BTreeSet
= BTreeSet::default(); vp_host_env::set(vp_env); assert!( - validate_tx(&CTX, tx_data, vp_owner, keys_changed, verifiers) - .is_err() + panic::catch_unwind(|| { + validate_tx(&CTX, tx_data, vp_owner, keys_changed, verifiers) + }) + .err() + .map(|a| a.downcast_ref::().cloned().unwrap()) + .unwrap() + .contains("InvalidSectionSignature") ); } @@ -705,8 +712,13 @@ mod tests { let verifiers: BTreeSet
= BTreeSet::default(); vp_host_env::set(vp_env); assert!( - validate_tx(&CTX, tx_data, vp_owner, keys_changed, verifiers) - .is_err() + panic::catch_unwind(|| { + validate_tx(&CTX, tx_data, vp_owner, keys_changed, verifiers) + }) + .err() + .map(|a| a.downcast_ref::().cloned().unwrap()) + .unwrap() + .contains("InvalidSectionSignature") ); } @@ -768,7 +780,7 @@ mod tests { GenesisValidator { address: validator2.clone(), tokens: stake2, - consensus_key: ck2, + consensus_key: ck2.clone(), protocol_key, commission_rate, max_commission_rate_change, @@ -938,8 +950,13 @@ mod tests { let verifiers: BTreeSet
= BTreeSet::default(); vp_host_env::set(vp_env); assert!( - validate_tx(&CTX, tx_data, vp_owner, keys_changed, verifiers) - .is_err() + panic::catch_unwind(|| { + validate_tx(&CTX, tx_data, vp_owner, keys_changed, verifiers) + }) + .err() + .map(|a| a.downcast_ref::().cloned().unwrap()) + .unwrap() + .contains("InvalidSectionSignature") ); } @@ -1029,8 +1046,13 @@ mod tests { let verifiers: BTreeSet
= BTreeSet::default(); vp_host_env::set(vp_env); assert!( - validate_tx(&CTX, tx_data, validator, keys_changed, verifiers) - .is_err() + panic::catch_unwind(|| { + validate_tx(&CTX, tx_data, validator, keys_changed, verifiers) + }) + .err() + .map(|a| a.downcast_ref::().cloned().unwrap()) + .unwrap() + .contains("InvalidSectionSignature") ); } @@ -1431,7 +1453,15 @@ mod tests { vp_env.all_touched_storage_keys(); let verifiers: BTreeSet
= BTreeSet::default(); vp_host_env::set(vp_env); - assert!(validate_tx(&CTX, tx_data, vp_owner, keys_changed, verifiers).is_err()); + assert!( + panic::catch_unwind(|| { + validate_tx(&CTX, tx_data, vp_owner, keys_changed, verifiers) + }) + .err() + .map(|a| a.downcast_ref::().cloned().unwrap()) + .unwrap() + .contains("InvalidSectionSignature") + ); } } @@ -1520,8 +1550,13 @@ mod tests { let verifiers: BTreeSet
= BTreeSet::default(); vp_host_env::set(vp_env); assert!( - validate_tx(&CTX, tx_data, vp_owner, keys_changed, verifiers) - .is_err() + panic::catch_unwind(|| { + validate_tx(&CTX, tx_data, vp_owner, keys_changed, verifiers) + }) + .err() + .map(|a| a.downcast_ref::().cloned().unwrap()) + .unwrap() + .contains("InvalidSectionSignature") ); }