Skip to content

Commit 6fdce0f

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

2 files changed

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

0 commit comments

Comments
 (0)