rust-postgres/tokio-postgres-openssl/src/test.rs
2018-06-26 21:00:26 -07:00

61 lines
1.9 KiB
Rust

use futures::{Future, Stream};
use openssl::ssl::{SslConnector, SslMethod};
use tokio::runtime::current_thread::Runtime;
use tokio_postgres::{self, TlsMode};
use TlsConnector;
fn smoke_test(url: &str, tls: TlsMode) {
let mut runtime = Runtime::new().unwrap();
let handshake = tokio_postgres::connect(url.parse().unwrap(), tls);
let (mut client, connection) = runtime.block_on(handshake).unwrap();
let connection = connection.map_err(|e| panic!("{}", e));
runtime.handle().spawn(connection).unwrap();
let prepare = client.prepare("SELECT 1::INT4");
let statement = runtime.block_on(prepare).unwrap();
let select = client.query(&statement, &[]).collect().map(|rows| {
assert_eq!(rows.len(), 1);
assert_eq!(rows[0].get::<_, i32>(0), 1);
});
runtime.block_on(select).unwrap();
drop(statement);
drop(client);
runtime.run().unwrap();
}
#[test]
fn require() {
let mut builder = SslConnector::builder(SslMethod::tls()).unwrap();
builder.set_ca_file("../test/server.crt").unwrap();
let connector = TlsConnector::with_connector(builder.build());
smoke_test(
"postgres://ssl_user@localhost:5433/postgres",
TlsMode::Require(Box::new(connector)),
);
}
#[test]
fn prefer() {
let mut builder = SslConnector::builder(SslMethod::tls()).unwrap();
builder.set_ca_file("../test/server.crt").unwrap();
let connector = TlsConnector::with_connector(builder.build());
smoke_test(
"postgres://ssl_user@localhost:5433/postgres",
TlsMode::Prefer(Box::new(connector)),
);
}
#[test]
fn scram_user() {
let mut builder = SslConnector::builder(SslMethod::tls()).unwrap();
builder.set_ca_file("../test/server.crt").unwrap();
let connector = TlsConnector::with_connector(builder.build());
smoke_test(
"postgres://scram_user:password@localhost:5433/postgres",
TlsMode::Require(Box::new(connector)),
);
}