Skip to content

Commit e720d86

Browse files
authored
Merge pull request #585 from EmeditWeb/Protocol_safety_#569
Protocol Safety: Enforce absolute minimum multi-sign quorum (3 validators) for regional assets
2 parents 702794c + 9935092 commit e720d86

1 file changed

Lines changed: 60 additions & 0 deletions

File tree

src/validation.rs

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -755,3 +755,63 @@ mod bundle_processing_tests {
755755
);
756756
}
757757
}
758+
759+
#[cfg(test)]
760+
mod consensus_depth_tests {
761+
use super::*;
762+
use soroban_sdk::testutils::Address as _;
763+
764+
fn setup_env() -> Env {
765+
Env::default()
766+
}
767+
768+
fn populate_cache(env: &Env, count: u32) {
769+
let mut participants: Vec<Address> = Vec::new(env);
770+
for _ in 0..count {
771+
let node = Address::generate(env);
772+
participants.push_back(node);
773+
}
774+
env.storage()
775+
.temporary()
776+
.set(&CONSENSUS_CACHE_KEY, &participants);
777+
}
778+
779+
#[test]
780+
fn test_empty_cache_rejected() {
781+
let env = setup_env();
782+
let result = check_consensus_depth(&env);
783+
assert_eq!(result, Err(ContractError::IncompleteQuorum));
784+
}
785+
786+
#[test]
787+
fn test_one_validator_rejected() {
788+
let env = setup_env();
789+
populate_cache(&env, 1);
790+
let result = check_consensus_depth(&env);
791+
assert_eq!(result, Err(ContractError::IncompleteQuorum));
792+
}
793+
794+
#[test]
795+
fn test_two_validators_rejected() {
796+
let env = setup_env();
797+
populate_cache(&env, 2);
798+
let result = check_consensus_depth(&env);
799+
assert_eq!(result, Err(ContractError::IncompleteQuorum));
800+
}
801+
802+
#[test]
803+
fn test_three_validators_accepted() {
804+
let env = setup_env();
805+
populate_cache(&env, 3);
806+
let result = check_consensus_depth(&env);
807+
assert!(result.is_ok());
808+
}
809+
810+
#[test]
811+
fn test_many_validators_accepted() {
812+
let env = setup_env();
813+
populate_cache(&env, 10);
814+
let result = check_consensus_depth(&env);
815+
assert!(result.is_ok());
816+
}
817+
}

0 commit comments

Comments
 (0)