Skip to content

Commit 073247c

Browse files
committed
test: add integration tests for connect_raw_tokio with and without TLS
1 parent d9725f3 commit 073247c

2 files changed

Lines changed: 106 additions & 1 deletion

File tree

sqlx-core/src/net/socket/async_rw_adapter.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,6 @@ mod tests {
370370
assert_eq!(&received[..], &data[..]);
371371
});
372372
}
373-
374373
}
375374

376375
#[cfg(feature = "_rt-async-io")]

tests/postgres/postgres.rs

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2218,3 +2218,109 @@ async fn it_can_recover_from_copy_in_invalid_params() -> anyhow::Result<()> {
22182218
)
22192219
.await
22202220
}
2221+
2222+
#[cfg(feature = "_rt-tokio")]
2223+
#[sqlx_macros::test]
2224+
async fn it_connects_raw_tokio() -> anyhow::Result<()> {
2225+
setup_if_needed();
2226+
2227+
let db_url = env::var("DATABASE_URL")?;
2228+
let options: PgConnectOptions = db_url.parse()?;
2229+
2230+
let stream =
2231+
tokio::net::TcpStream::connect(format!("{}:{}", options.get_host(), options.get_port()))
2232+
.await?;
2233+
2234+
let mut conn = PgConnection::connect_raw_tokio(stream, &options).await?;
2235+
conn.ping().await?;
2236+
2237+
let value: (i32,) = sqlx::query_as("SELECT 1 + 1").fetch_one(&mut conn).await?;
2238+
assert_eq!(value.0, 2);
2239+
2240+
Ok(())
2241+
}
2242+
2243+
#[cfg(all(
2244+
feature = "_rt-tokio",
2245+
any(feature = "_tls-native-tls", feature = "_tls-rustls")
2246+
))]
2247+
#[sqlx_macros::test]
2248+
async fn it_connects_raw_tokio_with_tls() -> anyhow::Result<()> {
2249+
setup_if_needed();
2250+
2251+
let db_url = env::var("DATABASE_URL")?;
2252+
let options: PgConnectOptions = db_url
2253+
.parse::<PgConnectOptions>()?
2254+
.ssl_mode(sqlx::postgres::PgSslMode::Require);
2255+
2256+
let stream =
2257+
tokio::net::TcpStream::connect(format!("{}:{}", options.get_host(), options.get_port()))
2258+
.await?;
2259+
2260+
let mut conn = PgConnection::connect_raw_tokio(stream, &options).await?;
2261+
conn.ping().await?;
2262+
2263+
// Verify TLS is actually in use by checking the connection's SSL status
2264+
let ssl: bool = sqlx::query_scalar("SELECT ssl FROM pg_stat_ssl WHERE pid = pg_backend_pid()")
2265+
.fetch_one(&mut conn)
2266+
.await?;
2267+
assert!(ssl, "expected connection to be using TLS");
2268+
2269+
Ok(())
2270+
}
2271+
2272+
#[cfg(feature = "_rt-async-std")]
2273+
#[sqlx_macros::test]
2274+
async fn it_connects_raw_futures() -> anyhow::Result<()> {
2275+
setup_if_needed();
2276+
2277+
let db_url = env::var("DATABASE_URL")?;
2278+
let options: PgConnectOptions = db_url.parse()?;
2279+
2280+
let stream = async_std::net::TcpStream::connect(format!(
2281+
"{}:{}",
2282+
options.get_host(),
2283+
options.get_port()
2284+
))
2285+
.await?;
2286+
2287+
let mut conn = PgConnection::connect_raw_futures(stream, &options).await?;
2288+
conn.ping().await?;
2289+
2290+
let value: (i32,) = sqlx::query_as("SELECT 1 + 1").fetch_one(&mut conn).await?;
2291+
assert_eq!(value.0, 2);
2292+
2293+
Ok(())
2294+
}
2295+
2296+
#[cfg(all(
2297+
feature = "_rt-async-std",
2298+
any(feature = "_tls-native-tls", feature = "_tls-rustls")
2299+
))]
2300+
#[sqlx_macros::test]
2301+
async fn it_connects_raw_futures_with_tls() -> anyhow::Result<()> {
2302+
setup_if_needed();
2303+
2304+
let db_url = env::var("DATABASE_URL")?;
2305+
let options: PgConnectOptions = db_url
2306+
.parse::<PgConnectOptions>()?
2307+
.ssl_mode(sqlx::postgres::PgSslMode::Require);
2308+
2309+
let stream = async_std::net::TcpStream::connect(format!(
2310+
"{}:{}",
2311+
options.get_host(),
2312+
options.get_port()
2313+
))
2314+
.await?;
2315+
2316+
let mut conn = PgConnection::connect_raw_futures(stream, &options).await?;
2317+
conn.ping().await?;
2318+
2319+
// Verify TLS is actually in use by checking the connection's SSL status
2320+
let ssl: bool = sqlx::query_scalar("SELECT ssl FROM pg_stat_ssl WHERE pid = pg_backend_pid()")
2321+
.fetch_one(&mut conn)
2322+
.await?;
2323+
assert!(ssl, "expected connection to be using TLS");
2324+
2325+
Ok(())
2326+
}

0 commit comments

Comments
 (0)