| use std::io::Write; |
| use std::process::{Command, Stdio}; |
| use std::thread; |
| use std::time; |
| |
| #[test] |
| fn client() { |
| let rc = Command::new("target/debug/examples/client") |
| .arg("https://google.com") |
| .output() |
| .expect("cannot run client example"); |
| |
| assert!(rc.status.success()); |
| } |
| |
| #[test] |
| fn server() { |
| let mut srv = Command::new("target/debug/examples/server") |
| .arg("1337") |
| .spawn() |
| .expect("cannot run server example"); |
| |
| thread::sleep(time::Duration::from_secs(1)); |
| |
| let mut cli = Command::new("openssl") |
| .arg("s_client") |
| .arg("-ign_eof") |
| .arg("-connect") |
| .arg("localhost:1337") |
| .stdin(Stdio::piped()) |
| .spawn() |
| .expect("cannot run openssl"); |
| |
| cli.stdin |
| .as_mut() |
| .unwrap() |
| .write(b"GET / HTTP/1.0\r\n\r\n") |
| .unwrap(); |
| |
| let rc = cli.wait().expect("openssl failed"); |
| |
| assert!(rc.success()); |
| |
| srv.kill().unwrap(); |
| } |
| |
| #[test] |
| fn custom_ca_store() { |
| let mut srv = Command::new("target/debug/examples/server") |
| .arg("1338") |
| .spawn() |
| .expect("cannot run server example"); |
| |
| thread::sleep(time::Duration::from_secs(1)); |
| |
| let rc = Command::new("target/debug/examples/client") |
| .arg("https://localhost:1338") |
| .arg("examples/sample.pem") |
| .output() |
| .expect("cannot run client example"); |
| |
| srv.kill().unwrap(); |
| |
| if !rc.status.success() { |
| assert_eq!(String::from_utf8_lossy(&rc.stdout), ""); |
| } |
| } |