Skip to content

Commit 492eab7

Browse files
More proptests for crate::uris
1 parent b70f45c commit 492eab7

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

tests/unit_uris_proptests.rs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -676,6 +676,63 @@ proptest! {
676676
assert_eq!(params.len(), 3);
677677
}
678678
}
679+
680+
#[test]
681+
fn prop_multiple_peer_verification_updates_final_disabled(
682+
host in arb_host(),
683+
path in arb_path()
684+
) {
685+
let base_uri = format!("amqps://user:pass@{}:5671{}", host, path);
686+
if let Ok(builder) = UriBuilder::new(&base_uri) {
687+
let result = builder
688+
.with_tls_peer_verification(TlsPeerVerificationMode::Enabled)
689+
.with_tls_peer_verification(TlsPeerVerificationMode::Disabled)
690+
.with_tls_peer_verification(TlsPeerVerificationMode::Enabled)
691+
.with_tls_peer_verification(TlsPeerVerificationMode::Disabled)
692+
.build()
693+
.unwrap();
694+
695+
let url = Url::parse(&result).unwrap();
696+
let params: HashMap<_, _> = url.query_pairs().into_owned().collect();
697+
assert_eq!(
698+
params.get(UriBuilder::PEER_VERIFICATION_MODE_KEY),
699+
Some(&TlsPeerVerificationMode::Disabled.as_ref().to_string())
700+
);
701+
assert!(result.contains("verify=verify_none"));
702+
703+
// Verify that the verify key appears exactly once in the query string
704+
let verify_count = result.matches("verify=").count();
705+
assert_eq!(verify_count, 1, "verify parameter should appear exactly once in query string");
706+
}
707+
}
708+
709+
#[test]
710+
fn prop_multiple_peer_verification_updates_final_enabled(
711+
host in arb_host(),
712+
path in arb_path()
713+
) {
714+
let base_uri = format!("amqps://user:pass@{}:5671{}", host, path);
715+
if let Ok(builder) = UriBuilder::new(&base_uri) {
716+
let result = builder
717+
.with_tls_peer_verification(TlsPeerVerificationMode::Disabled)
718+
.with_tls_peer_verification(TlsPeerVerificationMode::Enabled)
719+
.with_tls_peer_verification(TlsPeerVerificationMode::Disabled)
720+
.with_tls_peer_verification(TlsPeerVerificationMode::Enabled)
721+
.build()
722+
.unwrap();
723+
724+
let url = Url::parse(&result).unwrap();
725+
let params: HashMap<_, _> = url.query_pairs().into_owned().collect();
726+
assert_eq!(
727+
params.get(UriBuilder::PEER_VERIFICATION_MODE_KEY),
728+
Some(&TlsPeerVerificationMode::Enabled.as_ref().to_string())
729+
);
730+
assert!(result.contains("verify=verify_peer"));
731+
732+
let verify_count = result.matches("verify=").count();
733+
assert_eq!(verify_count, 1, "verify parameter should appear exactly once in query string");
734+
}
735+
}
679736
}
680737

681738
#[test]

0 commit comments

Comments
 (0)