Skip to content

Commit

Permalink
Introduce helper function connect in tokio-boring tests
Browse files Browse the repository at this point in the history
  • Loading branch information
nox committed Aug 4, 2023
1 parent b27a6e7 commit bc4dd56
Showing 1 changed file with 22 additions and 14 deletions.
36 changes: 22 additions & 14 deletions tokio-boring/tests/client_server.rs
Original file line number Diff line number Diff line change
@@ -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};
Expand Down Expand Up @@ -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;
Expand All @@ -62,6 +66,21 @@ fn create_server() -> (
(server, addr)
}

async fn connect(
addr: SocketAddr,
setup: impl FnOnce(&mut SslConnectorBuilder) -> Result<(), ErrorStack>,
) -> Result<SslStream<TcpStream>, HandshakeError<TcpStream>> {
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();
Expand All @@ -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();

Expand All @@ -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());
};
Expand Down

0 comments on commit bc4dd56

Please sign in to comment.