@@ -50,6 +50,51 @@ mod tests {
5050 builder. connect ( "goggle.com" , s) . unwrap ( ) ;
5151 }
5252
53+ #[ test]
54+ fn connect_no_root_certs ( ) {
55+ let builder = p ! ( TlsConnector :: builder( ) . disable_built_in_roots( true ) . build( ) ) ;
56+ let s = p ! ( TcpStream :: connect( "google.com:443" ) ) ;
57+ assert ! ( builder. connect( "google.com" , s) . is_err( ) ) ;
58+ }
59+
60+ #[ test]
61+ fn server_no_root_certs ( ) {
62+ let buf = include_bytes ! ( "../test/identity.p12" ) ;
63+ let identity = p ! ( Identity :: from_pkcs12( buf, "mypass" ) ) ;
64+ let builder = p ! ( TlsAcceptor :: new( identity) ) ;
65+
66+ let listener = p ! ( TcpListener :: bind( "0.0.0.0:0" ) ) ;
67+ let port = p ! ( listener. local_addr( ) ) . port ( ) ;
68+
69+ let j = thread:: spawn ( move || {
70+ let socket = p ! ( listener. accept( ) ) . 0 ;
71+ let mut socket = p ! ( builder. accept( socket) ) ;
72+
73+ let mut buf = [ 0 ; 5 ] ;
74+ p ! ( socket. read_exact( & mut buf) ) ;
75+ assert_eq ! ( & buf, b"hello" ) ;
76+
77+ p ! ( socket. write_all( b"world" ) ) ;
78+ } ) ;
79+
80+ let root_ca = include_bytes ! ( "../test/root-ca.der" ) ;
81+ let root_ca = Certificate :: from_der ( root_ca) . unwrap ( ) ;
82+
83+ let socket = p ! ( TcpStream :: connect( ( "localhost" , port) ) ) ;
84+ let builder = p ! ( TlsConnector :: builder( )
85+ . disable_built_in_roots( true )
86+ . add_root_certificate( root_ca)
87+ . build( ) ) ;
88+ let mut socket = p ! ( builder. connect( "foobar.com" , socket) ) ;
89+
90+ p ! ( socket. write_all( b"hello" ) ) ;
91+ let mut buf = vec ! [ ] ;
92+ p ! ( socket. read_to_end( & mut buf) ) ;
93+ assert_eq ! ( buf, b"world" ) ;
94+
95+ p ! ( j. join( ) ) ;
96+ }
97+
5398 #[ test]
5499 fn server ( ) {
55100 let buf = include_bytes ! ( "../test/identity.p12" ) ;
0 commit comments