From bc4dd56c9641050c8b76ce5cf2f3ac184a83e52a Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Fri, 4 Aug 2023 13:42:09 +0200 Subject: [PATCH] Introduce helper function connect in tokio-boring tests --- tokio-boring/tests/client_server.rs | 36 ++++++++++++++++++----------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/tokio-boring/tests/client_server.rs b/tokio-boring/tests/client_server.rs index 72c5a040..00d789b6 100644 --- a/tokio-boring/tests/client_server.rs +++ b/tokio-boring/tests/client_server.rs @@ -1,4 +1,5 @@ -use boring::ssl::{SslAcceptor, SslConnector, SslFiletype, SslMethod}; +use boring::error::ErrorStack; +use boring::ssl::{SslAcceptor, SslConnector, SslConnectorBuilder, SslFiletype, SslMethod}; use futures::future; use std::future::Future; use std::net::{SocketAddr, ToSocketAddrs}; @@ -46,12 +47,15 @@ fn create_server() -> ( let server = async move { let mut acceptor = SslAcceptor::mozilla_intermediate(SslMethod::tls()).unwrap(); + acceptor .set_private_key_file("tests/key.pem", SslFiletype::PEM) .unwrap(); + acceptor .set_certificate_chain_file("tests/cert.pem") .unwrap(); + let acceptor = acceptor.build(); let stream = listener.accept().await.unwrap().0; @@ -62,6 +66,21 @@ fn create_server() -> ( (server, addr) } +async fn connect( + addr: SocketAddr, + setup: impl FnOnce(&mut SslConnectorBuilder) -> Result<(), ErrorStack>, +) -> Result, HandshakeError> { + let mut connector = SslConnector::builder(SslMethod::tls()).unwrap(); + + setup(&mut connector).unwrap(); + + let config = connector.build().configure().unwrap(); + + let stream = TcpStream::connect(&addr).await.unwrap(); + + tokio_boring::connect(config, "localhost", stream).await +} + #[tokio::test] async fn server() { let (stream, addr) = create_server(); @@ -80,12 +99,7 @@ async fn server() { }; let client = async { - let mut connector = SslConnector::builder(SslMethod::tls()).unwrap(); - connector.set_ca_file("tests/cert.pem").unwrap(); - let config = connector.build().configure().unwrap(); - - let stream = TcpStream::connect(&addr).await.unwrap(); - let mut stream = tokio_boring::connect(config, "localhost", stream) + let mut stream = connect(addr, |builder| builder.set_ca_file("tests/cert.pem")) .await .unwrap(); @@ -110,13 +124,7 @@ async fn handshake_error() { }; let client = async { - let connector = SslConnector::builder(SslMethod::tls()).unwrap(); - let config = connector.build().configure().unwrap(); - let stream = TcpStream::connect(&addr).await.unwrap(); - - let err = tokio_boring::connect(config, "localhost", stream) - .await - .unwrap_err(); + let err = connect(addr, |_| Ok(())).await.unwrap_err(); assert!(err.into_source_stream().is_some()); };