@@ -488,3 +488,78 @@ mod unix_socket_tests {
488488 connect_stderr_thread. join ( ) . ok ( ) ;
489489 }
490490}
491+
492+ #[ test]
493+ #[ ignore = "flaky" ]
494+ fn connect_listen_relay_disabled ( ) {
495+ let listen_to_connect = b"hello from listen" ;
496+ let connect_to_listen = b"hello from connect" ;
497+ let mut listen = duct:: cmd ( dumbpipe_bin ( ) , [ "listen" , "--relay" , "disabled" ] )
498+ . env_remove ( "RUST_LOG" )
499+ . stdin_bytes ( listen_to_connect)
500+ . stderr_to_stdout ( )
501+ . reader ( )
502+ . unwrap ( ) ;
503+ let header = read_ascii_lines ( 3 , & mut listen) . unwrap ( ) ;
504+ let header = String :: from_utf8 ( header) . unwrap ( ) ;
505+ let ticket = header. split_ascii_whitespace ( ) . last ( ) . unwrap ( ) ;
506+ let ticket = NodeTicket :: from_str ( ticket) . unwrap ( ) ;
507+
508+ let connect = duct:: cmd ( dumbpipe_bin ( ) , [ "connect" , & ticket. to_string ( ) , "--relay" , "disabled" ] )
509+ . env_remove ( "RUST_LOG" )
510+ . stdin_bytes ( connect_to_listen)
511+ . stderr_null ( )
512+ . stdout_capture ( )
513+ . run ( )
514+ . unwrap ( ) ;
515+
516+ assert ! ( connect. status. success( ) ) ;
517+ assert_eq ! ( & connect. stdout, listen_to_connect) ;
518+
519+ let mut listen_stdout = Vec :: new ( ) ;
520+ listen. read_to_end ( & mut listen_stdout) . unwrap ( ) ;
521+ assert_eq ! ( & listen_stdout, connect_to_listen) ;
522+ }
523+
524+ #[ test]
525+ #[ ignore = "flaky" ]
526+ fn connect_listen_relay_default ( ) {
527+ let listen_to_connect = b"hello from listen" ;
528+ let connect_to_listen = b"hello from connect" ;
529+ let mut listen = duct:: cmd ( dumbpipe_bin ( ) , [ "listen" , "--relay" , "default" ] )
530+ . env_remove ( "RUST_LOG" )
531+ . stdin_bytes ( listen_to_connect)
532+ . stderr_to_stdout ( )
533+ . reader ( )
534+ . unwrap ( ) ;
535+ let header = read_ascii_lines ( 3 , & mut listen) . unwrap ( ) ;
536+ let header = String :: from_utf8 ( header) . unwrap ( ) ;
537+ let ticket = header. split_ascii_whitespace ( ) . last ( ) . unwrap ( ) ;
538+ let ticket = NodeTicket :: from_str ( ticket) . unwrap ( ) ;
539+
540+ let connect = duct:: cmd ( dumbpipe_bin ( ) , [ "connect" , & ticket. to_string ( ) , "--relay" , "default" ] )
541+ . env_remove ( "RUST_LOG" )
542+ . stdin_bytes ( connect_to_listen)
543+ . stderr_null ( )
544+ . stdout_capture ( )
545+ . run ( )
546+ . unwrap ( ) ;
547+
548+ assert ! ( connect. status. success( ) ) ;
549+ assert_eq ! ( & connect. stdout, listen_to_connect) ;
550+
551+ let mut listen_stdout = Vec :: new ( ) ;
552+ listen. read_to_end ( & mut listen_stdout) . unwrap ( ) ;
553+ assert_eq ! ( & listen_stdout, connect_to_listen) ;
554+ }
555+
556+ #[ test]
557+ fn relay_option_invalid ( ) {
558+ let output = duct:: cmd ( dumbpipe_bin ( ) , [ "listen" , "--relay" , "invalid-relay-url" ] )
559+ . env_remove ( "RUST_LOG" )
560+ . stderr_capture ( )
561+ . stdout_capture ( )
562+ . run ( ) ;
563+
564+ assert ! ( output. is_err( ) || !output. unwrap( ) . status. success( ) ) ;
565+ }
0 commit comments