@@ -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